12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- local t = require('test.unit.testutil')
- local itp = t.gen_itp(it)
- local cimport = t.cimport
- local eq = t.eq
- local ffi = t.ffi
- local lib = t.lib
- local NULL = t.NULL
- local OK = t.OK
- local FAIL = t.FAIL
- local users = cimport('./src/nvim/os/os.h', 'unistd.h')
- local function garray_new()
- return ffi.new('garray_T[1]')
- end
- local function garray_get_len(array)
- return array[0].ga_len
- end
- local 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()
- itp('returns FAIL if called with NULL', function()
- eq(FAIL, users.os_get_usernames(NULL))
- end)
- itp('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_username', function()
- itp('should write the username into the buffer and return OK', function()
- local name_out = ffi.new('char[100]')
- eq(OK, users.os_get_username(name_out, 100))
- eq(current_username, ffi.string(name_out))
- end)
- end)
- describe('os_get_uname', function()
- itp('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)
- itp('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_userdir', function()
- itp('should return NULL if called with NULL', function()
- eq(NULL, users.os_get_userdir(NULL))
- end)
- itp('should return $HOME for the current user', function()
- local home = os.getenv('HOME')
- eq(home, ffi.string((users.os_get_userdir(current_username))))
- end)
- itp('should return NULL if the user is not found', function()
- eq(NULL, users.os_get_userdir('neovim_user_not_found_test'))
- end)
- end)
- end)
|