aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/util_spec.lua14
-rw-r--r--src/luarocks/core/util.lua6
2 files changed, 19 insertions, 1 deletions
diff --git a/spec/util_spec.lua b/spec/util_spec.lua
index cbdde095..930a5aea 100644
--- a/spec/util_spec.lua
+++ b/spec/util_spec.lua
@@ -155,4 +155,18 @@ describe("Luarocks util test #unit", function()
155 assert.truthy(result:find("[\"e\"] = \"4\"", 1, true)) 155 assert.truthy(result:find("[\"e\"] = \"4\"", 1, true))
156 end) 156 end)
157 end) 157 end)
158
159 describe("core.util.cleanup_path", function()
160 it("rewrites versions that do not match the provided version", function()
161 local expected = 'a/b/lua/5.3/?.lua;a/b/c/lua/5.3/?.lua'
162 local result = core_util.cleanup_path('a/b/lua/5.2/?.lua;a/b/c/lua/5.3/?.lua', ';', '5.3')
163 assert.are.equal(expected, result)
164 end)
165
166 it("does not rewrite versions for which the provided version is a substring", function()
167 local expected = 'a/b/lua/5.3/?.lua;a/b/c/lua/5.3.4/?.lua'
168 local result = core_util.cleanup_path('a/b/lua/5.2/?.lua;a/b/c/lua/5.3.4/?.lua', ';', '5.3')
169 assert.are.equal(expected, result)
170 end)
171 end)
158end) 172end)
diff --git a/src/luarocks/core/util.lua b/src/luarocks/core/util.lua
index daec9d05..5f5c0fe1 100644
--- a/src/luarocks/core/util.lua
+++ b/src/luarocks/core/util.lua
@@ -166,7 +166,11 @@ function util.cleanup_path(list, sep, lua_version)
166 for _, part in ipairs(parts) do 166 for _, part in ipairs(parts) do
167 part = part:gsub("//", "/") 167 part = part:gsub("//", "/")
168 if lua_version then 168 if lua_version then
169 part = part:gsub("/lua/[%d.]+/", "/lua/"..lua_version.."/") 169 part = part:gsub("/lua/([%d.]+)/", function(part_version)
170 if part_version:sub(1, #lua_version) ~= lua_version then
171 return "/lua/"..lua_version.."/"
172 end
173 end)
170 end 174 end
171 if not entries[part] then 175 if not entries[part] then
172 table.insert(final, part) 176 table.insert(final, part)