diff options
-rw-r--r-- | test/unit/os/fs_spec.lua | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/test/unit/os/fs_spec.lua b/test/unit/os/fs_spec.lua index 9cca3ca244..c5723d20e1 100644 --- a/test/unit/os/fs_spec.lua +++ b/test/unit/os/fs_spec.lua @@ -314,10 +314,8 @@ describe('fs function', function() end) end - -- On Windows `os_fchown` always returns 0 - -- because `uv_fs_chown` is no-op on this platform. if (ffi.os == 'Windows' or ffi.C.geteuid() == 0) then - pending('skipped (os_fchown is no-op on Windows)', function() end) + pending('skipped (uv_fs_chown is no-op on Windows)', function() end) else it('returns nonzero if process has not enough permissions', function() -- chown to root @@ -327,18 +325,51 @@ describe('fs function', function() end) describe('os_file_is_readonly', function() - it('returns true if the file is readonly', function() + -- pending('returns ? if the file does not exist', function() end) + -- pending('returns ? if the path is a directory', function() end) + -- pending('returns ? if the file is executable', function() end) + + it('returns false if the file is non-read, non-write', function() + local perm = os_getperm('unit-test-directory/test.file') + perm = unset_bit(perm, ffi.C.kS_IWUSR) + perm = unset_bit(perm, ffi.C.kS_IWGRP) + perm = unset_bit(perm, ffi.C.kS_IWOTH) + perm = unset_bit(perm, ffi.C.kS_IRUSR) + perm = unset_bit(perm, ffi.C.kS_IRGRP) + perm = unset_bit(perm, ffi.C.kS_IROTH) + + eq(OK, (os_setperm('unit-test-directory/test.file', perm))) + eq(1, os_file_is_writable('unit-test-directory/test.file')) + eq(false, os_file_is_readonly('unit-test-directory/test.file')) + end) + + it('returns false if the file is write-only', function() + local perm = os_getperm('unit-test-directory/test.file') + perm = set_bit(perm, ffi.C.kS_IWUSR) + perm = set_bit(perm, ffi.C.kS_IWGRP) + perm = set_bit(perm, ffi.C.kS_IWOTH) + perm = unset_bit(perm, ffi.C.kS_IRUSR) + perm = unset_bit(perm, ffi.C.kS_IRGRP) + perm = unset_bit(perm, ffi.C.kS_IROTH) + + eq(OK, (os_setperm('unit-test-directory/test.file', perm))) + eq(1, os_file_is_writable('unit-test-directory/test.file')) + eq(false, os_file_is_readonly('unit-test-directory/test.file')) + end) + + it('returns true if the file is read-only', function() local perm = os_getperm('unit-test-directory/test.file') local perm_orig = perm perm = unset_bit(perm, ffi.C.kS_IWUSR) perm = unset_bit(perm, ffi.C.kS_IWGRP) perm = unset_bit(perm, ffi.C.kS_IWOTH) + eq(OK, (os_setperm('unit-test-directory/test.file', perm))) eq(true, os_file_is_readonly('unit-test-directory/test.file')) eq(OK, (os_setperm('unit-test-directory/test.file', perm_orig))) end) - it('returns false if the file is writable', function() + it('returns false if the file is read-write', function() eq(false, os_file_is_readonly('unit-test-directory/test.file')) end) end) |