diff --git a/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh b/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh index 3041b7f1c3f7..302702166139 100644 --- a/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh +++ b/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh @@ -25,7 +25,8 @@ addToLuaSearchPathWithCustomDelimiter() { # export only if the folder contains lua files shopt -s globstar - for _file in ${absPattern/\?/\*\*}; do + local adjustedPattern="${absPattern/\?/\*\*\/\*}" + for _file in $adjustedPattern; do export "${varName}=${!varName:+${!varName};}${absPattern}" shopt -u globstar return; diff --git a/pkgs/development/interpreters/lua-5/tests/default.nix b/pkgs/development/interpreters/lua-5/tests/default.nix index 6ca6b153c0b6..c95d11aefc96 100644 --- a/pkgs/development/interpreters/lua-5/tests/default.nix +++ b/pkgs/development/interpreters/lua-5/tests/default.nix @@ -66,6 +66,21 @@ in touch $out ''); + # checks that lua's setup-hook adds dependencies to LUA_PATH + # Prevents the following regressions + # $ env NIX_PATH=nixpkgs=. nix-shell --pure -Q -p luajitPackages.lua luajitPackages.http + # nix-shell$ luajit + # > require('http.request') + # stdin:1: module 'http.request' not found: + checkSetupHook = pkgs.runCommandLocal "test-${lua.name}-setup-hook" ({ + nativeBuildInputs = [lua]; + buildInputs = [ lua.pkgs.http ]; + meta.platforms = lua.meta.platforms; + }) ('' + ${lua}/bin/lua -e "require'http.request'" + touch $out + ''); + checkRelativeImports = pkgs.runCommandLocal "test-${lua.name}-relative-imports" ({ }) ('' source ${./assert.sh}