lua.tests: update golden values for default LUA_PATH

when LUA_PATH contains `;;`, it is replaced by `;LUA_PATH_DEFAULT;` in
lua 5.1:
Updated 69ea087dff/loadlib.c (L599)
More recent versions might be smarter ?
65b07dd53d/loadlib.c (L301)
This commit is contained in:
Matthieu Coudron 2024-03-06 22:40:01 +01:00
parent 640cdcb814
commit 815d3683f7
2 changed files with 38 additions and 22 deletions

View File

@ -3,14 +3,14 @@
# Example:
# fail "It should have been but it wasn't to be"
function fail() {
echo "$1"
echo -e "$1"
exit 1
}
function assertStringEqual() {
if ! diff <(echo "$1") <(echo "$2") ; then
fail "expected \"$1\" to be equal to \"$2\""
fail "Actual value: \"$1\"\nExpected value: \"$2\""
fi
}

View File

@ -1,12 +1,10 @@
{ lua
, hello
, wrapLua
, lib, fetchFromGitHub
, fetchFromGitLab
, lib
, pkgs
}:
let
runTest = lua: { name, command }:
pkgs.runCommandLocal "test-${lua.name}-${name}" ({
nativeBuildInputs = [lua];
@ -18,29 +16,47 @@ let
+ "touch $out"
);
wrappedHello = hello.overrideAttrs(oa: {
propagatedBuildInputs = [
wrapLua
lua.pkgs.cjson
];
postFixup = ''
wrapLuaPrograms
'';
});
wrappedHello = hello.overrideAttrs(oa: {
propagatedBuildInputs = [
wrapLua
lua.pkgs.cjson
];
postFixup = ''
wrapLuaPrograms
'';
});
luaWithModule = lua.withPackages(ps: [
ps.lua-cjson
]);
luaWithModule = lua.withPackages(ps: [
ps.lua-cjson
]);
golden_LUA_PATHS = {
# Looking at lua interpreter 'setpath' code
# for instance https://github.com/lua/lua/blob/69ea087dff1daba25a2000dfb8f1883c17545b7a/loadlib.c#L599
# replace ";;" by ";LUA_PATH_DEFAULT;"
"5.1" = ";./?.lua;${lua}/share/lua/5.1/?.lua;${lua}/share/lua/5.1/?/init.lua;${lua}/lib/lua/5.1/?.lua;${lua}/lib/lua/5.1/?/init.lua;";
"5.2" = ";${lua}/share/lua/5.2/?.lua;${lua}/share/lua/5.2/?/init.lua;${lua}/lib/lua/5.2/?.lua;${lua}/lib/lua/5.2/?/init.lua;./?.lua;";
"5.3" = ";${lua}/share/lua/5.3/?.lua;${lua}/share/lua/5.3/?/init.lua;${lua}/lib/lua/5.3/?.lua;${lua}/lib/lua/5.3/?/init.lua;./?.lua;./?/init.lua;";
# lua5.4 seems to be smarter about it and dont add the lua separators when nothing left or right
"5.4" = "${lua}/share/lua/5.4/?.lua;${lua}/share/lua/5.4/?/init.lua;${lua}/lib/lua/5.4/?.lua;${lua}/lib/lua/5.4/?/init.lua;./?.lua;./?/init.lua";
# luajit versions
"2.0" = ";./?.lua;${lua}/share/luajit-2.0/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;${lua}/share/lua/5.1/?.lua;${lua}/share/lua/5.1/?/init.lua;";
"2.1" = ";./?.lua;${lua}/share/luajit-2.1/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;${lua}/share/lua/5.1/?.lua;${lua}/share/lua/5.1/?/init.lua;";
};
in
pkgs.recurseIntoAttrs ({
checkAliases = runTest lua {
name = "check-aliases";
checkInterpreterPatch = let
golden_LUA_PATH = golden_LUA_PATHS.${lib.versions.majorMinor lua.version};
in
runTest lua {
name = "check-default-lua-path";
command = ''
export LUA_PATH=";;"
generated=$(lua -e 'print(package.path)')
golden_LUA_PATH='./share/lua/${lua.luaversion}/?.lua;./?.lua;./?/init.lua'
assertStringContains "$generated" "$golden_LUA_PATH"
assertStringEqual "$generated" "${golden_LUA_PATH}"
'';
};