name: Run Pytest on: pull_request: branches: - main paths: - api/** - docker/** - .github/workflows/api-tests.yml concurrency: group: api-tests-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: test: name: API Tests runs-on: ubuntu-latest strategy: matrix: python-version: - "3.10" - "3.11" - "3.12" steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Poetry uses: abatilo/actions-poetry@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: poetry cache-dependency-path: api/poetry.lock - name: Check Poetry lockfile run: | poetry check -C api --lock poetry show -C api - name: Install dependencies run: poetry install -C api --with dev - name: Check dependencies in pyproject.toml run: poetry run -C api bash dev/pytest/pytest_artifacts.sh - name: Run Unit tests run: poetry run -C api bash dev/pytest/pytest_unit_tests.sh - name: Run ModelRuntime run: poetry run -C api bash dev/pytest/pytest_model_runtime.sh - name: Run Tool run: poetry run -C api bash dev/pytest/pytest_tools.sh - name: Set up dotenvs run: | cp docker/.env.example docker/.env cp docker/middleware.env.example docker/middleware.env - name: Expose Service Ports run: sh .github/workflows/expose_service_ports.sh - name: Set up Sandbox uses: hoverkraft-tech/compose-action@v2.0.2 with: compose-file: | docker/docker-compose.middleware.yaml services: | sandbox ssrf_proxy - name: Run Workflow run: poetry run -C api bash dev/pytest/pytest_workflow.sh