[Tarantool-patches] [PATCH v4 luajit 0/6] Reworking C tests

Igor Munkin imun at tarantool.org
Tue Jul 4 20:10:33 MSK 2023


Sergey,

I've checked the patchset into all long-term branches in
tarantool/luajit and bumped a new version in master, release/2.11 and
release/2.10.

On 10.06.23, Sergey Kaplun wrote:
> The whole idea of the patch-set introduce module for LuaJIT C tests. It
> also, can be used for unit tests.
> * The first patch is the prerequisite for the patch-set. It fixes
>   LD_LIBRARY_PATH definition.
> * The 2nd and 3d patches provides an API and helper for writing the tests.
> * The last 3 patches rewrite existing tests that should be written in C in
>   the proper way.
> 
> Branch: https://github.com/tarantool/luajit/tree/skaplun/gh-noticket-tarantool-c-tests
> PR: https://github.com/tarantool/tarantool/pull/8444
> Related Issue:
> * https://github.com/tarantool/tarantool/issues/7900
> * https://github.com/tarantool/tarantool/issues/781
> 
> Changes in v2:
> 1) use
> 
> | int _test_run_group(const char *group_name, const struct test_unit tests[],
> | 		    size_t n_tests, void *test_state);
> 
> instead of
> 
> | int _test_run_group(const char *group_name, const struct test_unit *tests,
> | 		    size_t n_tests, void *test_state);
> 
> 2) `skip()` `skip_all()` and `todo()` helpers now return values to be
> return to runner.
> i.e. change usage from
> | if (cond)
> | 	skip("NIY");
> to
> | if (cond)
> | 	return skip("NIY");
> 
> `bail_out()` helper still just exits with error code, which corresponding
> its standard specification.
> 
> But now some parts of the code start to look "alya cringe":
> | return todo("Need to replace backtrace with libunwind first");
> | lua_State *L = test_state;
> | utils_get_aux_lfunc(L);
> | (void)luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE | LUAJIT_MODE_OFF);
> | (void)luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE | LUAJIT_MODE_FLUSH);
> | check_profile_func(L);
> | (void)luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE | LUAJIT_MODE_ON);
> | return TEST_EXIT_SUCCESS;
> 
> (Yes, we want to use unconditional `todo()`).
> So I commented the similar code, helper `check_profile_func()`, etc.
> with `#if 0`.
> 
> 3) In 4th patch use subtest group for snap-related tests to skip all at
> once with disabled JIT.
> 
> 4) lj-49-bad-lightuserdata is moved in C tests, too.
> 
> Changes in the v3:
> 
> 1) Now helper `utils_load_aux_script()` from <utils.h> accepts the
>    filename of the Lua script to load (so, now define for test contains
>    the directory instead of the test filename).
> 2) Add README.md for the 3rd commit with an example of usage.
> 3) Add unit tests (ok, skip, todo) for <test.c> lib.
> 4) Move test builds to the 2nd commit to launch unit test
>    (<unit-tap.test.c>), updating here <.gitignore> too.
> 5) Fix typos.
> 
> Changes in v4:
> 1) Describe why the 1st patch is neccessary for this patchset in the
>    commit message.
> 2) Move adding of the README.md in the second commit with description of
>    directives and assert macros.
> 3) More verbose comments.
> 
> Sergey Kaplun (6):
>   test: fix setting of {DY}LD_LIBRARY_PATH variables
>   test: introduce module for C tests
>   test: introduce utils.h helper for C tests
>   test: rewrite misclib-getmetrics-capi test in C
>   test: rewrite misclib-sysprof-capi test in C
>   test: rewrite lj-49-bad-lightuserdata test in C
> 

<snipped>

> 
> -- 
> 2.34.1
> 

-- 
Best regards,
IM


More information about the Tarantool-patches mailing list