diff --git a/pkgs/applications/editors/neovim/tests/default.nix b/pkgs/applications/editors/neovim/tests/default.nix index a7a31ea4e65e..de18a630cca4 100644 --- a/pkgs/applications/editors/neovim/tests/default.nix +++ b/pkgs/applications/editors/neovim/tests/default.nix @@ -525,4 +525,37 @@ pkgs.lib.recurseIntoAttrs rec { ''; } ); + + nvim_require_check_ignores_test_modules = vimUtils.buildVimPlugin { + pname = "neovim-require-check-ignores-test-modules"; + version = "0"; + src = runCommandLocal "neovim-require-check-ignores-test-modules-src" { } '' + mkdir -p \ + "$out/lua/require-check-ignores"/{debug,script,scripts,test,tests,spec,_meta} \ + "$out/lua/require-check-ignores" + cat > "$out/lua/require-check-ignores/init.lua" <<'EOF' + return {} + EOF + for dir in debug script scripts test tests spec _meta; do + cat > "$out/lua/require-check-ignores/$dir/failing.lua" < "$out/lua/require-check-ignores/failing_meta.lua" <<'EOF' + error("excluded _meta module was required") + EOF + cat > "$out/lua/require-check-ignores/failing_spec.lua" <<'EOF' + error("excluded _spec module was required") + EOF + cat > "$out/lua/require-check-ignores/failing.spec.lua" <<'EOF' + error("excluded .spec module was required") + EOF + cat > "$out/lua/require-check-ignores/failing.test.lua" <<'EOF' + error("excluded .test module was required") + EOF + cat > "$out/lua/require-check-ignores/meta.lua" <<'EOF' + error("excluded meta module was required") + EOF + ''; + }; } diff --git a/pkgs/applications/editors/vim/plugins/hooks/neovim-require-check-hook.sh b/pkgs/applications/editors/vim/plugins/hooks/neovim-require-check-hook.sh index bd3ea95e9470..5a309207cc53 100644 --- a/pkgs/applications/editors/vim/plugins/hooks/neovim-require-check-hook.sh +++ b/pkgs/applications/editors/vim/plugins/hooks/neovim-require-check-hook.sh @@ -10,11 +10,21 @@ discover_modules() { modules=() while IFS= read -r lua_file; do - # Ignore certain infra directories - if [[ "$lua_file" =~ (^|/)(debug|script|scripts|test|tests|spec)(/|$) || "$lua_file" =~ .*\meta.lua ]]; then - continue + # Ignore infrastructure directories and non-runtime module files + case "/$lua_file/" in + */debug/* | */script/* | */scripts/* | */test/* | */tests/* | */spec/* | */_meta/*) + continue + ;; + esac + + case "${lua_file##*/}" in + *meta.lua | *_spec.lua | *.spec.lua | *.test.lua) + continue + ;; + esac + # Ignore optional telescope and lualine modules - elif [[ "$lua_file" =~ ^lua/telescope/_extensions/(.+)\.lua || "$lua_file" =~ ^lua/lualine/(.+)\.lua ]]; then + if [[ "$lua_file" =~ ^lua/telescope/_extensions/(.+)\.lua || "$lua_file" =~ ^lua/lualine/(.+)\.lua ]]; then continue # Grab main module names elif [[ "$lua_file" =~ ^lua/([^/]+)/init.lua$ ]]; then