diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 042401b..b469245 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,12 +26,11 @@ jobs: - uses: ./.github/actions/setup-nix with: cachixToken: ${{ secrets.CACHIX_AUTH_TOKEN }} - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - name: Build Tests + run: nix build .#cargo-tests -L -vv - name: Cargo Tests - run: nix develop --print-build-logs -v --command cargo test + run: | + nix develop \ + --print-build-logs \ + -v \ + --command result/bin/run-tests diff --git a/flake.nix b/flake.nix index d862de3..14f5999 100644 --- a/flake.nix +++ b/flake.nix @@ -33,6 +33,7 @@ ./nix/hooks.nix # pre-commit hooks ./nix/utils.nix # utility functions ./nix/shells.nix + ./nix/tests.nix ./wire/cli ./wire/key_agent ./doc @@ -52,7 +53,7 @@ inherit (self.packages.x86_64-linux) docs; } // lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: { - inherit (self.packages.${system}) wire wire-small; + inherit (self.packages.${system}) wire wire-small cargo-tests; }); tests = lib.filterAttrs (n: _: (lib.hasPrefix "vm" n)) self.checks.x86_64-linux; diff --git a/nix/tests.nix b/nix/tests.nix new file mode 100644 index 0000000..86c6d30 --- /dev/null +++ b/nix/tests.nix @@ -0,0 +1,38 @@ +{ + perSystem = + { + craneLib, + pkgs, + commonArgs, + ... + }: + let + tests = craneLib.buildPackage ( + { + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + doCheck = false; + + doNotPostBuildInstallCargoBinaries = true; + + buildPhase = '' + cargo test --no-run + ''; + + installPhaseCommand = '' + mkdir -p $out + cp $(ls target/debug/deps/{wire,lib,key_agent}-* | grep -v "\.d") $out + ''; + } + // commonArgs + ); + in + { + packages.cargo-tests = pkgs.writeShellScriptBin "run-tests" '' + set -e + for item in "${tests}"/*; do + echo "running $item" + "$item" + done + ''; + }; +}