diff options
author | ZyX <kp-pav@yandex.ru> | 2017-03-19 19:16:44 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2017-03-19 19:16:44 +0300 |
commit | ae4fae9d3efaa3be219f1e5646be1a7745c758ac (patch) | |
tree | 5b5e0ef9a36d2ac18631a1abb27315c091c45164 | |
parent | 7df4fc894183f19f61242706119ffd2c96016b54 (diff) | |
download | rneovim-ae4fae9d3efaa3be219f1e5646be1a7745c758ac.tar.gz rneovim-ae4fae9d3efaa3be219f1e5646be1a7745c758ac.tar.bz2 rneovim-ae4fae9d3efaa3be219f1e5646be1a7745c758ac.zip |
unittests: Add tests for new fileio functions
-rw-r--r-- | test/unit/os/fileio_spec.lua | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/test/unit/os/fileio_spec.lua b/test/unit/os/fileio_spec.lua index 7a738ce85c..eaccdcb2a2 100644 --- a/test/unit/os/fileio_spec.lua +++ b/test/unit/os/fileio_spec.lua @@ -6,8 +6,10 @@ local itp = helpers.gen_itp(it) local eq = helpers.eq local ffi = helpers.ffi local cimport = helpers.cimport +local cppimport = helpers.cppimport -local m = cimport('./src/nvim/os/fileio.h') +local m = cimport('./src/nvim/os/os.h', './src/nvim/os/fileio.h') +cppimport('fcntl.h') local fcontents = '' for i = 0, 255 do @@ -58,6 +60,18 @@ local function file_open_new(fname, flags, mode) return ret1[0], ret2 end +local function file_open_fd(fd, flags, mode) + local ret2 = ffi.new('FileDescriptor') + local ret1 = m.file_open_fd(ret2, fd, flags, mode) + return ret1, ret2 +end + +local function file_open_fd_new(fd, flags, mode) + local ret1 = ffi.new('int[?]', 1, {0}) + local ret2 = ffi.gc(m.file_open_fd_new(ret1, fd, flags, mode), nil) + return ret1[0], ret2 +end + local function file_write(fp, buf) return m.file_write(fp, buf, #buf) end @@ -88,6 +102,46 @@ local function file_skip(fp, size) return m.file_skip(fp, size) end +describe('file_open_fd', function() + itp('can use file descriptor returned by os_open for reading', function() + local fd = m.os_open(file1, m.kO_RDONLY, 0) + local err, fp = file_open_fd(fd, m.kFileReadOnly, 0) + eq(0, err) + eq({#fcontents, fcontents}, {file_read(fp, #fcontents)}) + eq(0, m.file_close(fp)) + end) + itp('can use file descriptor returned by os_open for writing', function() + eq(nil, lfs.attributes(filec)) + local fd = m.os_open(filec, m.kO_WRONLY + m.kO_CREAT, 384) + local err, fp = file_open_fd(fd, m.kFileWriteOnly, 0) + eq(0, err) + eq(4, file_write(fp, 'test')) + eq(0, m.file_close(fp)) + eq(4, lfs.attributes(filec).size) + eq('test', io.open(filec):read('*a')) + end) +end) + +describe('file_open_fd_new', function() + itp('can use file descriptor returned by os_open for reading', function() + local fd = m.os_open(file1, m.kO_RDONLY, 0) + local err, fp = file_open_fd_new(fd, m.kFileReadOnly, 0) + eq(0, err) + eq({#fcontents, fcontents}, {file_read(fp, #fcontents)}) + eq(0, m.file_free(fp)) + end) + itp('can use file descriptor returned by os_open for writing', function() + eq(nil, lfs.attributes(filec)) + local fd = m.os_open(filec, m.kO_WRONLY + m.kO_CREAT, 384) + local err, fp = file_open_fd_new(fd, m.kFileWriteOnly, 0) + eq(0, err) + eq(4, file_write(fp, 'test')) + eq(0, m.file_free(fp)) + eq(4, lfs.attributes(filec).size) + eq('test', io.open(filec):read('*a')) + end) +end) + describe('file_open', function() itp('can create a rwx------ file with kFileCreate', function() local err, fp = file_open(filec, m.kFileCreate, 448) |