aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/test.lua
diff options
context:
space:
mode:
authorGravatar mitchell <70453897+orbitalquark@users.noreply.github.com>2021-01-22 15:57:13 -0500
committerGravatar mitchell <70453897+orbitalquark@users.noreply.github.com>2021-01-22 15:57:13 -0500
commiteec43aaccb3222c838091ac4eb8f8780d921d4cc (patch)
tree3cd59fdbf211b02dfa71ca03a3adb9cb7a3d4260 /test/test.lua
parentc5aa8f8dec9611828b6972bc1a72cc8571eab36a (diff)
`io.get_project_root()` accepts an optional flag for returning a submodule root.
This is for systems like git that have '.git' files (not directories) for submodules under a parent '.git' directory.
Diffstat (limited to 'test/test.lua')
-rw-r--r--test/test.lua14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/test.lua b/test/test.lua
index 8503615d..e3fb296b 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -521,6 +521,20 @@ function test_file_io_get_project_root()
assert_equal(io.get_project_root(_HOME .. '/core'), _HOME)
assert_equal(io.get_project_root(_HOME .. '/core/init.lua'), _HOME)
assert_equal(io.get_project_root('/tmp'), nil)
+ lfs.chdir(cwd)
+
+ -- Test git submodules.
+ local dir = os.tmpname()
+ os.remove(dir)
+ lfs.mkdir(dir)
+ lfs.mkdir(dir .. '/.git')
+ lfs.mkdir(dir .. '/foo')
+ io.open(dir .. '/foo/.git', 'w'):write():close() -- simulate submodule
+ assert_equal(io.get_project_root(dir .. '/foo/bar.txt'), dir)
+ io.open_file(dir .. '/foo/bar.txt')
+ assert_equal(io.get_project_root(true), dir .. '/foo')
+ buffer:close()
+ os.execute('rm -r ' .. dir)
assert_raises(function() io.get_project_root(1) end, 'string/nil expected, got number')
end