aboutsummaryrefslogtreecommitdiff
path: root/test/unit/os/fileio_spec.lua
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-07-15 18:56:45 +0300
committerZyX <kp-pav@yandex.ru>2017-07-15 18:56:45 +0300
commit69719e658c48bb5e95a7b57d5813ed4dc48e68e3 (patch)
treec4f8584a7437ea6127389b26ff6876404cb58ce7 /test/unit/os/fileio_spec.lua
parent7ab152aaa58f493e54d03a15960b8a288196e588 (diff)
parent8898793adeb3a82fe50da4258c30940e10ebcc9d (diff)
downloadrneovim-69719e658c48bb5e95a7b57d5813ed4dc48e68e3.tar.gz
rneovim-69719e658c48bb5e95a7b57d5813ed4dc48e68e3.tar.bz2
rneovim-69719e658c48bb5e95a7b57d5813ed4dc48e68e3.zip
Merge branch 'master' into colored-cmdline
Diffstat (limited to 'test/unit/os/fileio_spec.lua')
-rw-r--r--test/unit/os/fileio_spec.lua72
1 files changed, 71 insertions, 1 deletions
diff --git a/test/unit/os/fileio_spec.lua b/test/unit/os/fileio_spec.lua
index e3c8e616ce..d9c98e8afa 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,10 +60,26 @@ local function file_open_new(fname, flags, mode)
return ret1[0], ret2
end
+local function file_open_fd(fd, flags)
+ local ret2 = ffi.new('FileDescriptor')
+ local ret1 = m.file_open_fd(ret2, fd, flags)
+ return ret1, ret2
+end
+
+local function file_open_fd_new(fd, flags)
+ local ret1 = ffi.new('int[?]', 1, {0})
+ local ret2 = ffi.gc(m.file_open_fd_new(ret1, fd, flags), nil)
+ return ret1[0], ret2
+end
+
local function file_write(fp, buf)
return m.file_write(fp, buf, #buf)
end
+local function msgpack_file_write(fp, buf)
+ return m.msgpack_file_write(fp, buf, #buf)
+end
+
local function file_read(fp, size)
local buf = nil
if size == nil then
@@ -92,6 +110,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, false)
+ eq(0, err)
+ eq({#fcontents, fcontents}, {file_read(fp, #fcontents)})
+ eq(0, m.file_close(fp, false))
+ 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, true)
+ eq(0, err)
+ eq(4, file_write(fp, 'test'))
+ eq(0, m.file_close(fp, false))
+ 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, false)
+ eq(0, err)
+ eq({#fcontents, fcontents}, {file_read(fp, #fcontents)})
+ eq(0, m.file_free(fp, false))
+ 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, true)
+ eq(0, err)
+ eq(4, file_write(fp, 'test'))
+ eq(0, m.file_free(fp, false))
+ 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)
@@ -393,6 +451,18 @@ describe('file_write', function()
end)
end)
+describe('msgpack_file_write', function()
+ itp('can write the whole file at once', function()
+ local err, fp = file_open(filec, m.kFileCreateOnly, 384)
+ eq(0, err)
+ eq(true, fp.wr)
+ local wr = msgpack_file_write(fp, fcontents)
+ eq(0, wr)
+ eq(0, m.file_close(fp, false))
+ eq(fcontents, io.open(filec):read('*a'))
+ end)
+end)
+
describe('file_skip', function()
itp('can skip 3 bytes', function()
local err, fp = file_open(file1, 0, 384)