diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2023-11-29 22:39:54 +0000 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2023-11-29 22:39:54 +0000 |
commit | 21cb7d04c387e4198ca8098a884c78b56ffcf4c2 (patch) | |
tree | 84fe5690df1551f0bb2bdfe1a13aacd29ebc1de7 /test/unit/os/fs_spec.lua | |
parent | d9c904f85a23a496df4eb6be42aa43f007b22d50 (diff) | |
parent | 4a8bf24ac690004aedf5540fa440e788459e5e34 (diff) | |
download | rneovim-colorcolchar.tar.gz rneovim-colorcolchar.tar.bz2 rneovim-colorcolchar.zip |
Merge remote-tracking branch 'upstream/master' into colorcolcharcolorcolchar
Diffstat (limited to 'test/unit/os/fs_spec.lua')
-rw-r--r-- | test/unit/os/fs_spec.lua | 128 |
1 files changed, 67 insertions, 61 deletions
diff --git a/test/unit/os/fs_spec.lua b/test/unit/os/fs_spec.lua index c718244ea4..8f45d2b0c7 100644 --- a/test/unit/os/fs_spec.lua +++ b/test/unit/os/fs_spec.lua @@ -1,4 +1,4 @@ -local lfs = require('lfs') +local luv = require('luv') local bit = require('bit') local helpers = require('test.unit.helpers')(after_each) @@ -16,14 +16,12 @@ local to_cstr = helpers.to_cstr local OK = helpers.OK local FAIL = helpers.FAIL local NULL = helpers.NULL +local mkdir = helpers.mkdir +local endswith = helpers.endswith local NODE_NORMAL = 0 local NODE_WRITABLE = 1 -cimport('./src/nvim/os/shell.h') -cimport('./src/nvim/option_defs.h') -cimport('./src/nvim/main.h') -cimport('./src/nvim/fileio.h') local fs = cimport('./src/nvim/os/os.h', './src/nvim/path.h') cppimport('sys/stat.h') cppimport('fcntl.h') @@ -48,11 +46,11 @@ local function unset_bit(number, to_unset) end local function assert_file_exists(filepath) - neq(nil, lfs.attributes(filepath)) + neq(nil, luv.fs_stat(filepath)) end local function assert_file_does_not_exist(filepath) - eq(nil, lfs.attributes(filepath)) + eq(nil, luv.fs_stat(filepath)) end local function os_setperm(filename, perm) @@ -70,14 +68,14 @@ describe('fs.c', function() end before_each(function() - lfs.mkdir('unit-test-directory'); + mkdir('unit-test-directory'); io.open('unit-test-directory/test.file', 'w'):close() io.open('unit-test-directory/test_2.file', 'w'):close() - lfs.link('test.file', 'unit-test-directory/test_link.file', true) + luv.fs_symlink('test.file', 'unit-test-directory/test_link.file') - lfs.link('non_existing_file.file', 'unit-test-directory/test_broken_link.file', true) + luv.fs_symlink('non_existing_file.file', 'unit-test-directory/test_broken_link.file') -- The tests are invoked with an absolute path to `busted` executable. absolute_executable = arg[0] -- Split the absolute_executable path into a directory and filename. @@ -90,19 +88,19 @@ describe('fs.c', function() os.remove('unit-test-directory/test_link.file') os.remove('unit-test-directory/test_hlink.file') os.remove('unit-test-directory/test_broken_link.file') - lfs.rmdir('unit-test-directory') + luv.fs_rmdir('unit-test-directory') end) describe('os_dirname', function() itp('returns OK and writes current directory to the buffer', function() - local length = string.len(lfs.currentdir()) + 1 + local length = string.len(luv.cwd()) + 1 local buf = cstr(length, '') eq(OK, fs.os_dirname(buf, length)) - eq(lfs.currentdir(), ffi.string(buf)) + eq(luv.cwd(), ffi.string(buf)) end) itp('returns FAIL if the buffer is too small', function() - local length = string.len(lfs.currentdir()) + 1 + local length = string.len(luv.cwd()) + 1 local buf = cstr(length - 1, '') eq(FAIL, fs.os_dirname(buf, length - 1)) end) @@ -203,20 +201,20 @@ describe('fs.c', function() end) itp('returns the absolute path when given an executable relative to the current dir', function() - local old_dir = lfs.currentdir() + local old_dir = luv.cwd() - lfs.chdir(directory) + luv.chdir(directory) -- Rely on currentdir to resolve symlinks, if any. Testing against -- the absolute path taken from arg[0] may result in failure where -- the path has a symlink in it. - local canonical = lfs.currentdir() .. '/' .. executable_name + local canonical = luv.cwd() .. '/' .. executable_name local expected = exe(canonical) local relative_executable = './' .. executable_name local res = exe(relative_executable) -- Don't test yet; we need to chdir back first. - lfs.chdir(old_dir) + luv.chdir(old_dir) eq(expected, res) end) end) @@ -278,11 +276,11 @@ describe('fs.c', function() describe('os_fchown', function() local filename = 'unit-test-directory/test.file' itp('does not change owner and group if respective IDs are equal to -1', function() - local uid = lfs.attributes(filename, 'uid') - local gid = lfs.attributes(filename, 'gid') + local uid = luv.fs_stat(filename).uid + local gid = luv.fs_stat(filename).gid eq(0, os_fchown(filename, -1, -1)) - eq(uid, lfs.attributes(filename, 'uid')) - return eq(gid, lfs.attributes(filename, 'gid')) + eq(uid, luv.fs_stat(filename).uid) + return eq(gid, luv.fs_stat(filename).gid) end) -- Some systems may not have `id` utility. @@ -290,7 +288,7 @@ describe('fs.c', function() pending('skipped (missing `id` utility)', function() end) else itp('owner of a file may change the group of the file to any group of which that owner is a member', function() - local file_gid = lfs.attributes(filename, 'gid') + local file_gid = luv.fs_stat(filename).gid -- Gets ID of any group of which current user is a member except the -- group that owns the file. @@ -305,7 +303,7 @@ describe('fs.c', function() -- In that case we can not perform this test. if new_gid then eq(0, (os_fchown(filename, -1, new_gid))) - eq(new_gid, (lfs.attributes(filename, 'gid'))) + eq(new_gid, luv.fs_stat(filename).gid) end end) end @@ -548,7 +546,7 @@ describe('fs.c', function() --create the file local fd = os_open(new_file, ffi.C.kO_CREAT, tonumber("700", 8)) --verify permissions - eq('rwx------', lfs.attributes(new_file)['permissions']) + eq(33216, luv.fs_stat(new_file).mode) eq(0, os_close(fd)) end) @@ -557,7 +555,7 @@ describe('fs.c', function() --create the file local fd = os_open(new_file, ffi.C.kO_CREAT, tonumber("600", 8)) --verify permissions - eq('rw-------', lfs.attributes(new_file)['permissions']) + eq(33152, luv.fs_stat(new_file).mode) eq(0, os_close(fd)) end) @@ -747,12 +745,17 @@ describe('fs.c', function() local function os_mkdir_recurse(path, mode) local failed_str = ffi.new('char *[1]', {nil}) - local ret = fs.os_mkdir_recurse(path, mode, failed_str) - local str = failed_str[0] - if str ~= nil then - str = ffi.string(str) + local created_str = ffi.new('char *[1]', {nil}) + local ret = fs.os_mkdir_recurse(path, mode, failed_str, created_str) + local failed_dir = failed_str[0] + if failed_dir ~= nil then + failed_dir = ffi.string(failed_dir) end - return ret, str + local created_dir = created_str[0] + if created_dir ~= nil then + created_dir = ffi.string(created_dir) + end + return ret, failed_dir, created_dir end describe('os_mkdir', function() @@ -766,81 +769,88 @@ describe('fs.c', function() eq(false, (os_isdir('unit-test-directory/new-dir'))) eq(0, (os_mkdir('unit-test-directory/new-dir', mode))) eq(true, (os_isdir('unit-test-directory/new-dir'))) - lfs.rmdir('unit-test-directory/new-dir') + luv.fs_rmdir('unit-test-directory/new-dir') end) end) describe('os_mkdir_recurse', function() itp('returns zero when given an already existing directory', function() local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR - local ret, failed_str = os_mkdir_recurse('unit-test-directory', mode) + local ret, failed_dir, created_dir = os_mkdir_recurse('unit-test-directory', mode) eq(0, ret) - eq(nil, failed_str) + eq(nil, failed_dir) + eq(nil, created_dir) end) itp('fails to create a directory where there is a file', function() local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR - local ret, failed_str = os_mkdir_recurse( + local ret, failed_dir, created_dir = os_mkdir_recurse( 'unit-test-directory/test.file', mode) neq(0, ret) - eq('unit-test-directory/test.file', failed_str) + eq('unit-test-directory/test.file', failed_dir) + eq(nil, created_dir) end) itp('fails to create a directory where there is a file in path', function() local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR - local ret, failed_str = os_mkdir_recurse( + local ret, failed_dir, created_dir = os_mkdir_recurse( 'unit-test-directory/test.file/test', mode) neq(0, ret) - eq('unit-test-directory/test.file', failed_str) + eq('unit-test-directory/test.file', failed_dir) + eq(nil, created_dir) end) itp('succeeds to create a directory', function() local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR - local ret, failed_str = os_mkdir_recurse( + local ret, failed_dir, created_dir = os_mkdir_recurse( 'unit-test-directory/new-dir-recurse', mode) eq(0, ret) - eq(nil, failed_str) + eq(nil, failed_dir) + ok(endswith(created_dir, 'unit-test-directory/new-dir-recurse')) eq(true, os_isdir('unit-test-directory/new-dir-recurse')) - lfs.rmdir('unit-test-directory/new-dir-recurse') + luv.fs_rmdir('unit-test-directory/new-dir-recurse') eq(false, os_isdir('unit-test-directory/new-dir-recurse')) end) itp('succeeds to create a directory ending with ///', function() local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR - local ret, failed_str = os_mkdir_recurse( + local ret, failed_dir, created_dir = os_mkdir_recurse( 'unit-test-directory/new-dir-recurse///', mode) eq(0, ret) - eq(nil, failed_str) + eq(nil, failed_dir) + ok(endswith(created_dir, 'unit-test-directory/new-dir-recurse')) eq(true, os_isdir('unit-test-directory/new-dir-recurse')) - lfs.rmdir('unit-test-directory/new-dir-recurse') + luv.fs_rmdir('unit-test-directory/new-dir-recurse') eq(false, os_isdir('unit-test-directory/new-dir-recurse')) end) itp('succeeds to create a directory ending with /', function() local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR - local ret, failed_str = os_mkdir_recurse( + local ret, failed_dir, created_dir = os_mkdir_recurse( 'unit-test-directory/new-dir-recurse/', mode) eq(0, ret) - eq(nil, failed_str) + eq(nil, failed_dir) + ok(endswith(created_dir, 'unit-test-directory/new-dir-recurse')) eq(true, os_isdir('unit-test-directory/new-dir-recurse')) - lfs.rmdir('unit-test-directory/new-dir-recurse') + luv.fs_rmdir('unit-test-directory/new-dir-recurse') eq(false, os_isdir('unit-test-directory/new-dir-recurse')) end) itp('succeeds to create a directory tree', function() local mode = ffi.C.kS_IRUSR + ffi.C.kS_IWUSR + ffi.C.kS_IXUSR - local ret, failed_str = os_mkdir_recurse( + local ret, failed_dir, created_dir = os_mkdir_recurse( 'unit-test-directory/new-dir-recurse/1/2/3', mode) eq(0, ret) - eq(nil, failed_str) + eq(nil, failed_dir) + ok(endswith(created_dir, 'unit-test-directory/new-dir-recurse')) eq(true, os_isdir('unit-test-directory/new-dir-recurse')) eq(true, os_isdir('unit-test-directory/new-dir-recurse/1')) eq(true, os_isdir('unit-test-directory/new-dir-recurse/1/2')) eq(true, os_isdir('unit-test-directory/new-dir-recurse/1/2/3')) - lfs.rmdir('unit-test-directory/new-dir-recurse/1/2/3') - lfs.rmdir('unit-test-directory/new-dir-recurse/1/2') - lfs.rmdir('unit-test-directory/new-dir-recurse/1') - lfs.rmdir('unit-test-directory/new-dir-recurse') + luv.fs_rmdir('unit-test-directory/new-dir-recurse/1/2/3') + luv.fs_rmdir('unit-test-directory/new-dir-recurse/1/2') + luv.fs_rmdir('unit-test-directory/new-dir-recurse/1') + luv.fs_rmdir('unit-test-directory/new-dir-recurse') eq(false, os_isdir('unit-test-directory/new-dir-recurse')) end) end) @@ -851,7 +861,7 @@ describe('fs.c', function() end) itp('removes the given directory and returns 0', function() - lfs.mkdir('unit-test-directory/new-dir') + mkdir('unit-test-directory/new-dir') eq(0, os_rmdir('unit-test-directory/new-dir')) eq(false, (os_isdir('unit-test-directory/new-dir'))) end) @@ -1005,7 +1015,7 @@ describe('fs.c', function() file:write('some bytes to get filesize != 0') file:flush() file:close() - local size = lfs.attributes(path, 'size') + local size = luv.fs_stat(path).size local info = file_info_new() assert.is_true(fs.os_fileinfo(path, info)) eq(size, fs.os_fileinfo_size(info)) @@ -1019,7 +1029,7 @@ describe('fs.c', function() local info = file_info_new() assert.is_true(fs.os_fileinfo(path, info)) eq(1, fs.os_fileinfo_hardlinks(info)) - lfs.link(path, path_link) + luv.fs_link(path, path_link) assert.is_true(fs.os_fileinfo(path, info)) eq(2, fs.os_fileinfo_hardlinks(info)) end) @@ -1028,11 +1038,7 @@ describe('fs.c', function() describe('os_fileinfo_blocksize', function() itp('returns the correct blocksize of a file', function() local path = 'unit-test-directory/test.file' - -- there is a bug in luafilesystem where - -- `lfs.attributes path, 'blksize'` returns the wrong value: - -- https://github.com/keplerproject/luafilesystem/pull/44 - -- using this workaround for now: - local blksize = lfs.attributes(path).blksize + local blksize = luv.fs_stat(path).blksize local info = file_info_new() assert.is_true(fs.os_fileinfo(path, info)) if blksize then |