[Tarantool-patches] [PATCH luajit 02/25] test: separate LuaJIT helpers from ffi_util.inc

Sergey Kaplun skaplun at tarantool.org
Tue Jan 23 15:35:47 MSK 2024


Hi, Sergey!
Thanks for the review!
Added the comments to the fucntions and force-pushed the branch.

See also my answers below.

On 23.01.24, Sergey Bronnikov wrote:
> Hi, Sergey!
> 
> thanks for the patch!
> 
> On 1/19/24 14:32, Sergey Kaplun wrote:
> > This patch moves common helpers from <LuaJIT-tests/common/ffi_util.inc>
> > into separate files by analogy with <common/expect_error.lua>. The
> Why do you need to move to separate files? What is an idea behind it?

I suppose that this is "common" helpers with a bit different
functionality.

As mentioned I tried to respect the existed code style of the suite
here (i.e., it is done by analogy with <common/expect_error.lua>).

All of these files return just a single function to use inside a test.

> > `include()` helper isn't touched since it is used in system dependend
> > tests, which won't be modified for now.
> >
> > Part of tarantool/tarantool#9398
> > ---
> >   test/LuaJIT-tests/common/fails.lua          |  3 +++
> >   test/LuaJIT-tests/common/ffi/checkfail.lua  | 10 +++++++++
> >   test/LuaJIT-tests/common/ffi/checktypes.lua | 11 ++++++++++
> >   test/LuaJIT-tests/common/ffi_util.inc       | 23 ---------------------
> >   4 files changed, 24 insertions(+), 23 deletions(-)
> >   create mode 100644 test/LuaJIT-tests/common/fails.lua
> >   create mode 100644 test/LuaJIT-tests/common/ffi/checkfail.lua
> >   create mode 100644 test/LuaJIT-tests/common/ffi/checktypes.lua
> >
> > diff --git a/test/LuaJIT-tests/common/fails.lua b/test/LuaJIT-tests/common/fails.lua
> > new file mode 100644
> > index 00000000..d555a2b5
> > --- /dev/null
> > +++ b/test/LuaJIT-tests/common/fails.lua
> > @@ -0,0 +1,3 @@
> > +return function(f, ...)
> > +  if pcall(f, ...) ~= false then error("failure expected", 2) end
> > +end
> > diff --git a/test/LuaJIT-tests/common/ffi/checkfail.lua b/test/LuaJIT-tests/common/ffi/checkfail.lua
> > new file mode 100644
> > index 00000000..60d8449a
> > --- /dev/null
> > +++ b/test/LuaJIT-tests/common/ffi/checkfail.lua
> > @@ -0,0 +1,10 @@
> > +local ffi = require("ffi")
> > +
> please add a comment with function's description

Added the following comment:

===================================================================
diff --git a/test/LuaJIT-tests/common/ffi/checkfail.lua b/test/LuaJIT-tests/common/ffi/checkfail.lua
index 60d8449a..d3ca74e8 100644
--- a/test/LuaJIT-tests/common/ffi/checkfail.lua
+++ b/test/LuaJIT-tests/common/ffi/checkfail.lua
@@ -1,5 +1,9 @@
 local ffi = require("ffi")
 
+-- Checker that takes an array of strings that should represent
+-- different invalid CTypes (a more common pattern). Also, the
+-- second argument may be also the `loadstring` function to check
+-- invalid literals or `ffi.cdef` to check invalid C definitions.
 return function(t, f)
   f = f or ffi.typeof
   for i=1,1e9 do
===================================================================

> > +return function(t, f)
> > +  f = f or ffi.typeof
> > +  for i=1,1e9 do
> > +    local tp = t[i]
> > +    if not tp then break end
> > +    assert(pcall(f, tp) == false, tp)
> > +  end
> > +end
> > diff --git a/test/LuaJIT-tests/common/ffi/checktypes.lua b/test/LuaJIT-tests/common/ffi/checktypes.lua
> > new file mode 100644
> > index 00000000..6d748e3b
> > --- /dev/null
> > +++ b/test/LuaJIT-tests/common/ffi/checktypes.lua
> > @@ -0,0 +1,11 @@
> > +local ffi = require("ffi")
> > +
> please add a comment with function's description

===================================================================
diff --git a/test/LuaJIT-tests/common/ffi/checktypes.lua b/test/LuaJIT-tests/common/ffi/checktypes.lua
index 6d748e3b..c995d667 100644
--- a/test/LuaJIT-tests/common/ffi/checktypes.lua
+++ b/test/LuaJIT-tests/common/ffi/checktypes.lua
@@ -1,5 +1,9 @@
 local ffi = require("ffi")
 
+-- Checker that takes an array with the following each 3 elements:
+-- 1) Sizeof for the given C type to be checked.
+-- 2) Alignof for the given C type to be checked.
+-- 3) String representing the C type.
 return function(t)
   for i=1,1e9,3 do
     local tp = t[i+2]
===================================================================

> > +return function(t)
> > +  for i=1,1e9,3 do
> > +    local tp = t[i+2]
> > +    if not tp then break end
> > +    local id = ffi.typeof(tp)
> > +    assert(ffi.sizeof(id) == t[i], tp)
> > +    assert(ffi.alignof(id) == t[i+1], tp)
> 
> Why test function contains asserts()? Wouldn't be better to return 
> false/true and raise assert in test itself?

I have no perporse to refactor the whole suite. Also, I suppose there
are much more to do ;). `expect_error()` raises the error to, so see no
differences here.

> 
> same questions below
> 
> > +  end
> > +end
> > diff --git a/test/LuaJIT-tests/common/ffi_util.inc b/test/LuaJIT-tests/common/ffi_util.inc
> > index 1eee8dd9..9604d7b0 100644
> > --- a/test/LuaJIT-tests/common/ffi_util.inc
> > +++ b/test/LuaJIT-tests/common/ffi_util.inc
> > @@ -4,29 +4,6 @@
> >   
> >   local ffi = require("ffi")
> >   
> > -function checkfail(t, f)
> > -  f = f or ffi.typeof
> > -  for i=1,1e9 do
> > -    local tp = t[i]
> > -    if not tp then break end
> > -    assert(pcall(f, tp) == false, tp)
> > -  end
> > -end
> > -
> > -function checktypes(t)
> > -  for i=1,1e9,3 do
> > -    local tp = t[i+2]
> > -    if not tp then break end
> > -    local id = ffi.typeof(tp)
> > -    assert(ffi.sizeof(id) == t[i], tp)
> > -    assert(ffi.alignof(id) == t[i+1], tp)
> > -  end
> > -end
> > -
> > -function fails(f, ...)
> > -  if pcall(f, ...) ~= false then error("failure expected", 2) end
> > -end
> > -
> >   local incroot = os.getenv("INCROOT") or "/usr/include"
> >   local cdefs = os.getenv("CDEFS") or ""
> What for these env variables need?

They are unused for now, since the function `include()` below is not
used anywhere.
The first one should be used as a sysroot for finding C includes, and the
second one as an additional C defines.

> >   

-- 
Best regards,
Sergey Kaplun


More information about the Tarantool-patches mailing list