mirror of
https://github.com/nix-community/home-manager
synced 2024-11-04 18:29:45 +01:00
fish: add some tests
- If a function is defined, check that the function file exists and that the contents matches a given string. - If no functions exists, the functions folder should not exist. - Verify plugin functionality.
This commit is contained in:
parent
108259925a
commit
111011b2c2
5 changed files with 118 additions and 0 deletions
|
@ -29,6 +29,7 @@ import nmt {
|
||||||
./modules/programs/alacritty
|
./modules/programs/alacritty
|
||||||
./modules/programs/bash
|
./modules/programs/bash
|
||||||
./modules/programs/browserpass
|
./modules/programs/browserpass
|
||||||
|
./modules/programs/fish
|
||||||
./modules/programs/git
|
./modules/programs/git
|
||||||
./modules/programs/gpg
|
./modules/programs/gpg
|
||||||
./modules/programs/mbsync
|
./modules/programs/mbsync
|
||||||
|
|
5
tests/modules/programs/fish/default.nix
Normal file
5
tests/modules/programs/fish/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
fish-functions = ./functions.nix;
|
||||||
|
fish-no-functions = ./no-functions.nix;
|
||||||
|
fish-plugins = ./plugins.nix;
|
||||||
|
}
|
32
tests/modules/programs/fish/functions.nix
Normal file
32
tests/modules/programs/fish/functions.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
func = pkgs.writeText "func.fish" ''
|
||||||
|
function func
|
||||||
|
echo "Hello"
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
in {
|
||||||
|
config = {
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
functions = { func = ''echo "Hello"''; };
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt = {
|
||||||
|
description =
|
||||||
|
"if fish.function is set, check file exists and contents match";
|
||||||
|
script = ''
|
||||||
|
assertFileExists home-files/.config/fish/functions/func.fish
|
||||||
|
echo ${func}
|
||||||
|
assertFileContent home-files/.config/fish/functions/func.fish ${func}
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
tests/modules/programs/fish/no-functions.nix
Normal file
22
tests/modules/programs/fish/no-functions.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
functions = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt = {
|
||||||
|
description =
|
||||||
|
"if fish.functions is blank, the functions folder should not exist.";
|
||||||
|
script = ''
|
||||||
|
assertPathNotExists home-files/.config/fish/functions
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
58
tests/modules/programs/fish/plugins.nix
Normal file
58
tests/modules/programs/fish/plugins.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
fooPluginSrc = pkgs.writeText "fooPluginSrc" "";
|
||||||
|
|
||||||
|
generatedConfdFile = pkgs.writeText "plugin-foo.fish" ''
|
||||||
|
# Plugin foo
|
||||||
|
set -l plugin_dir ${fooPluginSrc}
|
||||||
|
|
||||||
|
# Set paths to import plugin components
|
||||||
|
if test -d $plugin_dir"/functions"
|
||||||
|
set fish_function_path $fish_function_path[1] $plugin_dir"/functions" $fish_function_path[2..-1]
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -d $plugin_dir"/completions"
|
||||||
|
set fish_complete_path $fish_function_path[1] $plugin_dir"/completions" $fish_complete_path[2..-1]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Source initialization code if it exists.
|
||||||
|
if test -d $plugin_dir"/conf.d"
|
||||||
|
source $plugin_dir"/conf.d/*.fish"
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -f $plugin_dir"/key_bindings.fish"
|
||||||
|
source $plugin_dir"/key_bindings.fish"
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -f $plugin_dir"/init.fish"
|
||||||
|
source $plugin_dir"/init.fish"
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
in {
|
||||||
|
config = {
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
plugins = [{
|
||||||
|
name = "foo";
|
||||||
|
src = fooPluginSrc;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt = {
|
||||||
|
description =
|
||||||
|
"if fish.plugins set, check conf.d file exists and contents match";
|
||||||
|
script = ''
|
||||||
|
assertDirectoryExists home-files/.config/fish/conf.d
|
||||||
|
assertFileExists home-files/.config/fish/conf.d/plugin-foo.fish
|
||||||
|
assertFileContent home-files/.config/fish/conf.d/plugin-foo.fish ${generatedConfdFile}
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue