Merge pull request #4806 from justinmk/nodetype

os_nodetype: Return NODE_NORMAL if os_stat fails.
This commit is contained in:
Justin M. Keyes 2016-05-22 15:31:03 -04:00
commit a441356858
2 changed files with 18 additions and 5 deletions

View File

@ -111,8 +111,8 @@ int os_nodetype(const char *name)
#endif #endif
uv_stat_t statbuf; uv_stat_t statbuf;
if (os_stat(name, &statbuf) == 0) { if (0 != os_stat(name, &statbuf)) {
return NODE_NORMAL; return NODE_NORMAL; // File doesn't exist.
} }
#ifndef WIN32 #ifndef WIN32

View File

@ -14,6 +14,8 @@ local to_cstr = helpers.to_cstr
local OK = helpers.OK local OK = helpers.OK
local FAIL = helpers.FAIL local FAIL = helpers.FAIL
local NULL = helpers.NULL local NULL = helpers.NULL
local NODE_NORMAL = 0
local NODE_WRITABLE = 1
cimport('unistd.h') cimport('unistd.h')
cimport('./src/nvim/os/shell.h') cimport('./src/nvim/os/shell.h')
@ -357,15 +359,12 @@ describe('fs function', function()
local function os_file_exists(filename) local function os_file_exists(filename)
return fs.os_file_exists((to_cstr(filename))) return fs.os_file_exists((to_cstr(filename)))
end end
local function os_rename(path, new_path) local function os_rename(path, new_path)
return fs.os_rename((to_cstr(path)), (to_cstr(new_path))) return fs.os_rename((to_cstr(path)), (to_cstr(new_path)))
end end
local function os_remove(path) local function os_remove(path)
return fs.os_remove((to_cstr(path))) return fs.os_remove((to_cstr(path)))
end end
local function os_open(path, flags, mode) local function os_open(path, flags, mode)
return fs.os_open((to_cstr(path)), flags, mode) return fs.os_open((to_cstr(path)), flags, mode)
end end
@ -484,6 +483,20 @@ describe('fs function', function()
assert.is_true(0 <= (os_open(existing_file, ffi.C.kO_RDWR, 0))) assert.is_true(0 <= (os_open(existing_file, ffi.C.kO_RDWR, 0)))
end) end)
end) end)
describe('os_nodetype', function()
before_each(function()
os.remove('non-existing-file')
end)
it('returns NODE_NORMAL for non-existing file', function()
eq(NODE_NORMAL, fs.os_nodetype(to_cstr('non-existing-file')))
end)
it('returns NODE_WRITABLE for /dev/stderr', function()
eq(NODE_WRITABLE, fs.os_nodetype(to_cstr('/dev/stderr')))
end)
end)
end) end)
describe('folder operations', function() describe('folder operations', function()