Skip to content

feat: initialize Task 3 - Enhanced Semantic Search Capabilities #114

feat: initialize Task 3 - Enhanced Semantic Search Capabilities

feat: initialize Task 3 - Enhanced Semantic Search Capabilities #114

Workflow file for this run

name: Test Matrix
on:
push:
branches: [main, development]
paths-ignore:
- '**.md'
- '**/docs/**'
pull_request:
branches: [main, development]
paths-ignore:
- '**.md'
- '**/docs/**'
workflow_dispatch:
jobs:
test-matrix:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
test-type: [unit, integration, e2e]
env:
ENVIRONMENT: ci
PYTHONUNBUFFERED: 1
PIXI_ENV: ci # Kept: This job explicitly targets the 'ci' environment for its primary installation.
steps:
- uses: actions/checkout@v4
- name: Setup pixi with cache fallback
id: setup-pixi
uses: prefix-dev/setup-pixi@v0.8.10
with:
pixi-version: latest
cache: true
manifest-path: pyproject.toml
- name: Secondary cache fallback when pixi cache fails
if: steps.setup-pixi.outputs.cache-hit != 'true'
uses: actions/cache@v4
with:
path: |
~/.pixi/cache
~/.cache/pip
.pixi
key: pixi-fallback-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}
restore-keys: |
pixi-fallback-${{ runner.os }}-
- name: Verify pixi installation
run: |
echo "Verifying pixi setup completed successfully..."
pixi info
- name: Verify pixi environment
run: |
echo "Verifying pixi ci environment..."
pixi run --environment ci python --version
pixi run --environment ci pip --version
pixi run --environment ci pytest --version
- name: Install project in editable mode
run: |
pixi run --environment ci pip install -e .
- name: Select tests by marker
id: select-tests
shell: bash
run: |
if [[ "${{ matrix.test-type }}" == "unit" ]]; then
echo "PYTEST_MARK=unit" >> $GITHUB_ENV
elif [[ "${{ matrix.test-type }}" == "integration" ]]; then
echo "PYTEST_MARK=integration" >> $GITHUB_ENV
elif [[ "${{ matrix.test-type }}" == "e2e" ]]; then
echo "PYTEST_MARK=e2e" >> $GITHUB_ENV
fi
- name: Run selected tests using pixi
run: |
echo "Running tests with pixi in ci environment..."
if [[ -n "$PYTEST_MARK" ]]; then
pixi run --environment ci pytest tests/ -m "$PYTEST_MARK" --json-report --json-report-file=pytest-${{ matrix.test-type }}.json
else
pixi run --environment ci pytest tests/ --json-report --json-report-file=pytest-${{ matrix.test-type }}.json
fi
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.python-version }}-${{ matrix.test-type }}
path: pytest-${{ matrix.test-type }}.json
aggregate-results:
needs: test-matrix
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
path: ./artifacts
- name: Aggregate and compare test results
shell: bash
run: |
find ./artifacts -name "*.json" -exec cat {} + > all-results.json
# Optionally, add custom aggregation/comparison logic here
- name: Upload aggregated results
uses: actions/upload-artifact@v4
with:
name: aggregated-test-results
path: all-results.json
- name: Notify Results (GitHub API)
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: |
curl -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${{ github.repository }}/statuses/${{ github.sha }} \
-d '{"state": "success", "context": "Test Matrix", "description": "Matrix tests complete."}'