From 2c4ff5240bf298fec07749f5984de2f08b8736ec Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Tue, 20 Feb 2024 13:43:44 -0300 Subject: fix: better normalization for paths and slashes Fixes #1195. --- spec/dir_spec.lua | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'spec/dir_spec.lua') diff --git a/spec/dir_spec.lua b/spec/dir_spec.lua index f6ef172e..b5dadda8 100644 --- a/spec/dir_spec.lua +++ b/spec/dir_spec.lua @@ -1,5 +1,6 @@ local test_env = require("spec.util.test_env") local testing_paths = test_env.testing_paths +local P = test_env.P test_env.unload_luarocks() test_env.setup_specs() @@ -45,26 +46,26 @@ describe("luarocks.dir #unit", function() describe("dir.normalize", function() it("converts backslashes and removes trailing slashes", function() - assert.are.same("/foo/ovo", dir.normalize("\\foo\\ovo\\")) - assert.are.same("c:/some/dir", dir.normalize("c:\\..\\some\\foo\\..\\dir")) + assert.are.same(P"/foo/ovo", dir.normalize("\\foo\\ovo\\")) + assert.are.same(P"c:/some/dir", dir.normalize("c:\\..\\some\\foo\\..\\dir")) assert.are.same("http://example.com/foo/ovo", dir.normalize("http://example.com/foo\\ovo\\")) end) it("strips unneeded /../ and /./", function() - assert.are.same("/some/dir/file.txt", dir.normalize("/../../../some/./foo/bar/.././../dir/bla/../file.txt")) - assert.are.same("/some/dir/file.txt", dir.normalize("/../../../some/./foo/bar/.././../dir/bla/../file.txt")) - assert.are.same("/some/dir", dir.normalize("/../../../some/./foo/bar/.././../dir/./some/subdir/../..")) - assert.are.same("/some/dir", dir.normalize("/../../../some/./foo/bar/.././../dir/./.")) + assert.are.same(P"/some/dir/file.txt", dir.normalize("/../../../some/./foo/bar/.././../dir/bla/../file.txt")) + assert.are.same(P"/some/dir/file.txt", dir.normalize("/../../../some/./foo/bar/.././../dir/bla/../file.txt")) + assert.are.same(P"/some/dir", dir.normalize("/../../../some/./foo/bar/.././../dir/./some/subdir/../..")) + assert.are.same(P"/some/dir", dir.normalize("/../../../some/./foo/bar/.././../dir/./.")) end) it("respects relative paths", function() - assert.are.same(".", dir.normalize(".")) - assert.are.same("boo", dir.normalize("./boo")) - assert.are.same("/boo", dir.normalize("/./boo")) - assert.are.same("../../../../boo", dir.normalize("../../../hello/world/../../../boo")) + assert.are.same(P".", dir.normalize(".")) + assert.are.same(P"boo", dir.normalize("./boo")) + assert.are.same(P"/boo", dir.normalize("/./boo")) + assert.are.same(P"../../../../boo", dir.normalize("../../../hello/world/../../../boo")) end) it("respects root directory", function() - assert.are.same("/", dir.normalize("/")) - assert.are.same("/", dir.normalize("/////")) - assert.are.same("/", dir.normalize("/a/b/.././../c/./../../")) + assert.are.same(P"/", dir.normalize("/")) + assert.are.same(P"/", dir.normalize("/////")) + assert.are.same(P"/", dir.normalize("/a/b/.././../c/./../../")) end) end) -- cgit v1.2.3-55-g6feb