diff --git a/tests/autodiscovery_test.nix b/tests/autodiscovery_test.nix new file mode 100644 index 0000000..51c9205 --- /dev/null +++ b/tests/autodiscovery_test.nix @@ -0,0 +1,63 @@ +{ + pkgs, + ntlib, + ... +}: { + suites."Autodiscovery" = { + pos = __curPos; + tests = [ + { + name = "find nix files"; + type = "script"; + script = '' + ${ntlib.helpers.path [pkgs.gnugrep pkgs.coreutils pkgs.nix]} + ${ntlib.helpers.scriptHelpers} + + mkdir -p "testcell" + echo '{ foo = "bar"; }' > "testcell/packages.nix" + echo '{ baz = "qux"; }' > "testcell/devShells.nix" + echo '{ ignored = true; }' > "testcell/flake.nix" + + result=$(nix eval --impure --expr ' + let + lib = import ${pkgs.path}/lib; + autodiscover = import ${../lib/core/autodiscover.nix} { + l = builtins // lib; + cellsFrom = ./.; + cellBlocks = [ { name = "__autodiscover"; } ]; + }; + in + builtins.length (builtins.filter (b: b.name == "packages" || b.name == "devShells") autodiscover) + ') + + assert_eq "$result" "2" "should discover 2 blocks" + ''; + } + { + name = "finds directories"; + type = "script"; + script = '' + ${ntlib.helpers.path [pkgs.gnugrep pkgs.coreutils pkgs.nix]} + ${ntlib.helpers.scriptHelpers} + + mkdir -p "testcell/packages" + echo '{ hello = "world"; }' > "testcell/packages/default.nix" + + result=$(nix eval --impure --expr ' + let + lib = import ${pkgs.path}/lib; + autodiscover = import ${../lib/core/autodiscover.nix} { + l = builtins // lib; + cellsFrom = ./.; + cellBlocks = [ { name = "__autodiscover"; } ]; + }; + in + builtins.any (b: b.name == "packages") autodiscover + ') + + assert "$result == true" "Should discover directory with default.nix" + ''; + } + ]; + }; +}