[Tarantool-patches] [PATCH 3/4] test: enable luajit-tap:gh-4427-ffi-sandwich tests

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Sun Apr 5 22:32:45 MSK 2020


>  if (NOT ${PROJECT_BINARY_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
> diff --git a/test/app-tap/gh-4427-ffi-sandwich.test.lua b/test/app-tap/gh-4427-ffi-sandwich.test.lua
> new file mode 100755
> index 000000000..602af88d4
> --- /dev/null
> +++ b/test/app-tap/gh-4427-ffi-sandwich.test.lua
> @@ -0,0 +1,30 @@
> +#!/usr/bin/env tarantool
> +
> +local tap = require('tap')
> +
> +local test = tap.test('gh-4427-ffi-sandwich')
> +
> +local cmd = string.gsub(
> +  'LUA_CPATH=$/?.so LD_LIBRARY_PATH=$ tarantool 2>&1 $/test.lua %d %d',
> +  '%$', os.getenv('BUILDDIR') .. '/test/luajit-tap/gh-4427-ffi-sandwich')
> +
> +local checks = {
> +  { hotloop = 1, trigger = 1, success = true  },
> +  { hotloop = 1, trigger = 2, success = false },

Why hotloop is needed, if it is always 1?

> +}
> +
> +test:plan(#checks)
> +
> +for _, ch in pairs(checks) do
> +  local res
> +  local proc = io.popen(cmd:format(ch.hotloop, ch.trigger))
> +  for s in proc:lines('*l') do res = s end

What is '*l'?

> +  assert(res, 'proc:lines failed')
> +  if ch.success then
> +    test:is(tonumber(res), ch.hotloop + ch.trigger + 1)
> +  else
> +    test:is(res, 'Lua VM re-entrancy is detected while executing the trace')
> +  end
> +end
> +
> +os.exit(test:check() and 0 or 1)

Oh God. So luajit already contains cyclic dependencies. It stores suite.ini
file in its test folder, which of course is useless for the luajit alone.

Since suite.ini file is here, why do you need to run tests from there in such
a complex way? Test-run should already be able to peek tests from there (and
it does). It probably does not work for your test only because you put it into
a folder. I propose you to flatten it, like it is done for function1.test.lua.
You still can keep issue name in form of 'gh-####-' in file names to keep them
related. They would be

    gh-4427-ffi-sandwich.test.lua
    gh-4427-ffi-sandwich.c

And after build:

+   gh-4427-ffi.sandwich.so/.dylib

Then you don't a need separate file in app-tap.


More information about the Tarantool-patches mailing list