From eec43aaccb3222c838091ac4eb8f8780d921d4cc Mon Sep 17 00:00:00 2001 From: mitchell <70453897+orbitalquark@users.noreply.github.com> Date: Fri, 22 Jan 2021 15:57:13 -0500 Subject: `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. --- test/test.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'test') 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 -- cgit v1.2.3