aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/default.nix
blob: 037d7dee562a741d235e05e1f85683006a79faa7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
{
  lib,
  nixosTest,
  buildFHSEnv,
  writeShellScriptBin,

  system,
  self,
  withRace ? false,
}:

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 = [ 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 \
            'go test ${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: {
          GOFLAGS = previousAttrs.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;
}