[Tarantool-patches] [PATCH v2 luajit 19/26] test: enable <ffi_parse_basic.lua> in LuaJIT-tests
Sergey Bronnikov
sergeyb at tarantool.org
Mon Feb 5 16:10:17 MSK 2024
Hi, Sergey
thanks for the patch! LGTM
On 1/29/24 13:45, Sergey Kaplun wrote:
> This patch changes `dofile()` (which uses an unreliable relative file
> path and mutates `_G` with global functions to be defined) to the
> corresponding `require()` of the helper functions. It adds groups with
> the names of subtests and enables the test in <index>.
>
> Part of tarantool/tarantool#9398
> ---
> test/LuaJIT-tests/lib/ffi/ffi_parse_basic.lua | 251 +++++++++---------
> test/LuaJIT-tests/lib/ffi/index | 1 +
> 2 files changed, 132 insertions(+), 120 deletions(-)
>
> diff --git a/test/LuaJIT-tests/lib/ffi/ffi_parse_basic.lua b/test/LuaJIT-tests/lib/ffi/ffi_parse_basic.lua
> index c054bcfb..3b49648c 100644
> --- a/test/LuaJIT-tests/lib/ffi/ffi_parse_basic.lua
> +++ b/test/LuaJIT-tests/lib/ffi/ffi_parse_basic.lua
> @@ -1,131 +1,142 @@
> local ffi = require("ffi")
>
> -dofile("../common/ffi_util.inc")
> +local checkfail = require("common.ffi.checkfail")
> +local checktypes = require("common.ffi.checktypes")
>
> -checkfail{
> - "",
> - " ",
> - "\n",
> - "1",
> - ".",
> - ";",
> - ",",
> - "*",
> - "[]",
> - "()",
> - "(*)",
> - "//",
> - "/*",
> - "xyz",
> - "const",
> - "volatile",
> - "typedef",
> - "extern",
> - "static",
> - "auto",
> - "register",
> - "struct",
> - "union",
> - "sizeof",
> - "int int",
> - "int char",
> - "int double",
> - "int;",
> -}
> +do --- checkfail
> + checkfail{
> + "",
> + " ",
> + "\n",
> + "1",
> + ".",
> + ";",
> + ",",
> + "*",
> + "[]",
> + "()",
> + "(*)",
> + "//",
> + "/*",
> + "xyz",
> + "const",
> + "volatile",
> + "typedef",
> + "extern",
> + "static",
> + "auto",
> + "register",
> + "struct",
> + "union",
> + "sizeof",
> + "int int",
> + "int char",
> + "int double",
> + "int;",
> + }
> +end
>
> -checktypes{
> - 1, 1, "char",
> - 1, 1, " \n\r\t\vchar \n\r\t\v",
> - 1, 1, "ch\\\nar",
> - 1, 1, "char /* abc */",
> - 1, 1, "char /* abc */ const",
> - 1, 1, "char // abc\n const",
> -}
> +do --- char newlines
> + checktypes{
> + 1, 1, "char",
> + 1, 1, " \n\r\t\vchar \n\r\t\v",
> + 1, 1, "ch\\\nar",
> + 1, 1, "char /* abc */",
> + 1, 1, "char /* abc */ const",
> + 1, 1, "char // abc\n const",
> + }
> +end
>
> -checktypes{
> - nil, 1, "void",
> - 1, 1, "bool",
> - 1, 1, "_Bool",
> - 4, 4, "_Bool int",
> - 1, 1, "char",
> - 1, 1, "signed char",
> - 1, 1, "unsigned char",
> - 2, 2, "short",
> - 2, 2, "signed short",
> - 2, 2, "unsigned short",
> - 4, 4, "int",
> - 4, 4, "signed int",
> - 4, 4, "unsigned int",
> - 4, 4, "signed",
> - 4, 4, "unsigned",
> - 4, 4, "float",
> - 8, 8, "long long",
> - 8, 8, "signed long long",
> - 8, 8, "unsigned long long",
> - 8, 8, "double",
> - -- NYI: long double is architecture- and compiler-specific.
> - 8, 4, "_Complex float",
> - 16, 8, "_Complex",
> - 16, 8, "_Complex double",
> -}
> +do --- base types
> + checktypes{
> + nil, 1, "void",
> + 1, 1, "bool",
> + 1, 1, "_Bool",
> + 4, 4, "_Bool int",
> + 1, 1, "char",
> + 1, 1, "signed char",
> + 1, 1, "unsigned char",
> + 2, 2, "short",
> + 2, 2, "signed short",
> + 2, 2, "unsigned short",
> + 4, 4, "int",
> + 4, 4, "signed int",
> + 4, 4, "unsigned int",
> + 4, 4, "signed",
> + 4, 4, "unsigned",
> + 4, 4, "float",
> + 8, 8, "long long",
> + 8, 8, "signed long long",
> + 8, 8, "unsigned long long",
> + 8, 8, "double",
> + -- NYI: long double is architecture- and compiler-specific.
> + 8, 4, "_Complex float",
> + 16, 8, "_Complex",
> + 16, 8, "_Complex double",
> + }
> +end
>
> --- mode/vector_size attributes
> -checktypes{
> - 1, 1, "int __attribute__((mode(QI)))",
> - 2, 2, "int __attribute__((mode(HI)))",
> - 4, 4, "int __attribute__((mode(SI)))",
> - 8, 8, "int __attribute__((mode(DI)))",
> - 16, 16, "int __attribute__((mode(TI)))",
> - 32, 16, "int __attribute__((mode(OI)))",
> - 4, 4, "float __attribute__((mode(SF)))",
> - 8, 8, "float __attribute__((mode(DF)))",
> - 2, 2, "int __attribute__((mode(V2QI)))",
> - 16, 16, "float __attribute__((mode(V4SF)))",
> - 32, 16, "double __attribute__((mode(V8SF)))",
> - 8, 8, "char __attribute__((vector_size(8)))",
> - 16, 16, "int __attribute__((vector_size(16)))",
> - 32, 16, "double __attribute__((vector_size(32)))",
> - 64, 16, "double __attribute__((vector_size(64)))",
> -}
> +do --- mode/vector_size attributes
> + checktypes{
> + 1, 1, "int __attribute__((mode(QI)))",
> + 2, 2, "int __attribute__((mode(HI)))",
> + 4, 4, "int __attribute__((mode(SI)))",
> + 8, 8, "int __attribute__((mode(DI)))",
> + 16, 16, "int __attribute__((mode(TI)))",
> + 32, 16, "int __attribute__((mode(OI)))",
> + 4, 4, "float __attribute__((mode(SF)))",
> + 8, 8, "float __attribute__((mode(DF)))",
> + 2, 2, "int __attribute__((mode(V2QI)))",
> + 16, 16, "float __attribute__((mode(V4SF)))",
> + 32, 16, "double __attribute__((mode(V8SF)))",
> + 8, 8, "char __attribute__((vector_size(8)))",
> + 16, 16, "int __attribute__((vector_size(16)))",
> + 32, 16, "double __attribute__((vector_size(32)))",
> + 64, 16, "double __attribute__((vector_size(64)))",
> + }
> +end
>
> --- ABI-specific types:
> -local L = (ffi.abi("32bit") or ffi.abi("win")) and 4 or 8
> -local P = ffi.abi("32bit") and 4 or 8
> -local W = ffi.abi("win") and 2 or 4
> +do --- ABI-specific types:
> + local L = (ffi.abi("32bit") or ffi.abi("win")) and 4 or 8
> + local P = ffi.abi("32bit") and 4 or 8
> + local W = ffi.abi("win") and 2 or 4
>
> -checktypes{
> - L, L, "long",
> - L, L, "signed long",
> - L, L, "unsigned long",
> - P, P, "int *",
> - P, P, "int **",
> - 4, 4, "int * __ptr32",
> -}
> + checktypes{
> + L, L, "long",
> + L, L, "signed long",
> + L, L, "unsigned long",
> + P, P, "int *",
> + P, P, "int **",
> + 4, 4, "int * __ptr32",
> + }
>
> -checktypes{
> - P, P, "ptrdiff_t",
> - P, P, "size_t",
> - W, W, "wchar_t",
> - 1, 1, "int8_t",
> - 2, 2, "int16_t",
> - 4, 4, "int32_t",
> - 8, 8, "int64_t",
> - 1, 1, "uint8_t",
> - 2, 2, "uint16_t",
> - 4, 4, "uint32_t",
> - 8, 8, "uint64_t",
> - P, P, "intptr_t",
> - P, P, "uintptr_t",
> -}
> + checktypes{
> + P, P, "ptrdiff_t",
> + P, P, "size_t",
> + W, W, "wchar_t",
> + 1, 1, "int8_t",
> + 2, 2, "int16_t",
> + 4, 4, "int32_t",
> + 8, 8, "int64_t",
> + 1, 1, "uint8_t",
> + 2, 2, "uint16_t",
> + 4, 4, "uint32_t",
> + 8, 8, "uint64_t",
> + P, P, "intptr_t",
> + P, P, "uintptr_t",
> + }
> +end
>
> -checktypes{
> - 1, 8, "char __attribute__((aligned(8)))",
> - 1, 8, "char __attribute((aligned(8)))",
> - 1, 8, "char __attribute__((__aligned__(8)))",
> - 1, 8, "__attribute__((aligned(8))) char",
> - 1, 8, "char __declspec(align(8))",
> - 1, 8, "__declspec(align(8)) char",
> - 1, 2, "char __attribute__((aligned(8))) const __attribute__((aligned(2)))",
> - 1, 16, "char __attribute__((aligned(8))) const __attribute__((aligned(16)))",
> -}
> +do --- attributes
> + checktypes{
> + 1, 8, "char __attribute__((aligned(8)))",
> + 1, 8, "char __attribute((aligned(8)))",
> + 1, 8, "char __attribute__((__aligned__(8)))",
> + 1, 8, "__attribute__((aligned(8))) char",
> + 1, 8, "char __declspec(align(8))",
> + 1, 8, "__declspec(align(8)) char",
> + 1, 2, "char __attribute__((aligned(8))) const __attribute__((aligned(2)))",
> + 1, 16, "char __attribute__((aligned(8))) const __attribute__((aligned(16)))",
> + }
> +end
>
> diff --git a/test/LuaJIT-tests/lib/ffi/index b/test/LuaJIT-tests/lib/ffi/index
> index 89773c0c..a805bdd0 100644
> --- a/test/LuaJIT-tests/lib/ffi/index
> +++ b/test/LuaJIT-tests/lib/ffi/index
> @@ -17,6 +17,7 @@ ffi_lex_number.lua
> ffi_metatype.lua
> ffi_new.lua
> ffi_parse_array.lua
> +ffi_parse_basic.lua
> istype.lua
> jit_array.lua
> jit_complex.lua
More information about the Tarantool-patches
mailing list