neovim-require-check-hook: ignore test and metadata modules
Installed plugin outputs can include test or metadata Lua files next to runtime modules. Skip common directory and filename patterns during automatic discovery so require checks stay focused on importable runtime modules. Add regression coverage for ignored directories and test/meta module filenames.
This commit is contained in:
@@ -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" <<EOF
|
||||
error("excluded $dir directory was required")
|
||||
EOF
|
||||
done
|
||||
cat > "$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
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user