From f50f9d58ef5fe86363e5223b2b55075f6c4c636c Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Tue, 5 Mar 2024 21:38:15 -0300 Subject: fix(windows): parse slashes correctly when reading rock_manifest --- spec/quick/build.q | 47 +++++++++++++++++++++++++++++++++++++++++++ spec/util/test_env.lua | 2 +- src/luarocks/manif/writer.lua | 2 +- src/luarocks/upload/api.lua | 3 ++- 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/spec/quick/build.q b/spec/quick/build.q index 958ce5d1..6d7c4744 100644 --- a/spec/quick/build.q +++ b/spec/quick/build.q @@ -302,3 +302,50 @@ return { } } -------------------------------------------------------------------------------- + + + +================================================================================ +TEST: installs bin entries correctly + +FILE: test-1.0-1.rockspec +-------------------------------------------------------------------------------- +package = "test" +version = "1.0-1" +source = { + url = "file://%{url(%{fixtures_dir})}/an_upstream_tarball-0.1.tar.gz", + dir = "an_upstream_tarball-0.1", +} +build = { + type = "builtin", + modules = { + my_module = "src/my_module.lua" + }, + install = { + bin = { + "src/my_module.lua" + } + } +} +-------------------------------------------------------------------------------- + +RUN: luarocks build test-1.0-1.rockspec --tree=lua_modules + +RM: %{fixtures_dir}/bin/something.lua + +EXISTS: ./lua_modules/lib/luarocks/rocks-%{lua_version}/test/1.0-1/test-1.0-1.rockspec + +FILE_CONTENTS: ./lua_modules/lib/luarocks/rocks-%{lua_version}/test/1.0-1/rock_manifest +-------------------------------------------------------------------------------- +rock_manifest = { + bin = { + ["my_module.lua"] = "25884dbf5be7114791018a48199d4c04" + }, + lua = { + ["my_module.lua"] = "25884dbf5be7114791018a48199d4c04" + }, + ["test-1.0-1.rockspec"] = +} +-------------------------------------------------------------------------------- + +EXISTS: ./lua_modules/bin/my_module.lua%{wrapper_extension} diff --git a/spec/util/test_env.lua b/spec/util/test_env.lua index 2255d141..5d385db3 100644 --- a/spec/util/test_env.lua +++ b/spec/util/test_env.lua @@ -527,7 +527,7 @@ end function test_env.write_file(pathname, str, finally) pathname = V(pathname) - local file = assert(io.open(pathname, "w")) + local file = assert(io.open(pathname, "wb")) file:write(str) file:close() if finally then diff --git a/src/luarocks/manif/writer.lua b/src/luarocks/manif/writer.lua index e39137c2..36f5f57f 100644 --- a/src/luarocks/manif/writer.lua +++ b/src/luarocks/manif/writer.lua @@ -267,7 +267,7 @@ function writer.make_rock_manifest(name, version) local walk = tree local last local last_name - for filename in file:gmatch("[^/]+") do + for filename in file:gmatch("[^\\/]+") do local next = walk[filename] if not next then next = {} diff --git a/src/luarocks/upload/api.lua b/src/luarocks/upload/api.lua index 8e26f66a..e1413702 100644 --- a/src/luarocks/upload/api.lua +++ b/src/luarocks/upload/api.lua @@ -8,6 +8,7 @@ local util = require("luarocks.util") local persist = require("luarocks.persist") local multipart = require("luarocks.upload.multipart") local json = require("luarocks.vendor.dkjson") +local dir_sep = package.config:sub(1, 1) local Api = {} @@ -15,7 +16,7 @@ local function upload_config_file() if not cfg.config_files.user.file then return nil end - return (cfg.config_files.user.file:gsub("/[^/]+$", "/upload_config.lua")) + return (cfg.config_files.user.file:gsub("[\\/][^\\/]+$", dir_sep .. "upload_config.lua")) end function Api:load_config() -- cgit v1.2.3-55-g6feb