diff --git a/tests/modules/programs/direnv/bash.nix b/tests/modules/programs/direnv/bash.nix deleted file mode 100644 index 7feb65cc1..000000000 --- a/tests/modules/programs/direnv/bash.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - programs.bash.enable = true; - programs.direnv.enable = true; - - nmt.script = '' - assertFileExists home-files/.bashrc - assertFileRegex \ - home-files/.bashrc \ - 'eval "\$(@direnv@/bin/direnv hook bash)"' - ''; -} diff --git a/tests/modules/programs/direnv/basic-config.nix b/tests/modules/programs/direnv/basic-config.nix new file mode 100644 index 000000000..8e75e3933 --- /dev/null +++ b/tests/modules/programs/direnv/basic-config.nix @@ -0,0 +1,106 @@ +{ config, pkgs, ... }: +let + expectedContent = "something important"; +in +{ + programs = { + direnv = { + enable = true; + silent = true; + + enableBashIntegration = true; + enableNushellIntegration = true; + enableZshIntegration = true; + + mise = { + enable = true; + package = config.lib.test.mkStubPackage { name = "mise"; }; + }; + + nix-direnv = { + enable = true; + package = config.lib.test.mkStubPackage { + buildScript = '' + mkdir -p $out/share/nix-direnv/ + echo "use_nix" >> $out/share/nix-direnv/direnvrc + ''; + }; + }; + + stdlib = expectedContent; + + config = { + global = { + hide_env_diff = true; + }; + whitelist = { + prefix = [ "/home/user/projects" ]; + }; + }; + }; + + bash.enable = true; + fish.enable = true; + nushell.enable = true; + zsh.enable = true; + }; + + nmt.script = + let + nushellConfigFile = + if pkgs.stdenv.isDarwin && !config.xdg.enable then + "home-files/Library/Application Support/nushell/config.nu" + else + "home-files/.config/nushell/config.nu"; + in + # Bash + '' + # Test basic bash integration + assertFileExists home-files/.bashrc + assertFileRegex \ + home-files/.bashrc \ + 'eval "\$(@direnv@/bin/direnv hook bash)"' + + + # Test nushell integration + assertFileExists "${nushellConfigFile}" + assertFileRegex "${nushellConfigFile}" '@direnv@/bin/direnv export json' + + # Test creates config file + assertFileExists home-files/.config/direnv/direnv.toml + assertFileContent \ + home-files/.config/direnv/direnv.toml \ + ${./toml-config-expected.toml} + + assertFileExists home-files/.config/direnv/lib/hm-nix-direnv.sh + assertFileRegex home-files/.config/direnv/lib/hm-nix-direnv.sh \ + 'use_nix' + + assertFileRegex \ + home-files/.config/direnv/direnvrc \ + '${expectedContent}' + # Test bash integration + assertFileRegex home-files/.bashrc \ + 'eval.*direnv hook bash' + + # Test zsh integration + assertFileRegex home-files/.zshrc \ + 'eval.*direnv hook zsh' + + # Test fish integration (enabled by default) + assertFileRegex home-files/.config/fish/config.fish \ + 'direnv hook fish.*source' + + # Test nushell integration + assertFileRegex "${nushellConfigFile}" \ + 'direnv export json' + assertFileRegex "${nushellConfigFile}" \ + 'load-env' + + # Test mise integration creates library file + assertFileExists home-files/.config/direnv/lib/hm-mise.sh + assertFileRegex home-files/.config/direnv/lib/hm-mise.sh \ + 'mise direnv activate' + + ''; +} diff --git a/tests/modules/programs/direnv/default.nix b/tests/modules/programs/direnv/default.nix index 881617a17..b6d0cbb2b 100644 --- a/tests/modules/programs/direnv/default.nix +++ b/tests/modules/programs/direnv/default.nix @@ -1,9 +1,3 @@ { - direnv-bash = ./bash.nix; - direnv-mise = ./mise.nix; - direnv-nix-direnv = ./nix-direnv.nix; - direnv-nushell = ./nushell.nix; - direnv-stdlib = ./stdlib.nix; - direnv-stdlib-and-nix-direnv = ./stdlib-and-nix-direnv.nix; - direnv-silent = ./silent.nix; + direnv = ./basic-config.nix; } diff --git a/tests/modules/programs/direnv/mise.nix b/tests/modules/programs/direnv/mise.nix deleted file mode 100644 index b205df627..000000000 --- a/tests/modules/programs/direnv/mise.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, ... }: - -{ - programs.bash.enable = true; - programs.direnv = { - enable = true; - mise = { - enable = true; - package = config.lib.test.mkStubPackage { name = "mise"; }; - }; - }; - - nmt.script = '' - assertFileExists home-files/.bashrc - assertFileExists home-files/.config/direnv/lib/hm-mise.sh - ''; -} diff --git a/tests/modules/programs/direnv/nix-direnv.nix b/tests/modules/programs/direnv/nix-direnv.nix deleted file mode 100644 index 5b83647fd..000000000 --- a/tests/modules/programs/direnv/nix-direnv.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ realPkgs, ... }: - -{ - programs.bash.enable = true; - programs.direnv.enable = true; - programs.direnv.nix-direnv.enable = true; - - nixpkgs.overlays = [ (_: _: { inherit (realPkgs) nix-direnv; }) ]; - - nmt.script = '' - assertFileExists home-files/.bashrc - assertFileExists home-files/.config/direnv/lib/hm-nix-direnv.sh - ''; -} diff --git a/tests/modules/programs/direnv/nushell.nix b/tests/modules/programs/direnv/nushell.nix deleted file mode 100644 index 6b1a25f04..000000000 --- a/tests/modules/programs/direnv/nushell.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, config, ... }: - -{ - programs.nushell.enable = true; - programs.direnv.enable = true; - - nmt.script = - let - configFile = - if pkgs.stdenv.isDarwin && !config.xdg.enable then - "home-files/Library/Application Support/nushell/config.nu" - else - "home-files/.config/nushell/config.nu"; - in - '' - assertFileExists "${configFile}" - assertFileRegex "${configFile}" '@direnv@/bin/direnv export json' - ''; -} diff --git a/tests/modules/programs/direnv/silent.nix b/tests/modules/programs/direnv/silent.nix deleted file mode 100644 index 2dabb4c42..000000000 --- a/tests/modules/programs/direnv/silent.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, ... }: -{ - programs.bash.enable = true; - programs.direnv = { - enable = true; - silent = true; - }; - - nmt.script = '' - assertFileExists home-files/.config/direnv/direnv.toml - assertFileContent \ - home-files/.config/direnv/direnv.toml \ - ${pkgs.writeText "direnv.toml" '' - [global] - log_filter = "^$" - log_format = "-" - ''} - ''; -} diff --git a/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix b/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix deleted file mode 100644 index 5aaa81736..000000000 --- a/tests/modules/programs/direnv/stdlib-and-nix-direnv.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ realPkgs, ... }: - -let - expectedContent = "something important"; -in -{ - programs.bash.enable = true; - programs.direnv.enable = true; - programs.direnv.nix-direnv.enable = true; - programs.direnv.stdlib = expectedContent; - - nixpkgs.overlays = [ (_: _: { inherit (realPkgs) nix-direnv; }) ]; - - nmt.script = '' - assertFileExists home-files/.bashrc - assertFileExists home-files/.config/direnv/lib/hm-nix-direnv.sh - assertFileRegex \ - home-files/.config/direnv/direnvrc \ - '${expectedContent}' - ''; -} diff --git a/tests/modules/programs/direnv/stdlib.nix b/tests/modules/programs/direnv/stdlib.nix deleted file mode 100644 index 051e68027..000000000 --- a/tests/modules/programs/direnv/stdlib.nix +++ /dev/null @@ -1,16 +0,0 @@ -let - expectedContent = "something important"; -in -{ - programs.bash.enable = true; - programs.direnv.enable = true; - programs.direnv.stdlib = expectedContent; - - nmt.script = '' - assertPathNotExists home-files/.config/direnv/lib/hm-nix-direnv.sh - assertFileExists home-files/.bashrc - assertFileRegex \ - home-files/.config/direnv/direnvrc \ - '${expectedContent}' - ''; -} diff --git a/tests/modules/programs/direnv/toml-config-expected.toml b/tests/modules/programs/direnv/toml-config-expected.toml new file mode 100644 index 000000000..e034b3ceb --- /dev/null +++ b/tests/modules/programs/direnv/toml-config-expected.toml @@ -0,0 +1,7 @@ +[global] +hide_env_diff = true +log_filter = "^$" +log_format = "-" + +[whitelist] +prefix = ["/home/user/projects"]