diff --git a/dev/flake-module.nix b/dev/flake-module.nix index 40fe958..49b1102 100644 --- a/dev/flake-module.nix +++ b/dev/flake-module.nix @@ -26,6 +26,10 @@ }; }; + checks.eval-tests = + let tests = import ./tests/eval-tests.nix; + in tests.runTests pkgs.emptyFile // { internals = tests; }; + }; flake = { # for repl exploration / debug diff --git a/dev/tests/eval-tests.nix b/dev/tests/eval-tests.nix new file mode 100644 index 0000000..450b6a8 --- /dev/null +++ b/dev/tests/eval-tests.nix @@ -0,0 +1,63 @@ +rec { + f-p = builtins.getFlake (toString ../..); + f-p-lib = f-p.lib; + + inherit (f-p-lib) mkFlake; + inherit (f-p.inputs.nixpkgs-lib) lib; + + pkg = system: name: derivation { + name = name; + builder = "no-builder"; + system = system; + }; + + empty = mkFlake + { self = { }; } + { + systems = [ ]; + }; + + example1 = mkFlake + { self = { }; } + { + systems = [ "a" "b" ]; + perSystem = { system, ... }: { + packages.hello = pkg system "hello"; + }; + }; + + runTests = ok: + + assert empty == { + apps = { }; + checks = { }; + darwinModules = { }; + devShells = { }; + formatter = { }; + legacyPackages = { }; + nixosConfigurations = { }; + nixosModules = { }; + overlays = { }; + packages = { }; + }; + + assert example1 == { + apps = { a = { }; b = { }; }; + checks = { a = { }; b = { }; }; + darwinModules = { }; + devShells = { a = { }; b = { }; }; + formatter = { }; + legacyPackages = { a = { }; b = { }; }; + nixosConfigurations = { }; + nixosModules = { }; + overlays = { }; + packages = { + a = { hello = pkg "a" "hello"; }; + b = { hello = pkg "b" "hello"; }; + }; + }; + + ok; + + result = runTests "ok"; +}