mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
unittest: convert users_spec.moon to lua
This commit is contained in:
parent
df50d242f5
commit
d74ae5be9d
91
test/unit/os/users_spec.lua
Normal file
91
test/unit/os/users_spec.lua
Normal file
@ -0,0 +1,91 @@
|
||||
local helpers = require('test.unit.helpers')
|
||||
|
||||
local cimport = helpers.cimport
|
||||
local internalize = helpers.internalize
|
||||
local eq = helpers.eq
|
||||
local ffi = helpers.ffi
|
||||
local lib = helpers.lib
|
||||
local cstr = helpers.cstr
|
||||
local NULL = helpers.NULL
|
||||
local OK = helpers.OK
|
||||
local FAIL = helpers.FAIL
|
||||
|
||||
local users = cimport('./src/nvim/os/os.h', 'unistd.h')
|
||||
|
||||
function garray_new()
|
||||
return ffi.new('garray_T[1]')
|
||||
end
|
||||
|
||||
function garray_get_len(array)
|
||||
return array[0].ga_len
|
||||
end
|
||||
|
||||
function garray_get_item(array, index)
|
||||
return (ffi.cast('void **', array[0].ga_data))[index]
|
||||
end
|
||||
|
||||
describe('users function', function()
|
||||
-- will probably not work on windows
|
||||
local current_username = os.getenv('USER')
|
||||
|
||||
describe('os_get_usernames', function()
|
||||
it('returns FAIL if called with NULL', function()
|
||||
eq(FAIL, users.os_get_usernames(NULL))
|
||||
end)
|
||||
|
||||
it('fills the names garray with os usernames and returns OK', function()
|
||||
local ga_users = garray_new()
|
||||
eq(OK, users.os_get_usernames(ga_users))
|
||||
local user_count = garray_get_len(ga_users)
|
||||
assert.is_true(user_count > 0)
|
||||
local current_username_found = false
|
||||
for i = 0, user_count - 1 do
|
||||
local name = ffi.string((garray_get_item(ga_users, i)))
|
||||
if name == current_username then
|
||||
current_username_found = true
|
||||
end
|
||||
end
|
||||
assert.is_true(current_username_found)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('os_get_user_name', function()
|
||||
it('should write the username into the buffer and return OK', function()
|
||||
local name_out = ffi.new('char[100]')
|
||||
eq(OK, users.os_get_user_name(name_out, 100))
|
||||
eq(current_username, ffi.string(name_out))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('os_get_uname', function()
|
||||
it('should write the username into the buffer and return OK', function()
|
||||
local name_out = ffi.new('char[100]')
|
||||
local user_id = lib.getuid()
|
||||
eq(OK, users.os_get_uname(user_id, name_out, 100))
|
||||
eq(current_username, ffi.string(name_out))
|
||||
end)
|
||||
|
||||
it('should FAIL if the userid is not found', function()
|
||||
local name_out = ffi.new('char[100]')
|
||||
-- hoping nobody has this uid
|
||||
local user_id = 2342
|
||||
eq(FAIL, users.os_get_uname(user_id, name_out, 100))
|
||||
eq('2342', ffi.string(name_out))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('os_get_user_directory', function()
|
||||
it('should return NULL if called with NULL', function()
|
||||
eq(NULL, users.os_get_user_directory(NULL))
|
||||
end)
|
||||
|
||||
it('should return $HOME for the current user', function()
|
||||
local home = os.getenv('HOME')
|
||||
eq(home, ffi.string((users.os_get_user_directory(current_username))))
|
||||
end)
|
||||
|
||||
it('should return NULL if the user is not found', function()
|
||||
eq(NULL, users.os_get_user_directory('neovim_user_not_found_test'))
|
||||
end)
|
||||
end)
|
||||
end)
|
@ -1,70 +0,0 @@
|
||||
{:cimport, :internalize, :eq, :ffi, :lib, :cstr, :NULL, :OK, :FAIL} = require 'test.unit.helpers'
|
||||
|
||||
users = cimport './src/nvim/os/os.h', 'unistd.h'
|
||||
|
||||
garray_new = () ->
|
||||
ffi.new 'garray_T[1]'
|
||||
|
||||
garray_get_len = (array) ->
|
||||
array[0].ga_len
|
||||
|
||||
garray_get_item = (array, index) ->
|
||||
(ffi.cast 'void **', array[0].ga_data)[index]
|
||||
|
||||
|
||||
describe 'users function', ->
|
||||
|
||||
-- will probably not work on windows
|
||||
current_username = os.getenv 'USER'
|
||||
|
||||
describe 'os_get_usernames', ->
|
||||
|
||||
it 'returns FAIL if called with NULL', ->
|
||||
eq FAIL, users.os_get_usernames NULL
|
||||
|
||||
it 'fills the names garray with os usernames and returns OK', ->
|
||||
ga_users = garray_new!
|
||||
eq OK, users.os_get_usernames ga_users
|
||||
user_count = garray_get_len ga_users
|
||||
assert.is_true user_count > 0
|
||||
current_username_found = false
|
||||
for i = 0, user_count - 1
|
||||
name = ffi.string (garray_get_item ga_users, i)
|
||||
if name == current_username
|
||||
current_username_found = true
|
||||
assert.is_true current_username_found
|
||||
|
||||
describe 'os_get_user_name', ->
|
||||
|
||||
it 'should write the username into the buffer and return OK', ->
|
||||
name_out = ffi.new 'char[100]'
|
||||
eq OK, users.os_get_user_name(name_out, 100)
|
||||
eq current_username, ffi.string name_out
|
||||
|
||||
describe 'os_get_uname', ->
|
||||
|
||||
it 'should write the username into the buffer and return OK', ->
|
||||
name_out = ffi.new 'char[100]'
|
||||
user_id = lib.getuid!
|
||||
eq OK, users.os_get_uname(user_id, name_out, 100)
|
||||
eq current_username, ffi.string name_out
|
||||
|
||||
it 'should FAIL if the userid is not found', ->
|
||||
name_out = ffi.new 'char[100]'
|
||||
-- hoping nobody has this uid
|
||||
user_id = 2342
|
||||
eq FAIL, users.os_get_uname(user_id, name_out, 100)
|
||||
eq '2342', ffi.string name_out
|
||||
|
||||
describe 'os_get_user_directory', ->
|
||||
|
||||
it 'should return NULL if called with NULL', ->
|
||||
eq NULL, users.os_get_user_directory NULL
|
||||
|
||||
it 'should return $HOME for the current user', ->
|
||||
home = os.getenv('HOME')
|
||||
eq home, ffi.string (users.os_get_user_directory current_username)
|
||||
|
||||
it 'should return NULL if the user is not found', ->
|
||||
eq NULL, users.os_get_user_directory 'neovim_user_not_found_test'
|
||||
|
Loading…
Reference in New Issue
Block a user