apiVersion: tekton.dev/v1 kind: Task metadata: name: pytest spec: params: - name: subdirectory type: string description: Subdirectory within the workspace where the tests are located default: "" - name: pythonImageName type: string description: Python version to use (e.g., 3.9, 3.11) default: "python:3.11-slim" workspaces: - name: source description: Workspace containing the cloned Git repository from git-clone-checkout steps: - name: install-dependencies image: $(params.pythonImageName) workingDir: /workspace/source/$(params.subdirectory) env: - name: HOME value: /workspace/shared/$(params.subdirectory)_HOME script: | #!/usr/bin/env bash set -e ls -al $HOME echo "HOME=$HOME" echo "๐Ÿ”ง Installing dependencies..." pip install --upgrade pip --root-user-action=ignore pip install pytest --root-user-action=ignore if [ -f pyproject.toml ]; then echo "[INFO] Poetry project detected" pip install poetry --root-user-action=ignore echo "[INFO] Using pre-configured poetry settings from $HOME/.config/pypoetry/" poetry lock --no-cache poetry install elif [ -f requirements.txt ]; then echo "[INFO] Using pip to install dependencies" pip install -r requirements.txt --root-user-action=ignore else echo "[WARN] No dependency file found" fi echo "๐Ÿงช Running tests..." set +e if [ -f pyproject.toml ]; then poetry run pytest --verbose --junitxml=/workspace/source/pytest-results.xml else pytest --verbose --junitxml=/workspace/source/pytest-results.xml fi TEST_EXIT_CODE=$? set -e echo "๐Ÿ“„ Checking test results..." if [ -f /workspace/source/pytest-results.xml ]; then echo "Test results:" cat /workspace/source/pytest-results.xml else echo "โŒ No test results found" exit 1 fi exit $TEST_EXIT_CODE