diff options
Diffstat (limited to 'cmd/hakurei/testsuite/default.nix')
| -rw-r--r-- | cmd/hakurei/testsuite/default.nix | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/cmd/hakurei/testsuite/default.nix b/cmd/hakurei/testsuite/default.nix new file mode 100644 index 00000000..81daa0a2 --- /dev/null +++ b/cmd/hakurei/testsuite/default.nix @@ -0,0 +1,81 @@ +{ + lib, + testers, + buildFHSEnv, + writeShellScriptBin, + + system, + self, + withRace ? false, +}: + +testers.nixosTest { + name = "hakurei" + (if withRace then "-race" else ""); + nodes.machine = + { options, pkgs, ... }: + let + fhs = + let + hakurei = options.environment.hakurei.package.default; + in + buildFHSEnv { + pname = "hakurei-fhs"; + inherit (hakurei) version; + targetPkgs = _: hakurei.targetPkgs; + extraOutputsToInstall = [ "dev" ]; + profile = '' + export PKG_CONFIG_PATH="/usr/share/pkgconfig:$PKG_CONFIG_PATH" + ''; + }; + in + { + environment.systemPackages = [ + # For go tests: + (writeShellScriptBin "hakurei-test" '' + # Assert hst CGO_ENABLED=0: ${ + with pkgs; + runCommand "hakurei-hst-cgo" { nativeBuildInputs = [ self.packages.${system}.hakurei.go ]; } '' + cp -r ${options.environment.hakurei.package.default.src} "$out" + chmod -R +w "$out" + cp ${writeText "hst_cgo_test.go" ''package hakurei_test;import("testing";"hakurei.app/hst");func TestTemplate(t *testing.T){hst.Template()}''} "$out/hst_cgo_test.go" + (cd "$out" && HOME="$(mktemp -d)" CGO_ENABLED=0 go test .) + '' + } + + cd ${self.packages.${system}.hakurei.src} + ${fhs}/bin/hakurei-fhs -c \ + 'CC="clang -O3 -Werror" go test --tags=noskip ${if withRace then "-race" else "-count 16"} ./...' \ + &> /tmp/hakurei-test.log && \ + touch /tmp/hakurei-test-ok + touch /tmp/hakurei-test-done + '') + ]; + + # Run with Go race detector: + environment.hakurei = lib.mkIf withRace rec { + # race detector does not support static linking + package = (pkgs.callPackage ./package.nix { }).overrideAttrs (previousAttrs: { + env = previousAttrs.env // { + GOFLAGS = previousAttrs.env.GOFLAGS + " -race"; + }; + }); + hsuPackage = options.environment.hakurei.hsuPackage.default.override { hakurei = package; }; + }; + + imports = [ + ./configuration.nix + + self.nixosModules.hakurei + self.inputs.home-manager.nixosModules.home-manager + ]; + }; + + # adapted from nixos sway integration tests + + # testScriptWithTypes:49: error: Cannot call function of unknown type + # (machine.succeed if succeed else machine.execute)( + # ^ + # Found 1 error in 1 file (checked 1 source file) + skipTypeCheck = true; + testScript = builtins.readFile ./test.py; +} |
