From 8d30fc5bd2b352897b81756400ab50d2be859209 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Tue, 5 Mar 2024 22:13:12 -0300 Subject: fix(windows): output native slashes on fs.find --- spec/unit/build_spec.lua | 6 +++--- spec/unit/fs_spec.lua | 6 +++--- src/luarocks/build/builtin.lua | 7 ++++--- src/luarocks/fs/win32/tools.lua | 4 +++- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/spec/unit/build_spec.lua b/spec/unit/build_spec.lua index 3ef8eece..e8f13940 100644 --- a/spec/unit/build_spec.lua +++ b/spec/unit/build_spec.lua @@ -128,15 +128,15 @@ describe("LuaRocks build #unit", function() local modules = build_builtin.autodetect_modules(libs, incdirs, libdirs) assert.same(modules, { - module1 = location .. "/module1.lua", + module1 = P(location .. "/module1.lua"), ["dir1.module2"] = { - sources = location .. "/dir1/module2.c", + sources = P(location .. "/dir1/module2.c"), libraries = libs, incdirs = incdirs, libdirs = libdirs }, my_module = { - sources = location .. "/dir1/dir2/module3.c", + sources = P(location .. "/dir1/dir2/module3.c"), libraries = libs, incdirs = incdirs, libdirs = libdirs diff --git a/spec/unit/fs_spec.lua b/spec/unit/fs_spec.lua index 621a7727..c2a842bf 100644 --- a/spec/unit/fs_spec.lua +++ b/spec/unit/fs_spec.lua @@ -1063,9 +1063,9 @@ describe("luarocks.fs #unit", function() end assert.same(count, 3) assert.is_not.same(contents[tmpdir], true) - assert.same(contents["intfile1"], true) - assert.same(contents["intdir"], true) - assert.same(contents["intdir/intfile2"], true) + assert.same(contents[P"intfile1"], true) + assert.same(contents[P"intdir"], true) + assert.same(contents[P"intdir/intfile2"], true) end) it("uses the current working directory if the argument is nil", function() diff --git a/src/luarocks/build/builtin.lua b/src/luarocks/build/builtin.lua index c55b61a0..4c15d2bf 100644 --- a/src/luarocks/build/builtin.lua +++ b/src/luarocks/build/builtin.lua @@ -8,6 +8,7 @@ local builtin = {} builtin.skip_lua_inc_lib_check = true local unpack = unpack or table.unpack +local dir_sep = package.config:sub(1, 1) local fs = require("luarocks.fs") local path = require("luarocks.path") @@ -59,7 +60,7 @@ do for _, parent in ipairs({"src", "lua", "lib"}) do if fs.is_dir(parent) then fs.change_dir(parent) - prefix = parent.."/" + prefix = parent .. dir_sep break end end @@ -69,7 +70,7 @@ do if not skiplist[base] then local luamod = file:match("(.*)%.lua$") if luamod then - modules[path.path_to_module(file)] = prefix..file + modules[path.path_to_module(file)] = prefix .. file else local cmod = file:match("(.*)%.c$") if cmod then @@ -89,7 +90,7 @@ do fs.pop_dir() end - local bindir = (fs.is_dir("src/bin") and "src/bin") + local bindir = (fs.is_dir(dir.path("src", "bin")) and dir.path("src", "bin")) or (fs.is_dir("bin") and "bin") if bindir then install = { bin = {} } diff --git a/src/luarocks/fs/win32/tools.lua b/src/luarocks/fs/win32/tools.lua index be63063b..86cbb45b 100644 --- a/src/luarocks/fs/win32/tools.lua +++ b/src/luarocks/fs/win32/tools.lua @@ -10,6 +10,8 @@ local cfg = require("luarocks.core.cfg") local vars = setmetatable({}, { __index = function(_,k) return cfg.variables[k] end }) +local dir_sep = package.config:sub(1, 1) + --- Adds prefix to command to make it run from a directory. -- @param directory string: Path to a directory. -- @param cmd string: A command-line string. @@ -132,7 +134,7 @@ function tools.find(at) local first_two = file:sub(1,2) if first_two == ".\\" or first_two == "./" then file=file:sub(3) end if file ~= "." then - table.insert(result, (file:gsub("\\", "/"))) + table.insert(result, (file:gsub("[\\/]", dir_sep))) end end pipe:close() -- cgit v1.2.3-55-g6feb