summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthieu Coudron <mcoudron@hotmail.com>2021-05-28 23:44:43 +0200
committerMatthieu Coudron <teto@users.noreply.github.com>2021-06-07 18:21:21 +0200
commit4a2cbcfbb4e9563b81af2637ddaf4ff8cce97930 (patch)
treeeab2b1efaa90be89b0b21a00321d7c55239e4c2a
parent602163952d956b5614ad7794e8ec277fd10bd5b3 (diff)
neovim: add some tests
To test the generated RC is included in the file and that we have the option not to wrap the RC. run: nix-build -A tests.vim
-rw-r--r--pkgs/applications/editors/neovim/utils.nix2
-rw-r--r--pkgs/applications/editors/neovim/wrapper.nix28
-rw-r--r--pkgs/test/vim/default.nix66
-rw-r--r--pkgs/test/vim/neovim-override.vim7
4 files changed, 85 insertions, 18 deletions
diff --git a/pkgs/applications/editors/neovim/utils.nix b/pkgs/applications/editors/neovim/utils.nix
index ae814fa9b4eb..c753d2cca2c1 100644
--- a/pkgs/applications/editors/neovim/utils.nix
+++ b/pkgs/applications/editors/neovim/utils.nix
@@ -148,6 +148,7 @@ let
, vimAlias ? false
, viAlias ? false
, configure ? {}
+ , extraName ? ""
}:
let
/* for compatibility with passing extraPythonPackages as a list; added 2018-07-11 */
@@ -160,6 +161,7 @@ let
extraPython3Packages = compatFun extraPython3Packages;
inherit withNodeJs withRuby viAlias vimAlias;
inherit configure;
+ inherit extraName;
};
in
assert withPython -> throw "Python2 support has been removed from neovim, please remove withPython and extraPythonPackages.";
diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix
index 7fa15efd82cc..07a1dad7c09b 100644
--- a/pkgs/applications/editors/neovim/wrapper.nix
+++ b/pkgs/applications/editors/neovim/wrapper.nix
@@ -27,23 +27,24 @@ let
# set to false if you want to control where to save the generated config
# (e.g., in ~/.config/init.vim or project/.nvimrc)
, wrapRc ? true
+ , neovimRcContent ? ""
, ...
}@args:
let
wrapperArgsStr = if isString wrapperArgs then wrapperArgs else lib.escapeShellArgs wrapperArgs;
- # If configure != {}, we can't generate the rplugin.vim file with e.g
- # NVIM_SYSTEM_RPLUGIN_MANIFEST *and* NVIM_RPLUGIN_MANIFEST env vars set in
- # the wrapper. That's why only when configure != {} (tested both here and
- # when postBuild is evaluated), we call makeWrapper once to generate a
- # wrapper with most arguments we need, excluding those that cause problems to
- # generate rplugin.vim, but still required for the final wrapper.
- finalMakeWrapperArgs =
- [ "${neovim}/bin/nvim" "${placeholder "out"}/bin/nvim" ]
- ++ [ "--set" "NVIM_SYSTEM_RPLUGIN_MANIFEST" "${placeholder "out"}/rplugin.vim" ]
- ++ optionals wrapRc [ "--add-flags" "-u ${writeText "init.vim" args.neovimRcContent}" ]
- ;
+ # If configure != {}, we can't generate the rplugin.vim file with e.g
+ # NVIM_SYSTEM_RPLUGIN_MANIFEST *and* NVIM_RPLUGIN_MANIFEST env vars set in
+ # the wrapper. That's why only when configure != {} (tested both here and
+ # when postBuild is evaluated), we call makeWrapper once to generate a
+ # wrapper with most arguments we need, excluding those that cause problems to
+ # generate rplugin.vim, but still required for the final wrapper.
+ finalMakeWrapperArgs =
+ [ "${neovim}/bin/nvim" "${placeholder "out"}/bin/nvim" ]
+ ++ [ "--set" "NVIM_SYSTEM_RPLUGIN_MANIFEST" "${placeholder "out"}/rplugin.vim" ]
+ ++ optionals wrapRc [ "--add-flags" "-u ${writeText "init.vim" neovimRcContent}" ]
+ ;
in
assert withPython2 -> throw "Python2 support has been removed from the neovim wrapper, please remove withPython2 and python2Env.";
@@ -116,7 +117,10 @@ let
preferLocalBuild = true;
nativeBuildInputs = [ makeWrapper ];
- passthru = { unwrapped = neovim; };
+ passthru = {
+ unwrapped = neovim;
+ initRc = neovimRcContent;
+ };
meta = neovim.meta // {
# To prevent builds on hydra
diff --git a/pkgs/test/vim/default.nix b/pkgs/test/vim/default.nix
index c809940fc4c7..3bdc3234134c 100644
--- a/pkgs/test/vim/default.nix
+++ b/pkgs/test/vim/default.nix
@@ -1,9 +1,12 @@
{ vimUtils, vim_configurable, writeText, neovim, vimPlugins
, lib, fetchFromGitHub, neovimUtils, wrapNeovimUnstable
, neovim-unwrapped
+, fetchFromGitLab
+, pkgs
}:
let
inherit (vimUtils) buildVimPluginFrom2Nix;
+ inherit (neovimUtils) makeNeovimConfig;
packages.myVimPackage.start = with vimPlugins; [ vim-nix ];
@@ -16,27 +19,55 @@ let
}
];
- nvimConfNix = neovimUtils.makeNeovimConfig {
+ nvimConfNix = makeNeovimConfig {
inherit plugins;
customRC = ''
" just a comment
'';
};
- wrapNeovim = suffix: config:
+ nvimConfDontWrap = makeNeovimConfig {
+ inherit plugins;
+ customRC = ''
+ " just a comment
+ '';
+ };
+
+ wrapNeovim2 = suffix: config:
wrapNeovimUnstable neovim-unwrapped (config // {
extraName = suffix;
- wrapRc = true;
});
+
+ nmt = fetchFromGitLab {
+ owner = "rycee";
+ repo = "nmt";
+ rev = "d2cc8c1042b1c2511f68f40e2790a8c0e29eeb42";
+ sha256 = "1ykcvyx82nhdq167kbnpgwkgjib8ii7c92y3427v986n2s5lsskc";
+ };
+
+ runTest = neovim-drv: buildCommand:
+ pkgs.runCommandLocal "test-${neovim-drv.name}" ({
+ nativeBuildInputs = [ ];
+ meta.platforms = neovim-drv.meta.platforms;
+ }) (''
+ source ${nmt}/bash-lib/assertions.sh
+ vimrc="${writeText "init.vim" neovim-drv.initRc}"
+ vimrcGeneric="$out/patched.vim"
+ mkdir $out
+ ${pkgs.perl}/bin/perl -pe "s|\Q$NIX_STORE\E/[a-z0-9]{32}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" < "$vimrc" > "$vimrcGeneric"
+ '' + buildCommand);
+
in
-{
+ pkgs.recurseIntoAttrs (
+rec {
vim_empty_config = vimUtils.vimrcFile { beforePlugins = ""; customRC = ""; };
### neovim tests
##################
- nvim_with_plugins = wrapNeovim "-with-plugins" nvimConfNix;
+ nvim_with_plugins = wrapNeovim2 "-with-plugins" nvimConfNix;
nvim_via_override = neovim.override {
+ extraName = "-via-override";
configure = {
packages.foo.start = [ vimPlugins.ale ];
customRC = ''
@@ -45,6 +76,29 @@ in
};
};
+
+ # nixpkgs should detect that no wrapping is necessary
+ nvimShouldntWrap = wrapNeovim2 "-should-not-wrap" nvimConfNix;
+
+
+ # this will generate a neovimRc content but we disable wrapping
+ nvimDontWrap = wrapNeovim2 "-dont-wrap" (makeNeovimConfig {
+ wrapRc = false;
+ customRC = ''
+ " this shouldn't trigger the creation of an init.vim
+ '';
+ });
+
+ nvim_dontwrap-test = runTest nvimDontWrap ''
+ ! grep "-u" ${nvimDontWrap}/bin/nvim
+ '';
+
+ nvim_via_override-test = runTest nvim_via_override ''
+ assertFileContent \
+ "$vimrcGeneric" \
+ "${./neovim-override.vim}"
+ '';
+
### vim tests
##################
vim_with_vim2nix = vim_configurable.customize {
@@ -107,4 +161,4 @@ in
test_nvim_with_remote_plugin = neovim.override {
configure.pathogen.pluginNames = with vimPlugins; [ deoplete-nvim ];
};
-}
+})
diff --git a/pkgs/test/vim/neovim-override.vim b/pkgs/test/vim/neovim-override.vim
new file mode 100644
index 000000000000..34a1a8f1f432
--- /dev/null
+++ b/pkgs/test/vim/neovim-override.vim
@@ -0,0 +1,7 @@
+" configuration generated by NIX
+set nocompatible
+
+set packpath^=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-vim-pack-dir
+set runtimepath^=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-vim-pack-dir
+
+:help ale