aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/hakurei/testsuite/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/hakurei/testsuite/default.nix')
-rw-r--r--cmd/hakurei/testsuite/default.nix81
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;
+}