From 4a2cbcfbb4e9563b81af2637ddaf4ff8cce97930 Mon Sep 17 00:00:00 2001 From: Matthieu Coudron Date: Fri, 28 May 2021 23:44:43 +0200 Subject: 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 --- pkgs/test/vim/default.nix | 66 +++++++++++++++++++++++++++++++++++---- pkgs/test/vim/neovim-override.vim | 7 +++++ 2 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 pkgs/test/vim/neovim-override.vim (limited to 'pkgs/test') diff --git a/pkgs/test/vim/default.nix b/pkgs/test/vim/default.nix index c809940fc4c..3bdc3234134 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 00000000000..34a1a8f1f43 --- /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 -- cgit 1.4.1