name: "test-cache" on: pull_request: push: branches: - main concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test-setup-cache: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, macos-14] steps: - uses: actions/checkout@v4 - name: Setup with cache uses: ./ with: enable-cache: true cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache - run: uv sync working-directory: __tests__/fixtures/uv-project test-restore-cache: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, macos-14] needs: test-setup-cache steps: - uses: actions/checkout@v4 - name: Restore with cache id: restore uses: ./ with: enable-cache: true cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-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-setup-cache-dependency-glob: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - 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@v4 - 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-local: runs-on: selfhosted-ubuntu-arm64 steps: - uses: actions/checkout@v4 - 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@v4 - 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@v4 - 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@v4 - 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 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