From 109c70dc60b763362923549beeef312324fefba4 Mon Sep 17 00:00:00 2001 From: Nicolas Hillegeer Date: Sat, 12 Jul 2014 14:56:04 +0200 Subject: test/preprocess: always declare EXTERN Unit tests never need to declare globals, only access them. In the main code base this is handled by including "vim.h". If a file wants to declare globals (in the case of neovim that's only main.c), it #define's EXTERN and includes "vim.h". Otherwise, a file just includes "vim.h" (that's the majority case). Since we want to be able to run unit tests without including "vim.h", we predefine "EXTERN" to mean extern. That way, we don't have to include "vim.h". --- test/unit/preprocess.moon | 2 ++ 1 file changed, 2 insertions(+) (limited to 'test') diff --git a/test/unit/preprocess.moon b/test/unit/preprocess.moon index aa74b8ce24..cb734da2f7 100644 --- a/test/unit/preprocess.moon +++ b/test/unit/preprocess.moon @@ -85,6 +85,8 @@ class Gcc '-D "__asm(ARGS)="', '-D "__asm__(ARGS)="', '-D "__inline__="', + '-D "EXTERN=extern"', + '-D "INIT(...)="', '-D_GNU_SOURCE', '-DINCLUDE_GENERATED_DECLARATIONS' } -- cgit From c376cf46bf7672772d1b5fec218c44c9fb6cd2de Mon Sep 17 00:00:00 2001 From: Nicolas Hillegeer Date: Sat, 12 Jul 2014 19:37:38 +0200 Subject: test/helpers: add 'vim_init' helper - Initializes some global variables. - Necessary for the buffer tests in PR #904. --- test/unit/helpers.moon | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'test') diff --git a/test/unit/helpers.moon b/test/unit/helpers.moon index 84dfeb20e9..438f36811c 100644 --- a/test/unit/helpers.moon +++ b/test/unit/helpers.moon @@ -97,6 +97,17 @@ cstr = ffi.typeof 'char[?]' to_cstr = (string) -> cstr (string.len string) + 1, string +export vim_init_called +-- initialize some global variables, this is still necessary to unit test +-- functions that rely on global state. +vim_init = -> + if vim_init_called ~= nil + return + -- import os_unix.h for mch_early_init(), which initializes some globals + os = cimport './src/nvim/os_unix.h' + os.mch_early_init! + vim_init_called = true + return { cimport: cimport cppimport: cppimport @@ -107,4 +118,5 @@ return { lib: libnvim cstr: cstr to_cstr: to_cstr + vim_init: vim_init } -- cgit From 06ca70b191229da4d827d3751fa18ffed17c0189 Mon Sep 17 00:00:00 2001 From: Nicolas Hillegeer Date: Sat, 12 Jul 2014 19:38:36 +0200 Subject: test/fs: move tests of path_full_dir_name to path Move tests of path_full_dir_name to path_spec. It is only defined in path.h. Not sure why this works most of the time (I can only trigger a failure when running under lldb). It's a more logical place to have the test as well. --- test/unit/os/fs_spec.moon | 31 ------------------------------- test/unit/path_spec.moon | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 31 deletions(-) (limited to 'test') diff --git a/test/unit/os/fs_spec.moon b/test/unit/os/fs_spec.moon index a1445aeb0c..6d87cb95df 100644 --- a/test/unit/os/fs_spec.moon +++ b/test/unit/os/fs_spec.moon @@ -57,37 +57,6 @@ describe 'fs function', -> buf = cstr (len-1), '' eq FAIL, (os_dirname buf, (len-1)) - describe 'path_full_dir_name', -> - path_full_dir_name = (directory, buffer, len) -> - directory = to_cstr directory - fs.path_full_dir_name directory, buffer, len - - before_each -> - -- Create empty string buffer which will contain the resulting path. - export len = (string.len lfs.currentdir!) + 22 - export buffer = cstr len, '' - - it 'returns the absolute directory name of a given relative one', -> - result = path_full_dir_name '..', buffer, len - eq OK, result - old_dir = lfs.currentdir! - lfs.chdir '..' - expected = lfs.currentdir! - lfs.chdir old_dir - eq expected, (ffi.string buffer) - - it 'returns the current directory name if the given string is empty', -> - eq OK, (path_full_dir_name '', buffer, len) - eq lfs.currentdir!, (ffi.string buffer) - - it 'fails if the given directory does not exist', -> - eq FAIL, path_full_dir_name('does_not_exist', buffer, len) - - it 'works with a normal relative dir', -> - result = path_full_dir_name('unit-test-directory', buffer, len) - eq lfs.currentdir! .. '/unit-test-directory', (ffi.string buffer) - eq OK, result - os_isdir = (name) -> fs.os_isdir (to_cstr name) diff --git a/test/unit/path_spec.moon b/test/unit/path_spec.moon index 762bad09a2..4a4170e463 100644 --- a/test/unit/path_spec.moon +++ b/test/unit/path_spec.moon @@ -10,6 +10,43 @@ OK = 1 FAIL = 0 describe 'path function', -> + describe 'path_full_dir_name', -> + setup -> + lfs.mkdir 'unit-test-directory' + + teardown -> + lfs.rmdir 'unit-test-directory' + + path_full_dir_name = (directory, buffer, len) -> + directory = to_cstr directory + path.path_full_dir_name directory, buffer, len + + before_each -> + -- Create empty string buffer which will contain the resulting path. + export len = (string.len lfs.currentdir!) + 22 + export buffer = cstr len, '' + + it 'returns the absolute directory name of a given relative one', -> + result = path_full_dir_name '..', buffer, len + eq OK, result + old_dir = lfs.currentdir! + lfs.chdir '..' + expected = lfs.currentdir! + lfs.chdir old_dir + eq expected, (ffi.string buffer) + + it 'returns the current directory name if the given string is empty', -> + eq OK, (path_full_dir_name '', buffer, len) + eq lfs.currentdir!, (ffi.string buffer) + + it 'fails if the given directory does not exist', -> + eq FAIL, path_full_dir_name('does_not_exist', buffer, len) + + it 'works with a normal relative dir', -> + result = path_full_dir_name('unit-test-directory', buffer, len) + eq lfs.currentdir! .. '/unit-test-directory', (ffi.string buffer) + eq OK, result + describe 'path_full_compare', -> path_full_compare = (s1, s2, cn) -> -- cgit