name: Test Suite on: push: branches: - "main" - "develop" pull_request: branches: - "main" workflow_dispatch: jobs: test: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.11"] steps: - name: Checkout code uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "latest" - name: Set up Python ${{ matrix.python-version }} run: uv python install ${{ matrix.python-version }} - name: Install dependencies run: uv sync --extra test - name: Run tests with pytest run: uv run pytest tests/ -v --tb=short - name: Run tests with coverage run: uv run pytest tests/ --cov=src/embeddingbuddy --cov-report=term-missing --cov-report=xml - name: Upload coverage reports uses: codecov/codecov-action@v4 if: matrix.python-version == '3.11' with: file: ./coverage.xml fail_ci_if_error: false lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "latest" - name: Set up Python run: uv python install 3.11 - name: Install dependencies run: uv sync --extra lint - name: Run ruff linter run: uv run ruff check src/ tests/ - name: Run ruff formatter check run: uv run ruff format --check src/ tests/ # TODO fix this it throws errors # - name: Run mypy type checker # run: uv run mypy src/embeddingbuddy/ --ignore-missing-imports build: runs-on: ubuntu-latest needs: [test, lint] steps: - name: Checkout code uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "latest" - name: Set up Python run: uv python install 3.11 - name: Install dependencies run: uv sync - name: Build package run: uv build - name: Test installation run: | uv run python -c "from src.embeddingbuddy.app import create_app; app = create_app(); print('✅ Package builds and imports successfully')" - name: Upload build artifacts uses: actions/upload-artifact@v3 with: name: dist-files path: dist/