diff --git a/tests/modules/programs/fzf/all-options.nix b/tests/modules/programs/fzf/all-options.nix new file mode 100644 index 000000000..4c00e0029 --- /dev/null +++ b/tests/modules/programs/fzf/all-options.nix @@ -0,0 +1,59 @@ +{ + programs.fzf = { + enable = true; + defaultCommand = "fd --type f"; + defaultOptions = [ + "--height 40%" + "--border" + ]; + fileWidgetCommand = "fd --type f"; + fileWidgetOptions = [ "--preview 'head {}'" ]; + changeDirWidgetCommand = "fd --type d"; + changeDirWidgetOptions = [ "--preview 'tree -C {} | head -200'" ]; + historyWidgetOptions = [ + "--sort" + "--exact" + ]; + colors = { + bg = "#1e1e1e"; + }; + tmux = { + enableShellIntegration = true; + shellIntegrationOptions = [ "-d 40%" ]; + }; + }; + + nmt.script = '' + # Test default options + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_DEFAULT_COMMAND="fd --type f"' + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_DEFAULT_OPTS="--height 40% --border --color' + + # Test file widget + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_CTRL_T_COMMAND="fd --type f"' + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_CTRL_T_OPTS="--preview' + + # Test change dir widget + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_ALT_C_COMMAND="fd --type d"' + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_ALT_C_OPTS="--preview' + + # Test history widget + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_CTRL_R_OPTS="--sort --exact"' + + # Test tmux + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_TMUX="1"' + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_TMUX_OPTS="-d 40%"' + + # Test colors are exported + assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \ + 'FZF_DEFAULT_OPTS=.*--color' + ''; +} diff --git a/tests/modules/programs/fzf/bash-integration.nix b/tests/modules/programs/fzf/bash-integration.nix new file mode 100644 index 000000000..77c018683 --- /dev/null +++ b/tests/modules/programs/fzf/bash-integration.nix @@ -0,0 +1,27 @@ +{ config, ... }: + +{ + programs.fzf = { + enable = true; + enableBashIntegration = true; + + package = config.lib.test.mkStubPackage { + name = "fzf"; + version = "0.73.0"; + buildScript = '' + mkdir -p $out/bin $out/share/fzf + cat > $out/bin/fzf << 'EOF' + #!/bin/sh + echo "Stub fzf" + EOF + ''; + }; + }; + + programs.bash.enable = true; + + nmt.script = '' + assertFileRegex home-files/.bashrc \ + 'eval.*fzf.*bash' + ''; +} diff --git a/tests/modules/programs/fzf/default.nix b/tests/modules/programs/fzf/default.nix new file mode 100644 index 000000000..ed37ac319 --- /dev/null +++ b/tests/modules/programs/fzf/default.nix @@ -0,0 +1,8 @@ +{ + fzf-disabled = ./disabled.nix; + fzf-options = ./all-options.nix; + fzf-bash-integration = ./bash-integration.nix; + fzf-zsh-integration = ./zsh-integration.nix; + fzf-fish-integration = ./fish-integration.nix; + fzf-nushell-integration = ./nushell-integration.nix; +} diff --git a/tests/modules/programs/fzf/disabled.nix b/tests/modules/programs/fzf/disabled.nix new file mode 100644 index 000000000..0d31a2f5e --- /dev/null +++ b/tests/modules/programs/fzf/disabled.nix @@ -0,0 +1,7 @@ +{ + programs.fzf.enable = false; + + nmt.script = '' + assertPathNotExists home-files/.bashrc + ''; +} diff --git a/tests/modules/programs/fzf/fish-integration.nix b/tests/modules/programs/fzf/fish-integration.nix new file mode 100644 index 000000000..6e802a644 --- /dev/null +++ b/tests/modules/programs/fzf/fish-integration.nix @@ -0,0 +1,28 @@ +{ config, ... }: + +{ + programs.fzf = { + enable = true; + enableFishIntegration = true; + + package = config.lib.test.mkStubPackage { + name = "fzf"; + version = "0.73.0"; + buildScript = '' + mkdir -p $out/bin + cat > $out/bin/fzf << 'EOF' + #!/bin/sh + echo "Stub fzf" + EOF + chmod +x $out/bin/fzf + ''; + }; + }; + + programs.fish.enable = true; + + nmt.script = '' + assertFileRegex home-files/.config/fish/config.fish \ + 'fzf.*--fish.*source' + ''; +} diff --git a/tests/modules/programs/fzf/nushell-integration.nix b/tests/modules/programs/fzf/nushell-integration.nix new file mode 100644 index 000000000..bd25ea4fd --- /dev/null +++ b/tests/modules/programs/fzf/nushell-integration.nix @@ -0,0 +1,37 @@ +{ config, pkgs, ... }: + +{ + programs.fzf = { + enable = true; + enableNushellIntegration = true; + + package = config.lib.test.mkStubPackage { + name = "fzf"; + version = "0.73.0"; + buildScript = '' + mkdir -p $out/bin + cat > $out/bin/fzf << 'EOF' + #!/bin/sh + echo "Stub fzf" + EOF + chmod +x $out/bin/fzf + ''; + }; + }; + + programs.nushell.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 + '' + assertFileExists "${nushellConfigFile}" + assertFileRegex "${nushellConfigFile}" \ + 'source.*nushell-fzf-integration' + ''; +} diff --git a/tests/modules/programs/fzf/zsh-integration.nix b/tests/modules/programs/fzf/zsh-integration.nix new file mode 100644 index 000000000..dd0a4b8d6 --- /dev/null +++ b/tests/modules/programs/fzf/zsh-integration.nix @@ -0,0 +1,27 @@ +{ config, ... }: + +{ + programs.fzf = { + enable = true; + enableZshIntegration = true; + + package = config.lib.test.mkStubPackage { + name = "fzf"; + version = "0.73.0"; + buildScript = '' + mkdir -p $out/bin $out/share/fzf + cat > $out/bin/fzf << 'EOF' + #!/bin/sh + echo "Stub fzf" + EOF + ''; + }; + }; + + programs.zsh.enable = true; + + nmt.script = '' + assertFileRegex home-files/.zshrc \ + 'source.*fzf.*zsh' + ''; +}