diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-06-26 19:43:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-26 19:43:39 +0200 |
| commit | 3d6476c9021519995239ec93bbb11f0dce6c60a0 (patch) | |
| tree | 381edc199f4348e4bb42863b55d47a01e4f550ab /.github/workflows | |
| parent | 9a67e0421b49596060719566996ee4ca81ae8843 (diff) | |
Core: Add a test suite (#9297)
Adds a test suite for testing hyprland's features with a runtime tester
---------
Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/nix-build.yml | 8 | ||||
| -rw-r--r-- | .github/workflows/nix-ci.yml | 6 | ||||
| -rw-r--r-- | .github/workflows/nix-test.yml | 59 |
3 files changed, 69 insertions, 4 deletions
diff --git a/.github/workflows/nix-build.yml b/.github/workflows/nix-build.yml index 55ac485e..7c61d775 100644 --- a/.github/workflows/nix-build.yml +++ b/.github/workflows/nix-build.yml @@ -29,17 +29,17 @@ jobs: uses: nix-community/cache-nix-action@v6 with: # restore and save a cache using this key - primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} + primary-key: nix-${{ runner.os }} # if there's no cache hit, restore a cache by this prefix - restore-prefixes-first-match: nix-${{ runner.os }}- + restore-prefixes-first-match: nix-${{ runner.os }} # collect garbage until the Nix store size (in bytes) is at most this number # before trying to save a new cache # 1G = 1073741824 - gc-max-store-size-linux: 1G + gc-max-store-size-linux: 5G # do purge caches purge: true # purge all versions of the cache - purge-prefixes: nix-${{ runner.os }}- + purge-prefixes: nix-${{ runner.os }} # created more than this number of seconds ago purge-created: 0 # or, last accessed more than this number of seconds ago diff --git a/.github/workflows/nix-ci.yml b/.github/workflows/nix-ci.yml index 75c19790..cf5430ac 100644 --- a/.github/workflows/nix-ci.yml +++ b/.github/workflows/nix-ci.yml @@ -12,3 +12,9 @@ jobs: if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork) uses: ./.github/workflows/nix-build.yml secrets: inherit + + test: + if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork) + needs: build + uses: ./.github/workflows/nix-test.yml + secrets: inherit diff --git a/.github/workflows/nix-test.yml b/.github/workflows/nix-test.yml new file mode 100644 index 00000000..a4e32b56 --- /dev/null +++ b/.github/workflows/nix-test.yml @@ -0,0 +1,59 @@ +name: Nix (Test) + +on: + workflow_call: + secrets: + CACHIX_AUTH_TOKEN: + required: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Install Nix + uses: nixbuild/nix-quick-install-action@v31 + with: + nix_conf: | + keep-env-derivations = true + keep-outputs = true + + - name: Restore and save Nix store + uses: nix-community/cache-nix-action@v6 + with: + # restore and save a cache using this key + primary-key: nix-${{ runner.os }} + # if there's no cache hit, restore a cache by this prefix + restore-prefixes-first-match: nix-${{ runner.os }} + # collect garbage until the Nix store size (in bytes) is at most this number + # before trying to save a new cache + # 1G = 1073741824 + gc-max-store-size-linux: 5G + # do purge caches + purge: true + # purge all versions of the cache + purge-prefixes: nix-${{ runner.os }} + # created more than this number of seconds ago + purge-created: 0 + # or, last accessed more than this number of seconds ago + # relative to the start of the `Post Restore and save Nix store` phase + purge-last-accessed: 0 + # except any version with the key that is the same as the `primary-key` + purge-primary-key: never + + - uses: cachix/cachix-action@v15 + with: + name: hyprland + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" + + - name: Run test VM + run: nix build 'github:hyprwm/Hyprland?ref=${{ github.ref }}#checks.x86_64-linux.tests' -L --extra-substituters "https://hyprland.cachix.org" + + - name: Check exit status + run: grep 0 result/exit_status + + - name: Upload artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: logs + path: result |
