feat: detect project from script location, not just CWD #8
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main, develop ] | |
| workflow_dispatch: | |
| jobs: | |
| test: | |
| name: Test Python ${{ matrix.python-version }} on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ['3.9', '3.10', '3.11', '3.12'] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Display Python version | |
| run: python --version | |
| - name: Install uv (Unix) | |
| if: runner.os != 'Windows' | |
| run: curl -LsSf https://astral.sh/uv/install.sh | sh | |
| - name: Install uv (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| irm https://astral.sh/uv/install.ps1 | iex | |
| echo "$env:USERPROFILE\.cargo\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| shell: pwsh | |
| - name: Verify uv installation | |
| run: uv --version | |
| - name: Install build dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install build hatch-autorun pytest | |
| env: | |
| AUTO_UV_DISABLE: "1" | |
| - name: Build package | |
| run: python -m build | |
| env: | |
| AUTO_UV_DISABLE: "1" | |
| - name: Install package | |
| run: pip install dist/*.whl | |
| shell: bash | |
| env: | |
| AUTO_UV_DISABLE: "1" | |
| - name: Verify installation | |
| run: python -c "import auto_uv; print('auto-uv imported successfully')" | |
| env: | |
| AUTO_UV_DISABLE: "1" | |
| - name: Run tests | |
| run: python tests/test_auto_uv.py | |
| env: | |
| AUTO_UV_DISABLE: "1" | |
| - name: Test example script | |
| run: python example.py | |
| env: | |
| AUTO_UV_DISABLE: "1" | |
| - name: Test with AUTO_UV_DISABLE | |
| run: python example.py | |
| env: | |
| AUTO_UV_DISABLE: "1" | |
| - name: Upload build artifacts | |
| if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist-packages | |
| path: dist/ | |
| retention-days: 7 | |
| lint: | |
| name: Lint and Format Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install linting tools | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install ruff black mypy | |
| - name: Run ruff | |
| run: ruff check src/ tests/ example.py | |
| continue-on-error: true | |
| - name: Check formatting with black | |
| run: black --check src/ tests/ example.py | |
| continue-on-error: true | |
| - name: Run mypy | |
| run: mypy src/ | |
| continue-on-error: true | |
| coverage: | |
| name: Code Coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install uv | |
| run: curl -LsSf https://astral.sh/uv/install.sh | sh | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install build hatch-autorun pytest pytest-cov | |
| - name: Build and install package | |
| run: | | |
| python -m build | |
| pip install dist/*.whl | |
| - name: Run tests with coverage | |
| run: pytest tests/ --cov=src --cov-report=xml --cov-report=term | |
| continue-on-error: true | |
| - name: Upload coverage reports | |
| uses: codecov/codecov-action@v4 | |
| if: always() | |
| with: | |
| file: ./coverage.xml | |
| flags: unittests | |
| name: codecov-umbrella | |
| continue-on-error: true | |