aboutsummaryrefslogtreecommitdiff
path: root/test/unit
diff options
context:
space:
mode:
authorJoey Gouly <joey.gouly@gmail.com>2024-04-13 04:25:55 +0100
committerGitHub <noreply@github.com>2024-04-13 11:25:55 +0800
commitf064e72b9b9cc89059638f00876353d5a1b30c21 (patch)
treedb8e03c0b541d7c77b1962c391ab604f3d3be7df /test/unit
parent780509aedf5c914d1615d57019485ef85c16f669 (diff)
downloadrneovim-f064e72b9b9cc89059638f00876353d5a1b30c21.tar.gz
rneovim-f064e72b9b9cc89059638f00876353d5a1b30c21.tar.bz2
rneovim-f064e72b9b9cc89059638f00876353d5a1b30c21.zip
fix(path): check return value of append_path() (#28309)
If the filename passed to vim_FullName() is a relative directory, and does not exist, it is appended to the current working directory. Since the return value of append_path() was ignored, and if the buffer length was too small to fit getcwd() + dirname(filename), it would still try to append the basename(filename). This was manifesting as a failure in test/unit/path_spec.lua in: itp('fails and uses filename if given filename contains non-existing directory', .. This failure occurs when running the tests from directory with a short path such as: /work/src/nv test/unit/path_spec.lua:420: Expected objects to be the same. Passed in: (string) '/work/src/nv/test.file' Expected: (string) 'non_existing_dir/test.file' This return value for the second call to append_path() to append basename(filename) was checked, and this is where it would fail for normal / longer getcwd()s.
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/path_spec.lua15
1 files changed, 9 insertions, 6 deletions
diff --git a/test/unit/path_spec.lua b/test/unit/path_spec.lua
index 8df6a52cd1..44919368bf 100644
--- a/test/unit/path_spec.lua
+++ b/test/unit/path_spec.lua
@@ -413,12 +413,15 @@ describe('path.c', function()
end)
itp('fails and uses filename if given filename contains non-existing directory', function()
- local filename = 'non_existing_dir/test.file'
- local buflen = string.len(filename) + 1
- local do_expand = 1
- local buf, result = vim_FullName(filename, buflen, do_expand)
- eq(filename, ffi.string(buf))
- eq(FAIL, result)
+ -- test with different filename lengths
+ for rep = 1, 10 do
+ local filename = ('non_existing_'):rep(rep) .. 'dir/test.file'
+ local buflen = string.len(filename) + 1
+ local do_expand = 1
+ local buf, result = vim_FullName(filename, buflen, do_expand)
+ eq(filename, ffi.string(buf))
+ eq(FAIL, result)
+ end
end)
itp('concatenates filename if it does not contain a slash', function()