aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authormitchell <70453897+orbitalquark@users.noreply.github.com>2020-10-25 00:43:25 -0400
committermitchell <70453897+orbitalquark@users.noreply.github.com>2020-10-25 00:43:25 -0400
commite82eddd9e007597e8283922653de0e5abb94c0dc (patch)
treea96d8d761ad9a28aeaf3bbc5e5718b4aa269cb41 /test
parent677b204c8fa3541b7ddfc176be69a68451436fde (diff)
downloadtextadept-e82eddd9e007597e8283922653de0e5abb94c0dc.tar.gz
textadept-e82eddd9e007597e8283922653de0e5abb94c0dc.zip
Handle recursive symlinks in `lfs.walk()`.
Diffstat (limited to 'test')
-rw-r--r--test/test.lua24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/test.lua b/test/test.lua
index ee4cbd0f..b1b4ee74 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -720,6 +720,30 @@ function test_lfs_ext_walk_win32()
_G.WIN32 = win32 -- reset just in case
end
+function test_lfs_ext_walk_symlinks()
+ local dir = os.tmpname()
+ os.remove(dir)
+ lfs.mkdir(dir)
+ lfs.mkdir(dir .. '/1')
+ io.open(dir .. '/1/foo', 'w'):close()
+ lfs.mkdir(dir .. '/1/bar')
+ io.open(dir .. '/1/bar/baz', 'w'):close()
+ lfs.link(dir .. '/1/', dir .. '/1/bar/quux', true) -- trailing '/' on purpose
+ lfs.mkdir(dir .. '/2')
+ io.open(dir .. '/2/foobar', 'w'):close()
+ lfs.link(dir .. '/2/foobar', dir .. '/2/foobaz', true)
+ lfs.link(dir .. '/2', dir .. '/1/2', true)
+ local files = {}
+ for filename in lfs.walk(dir .. '/1/') do -- trailing '/' on purpose
+ files[#files + 1] = filename
+ end
+ table.sort(files)
+ local expected_files = {dir .. '/1/foo', dir .. '/1/bar/baz', dir .. '/1/2/foobar', dir .. '/1/2/foobaz'}
+ table.sort(expected_files)
+ assert_equal(files, expected_files)
+ os.execute('rm -r ' .. dir)
+end
+
function test_lfs_ext_abs_path()
assert_equal(lfs.abspath('bar', '/foo'), '/foo/bar')
assert_equal(lfs.abspath('./bar', '/foo'), '/foo/bar')