[Tarantool-patches] [PATCH v2 luajit 17/45] test: enable <misc/hook_line.lua> LuaJIT test

Sergey Bronnikov sergeyb at tarantool.org
Fri Aug 23 17:38:03 MSK 2024


Sergey,

On 21.08.2024 11:58, Sergey Kaplun wrote:
> This patch moves the aforementioned test from the <misc> to the <lang/>
> directory, includes it in <index>, names the subtests, and adjusts the
> line numbers in the assertions and filters to match LuaJIT behaviour and
> the new code layout. Also, it slightly refactors the code to make it
> closer to our code style.
>
> Part of tarantool/tarantool#9398
> ---
thanks for the patch! LGTM with a minor comment.
>   test/LuaJIT-tests/lang/hook_line.lua | 45 ++++++++++++++++++++++++++++
>   test/LuaJIT-tests/lang/index         |  1 +
>   test/LuaJIT-tests/misc/hook_line.lua | 41 -------------------------
>   3 files changed, 46 insertions(+), 41 deletions(-)
>   create mode 100644 test/LuaJIT-tests/lang/hook_line.lua
>   delete mode 100644 test/LuaJIT-tests/misc/hook_line.lua
>
> diff --git a/test/LuaJIT-tests/lang/hook_line.lua b/test/LuaJIT-tests/lang/hook_line.lua
> new file mode 100644
> index 00000000..733e5513
> --- /dev/null
> +++ b/test/LuaJIT-tests/lang/hook_line.lua
> @@ -0,0 +1,45 @@
> +-- The test depends on the number of lines in the file.
> +local lines = {}
> +local function hook()
> +  lines[#lines + 1] = debug.getinfo(2).currentline
> +end
> +
> +local function dummy()
> +end -- <-- line 8
> +
> +do --- Base test: cycles, function calls.
> +  debug.sethook(hook, "l", 0)
> +  -- <-- line 12
> +  local x
> +  dummy()
> +  local y = 1
> +  dummy() dummy()

I would place a second call to a separate line. Feel free to ignore.



> +  local z = 2; local r = true
> +  while y < 4 do y = y + 1 end
> +  while z < 4 do
> +    z = z + 1
> +  end
> +  -- <-- line 22
> +  local v
> +  debug.sethook(nil, "", 0)
> +
> +  assert(#lines > 0)
> +  while lines[1] < 12 do table.remove(lines, 1) end
> +  while lines[#lines] > 22 do table.remove(lines) end
> +
> +  local s = table.concat(lines, " ")
> +  assert(s == "13 14 8 15 16 8 8 17 18 18 18 18 19 20 19 20 19" or
> +         s == "13 14 8 15 16 8 16 8 17 18 18 18 18 19 20 19 20 19")
> +end
> +
> +do --- Not visited the end of the function definition.
> +  lines = {}
> +  local function f()
> +    if true then return end
> +    local function x() end
> +  end -- <-- line 40
> +  debug.sethook(hook, "l", 0)
> +  f()
> +  debug.sethook(nil, "", 0)
> +  for i = 1, #lines do assert(lines[i] ~= 40) end
> +end
> diff --git a/test/LuaJIT-tests/lang/index b/test/LuaJIT-tests/lang/index
> index 8cecfa08..ae59bc56 100644
> --- a/test/LuaJIT-tests/lang/index
> +++ b/test/LuaJIT-tests/lang/index
> @@ -9,6 +9,7 @@ constant
>   dualnum.lua
>   for.lua
>   hook_active.lua
> +hook_line.lua
>   length.lua
>   lightud.lua
>   modulo.lua
> diff --git a/test/LuaJIT-tests/misc/hook_line.lua b/test/LuaJIT-tests/misc/hook_line.lua
> deleted file mode 100644
> index 36f71080..00000000
> --- a/test/LuaJIT-tests/misc/hook_line.lua
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -local lines = {}
> -local function hook()
> -  lines[#lines+1] = debug.getinfo(2).currentline
> -end
> -
> -local function dummy()
> -end -- <-- line 7
> -
> -debug.sethook(hook, "l", 0)
> --- <-- line 10
> -local x
> -dummy()
> -local y = 1
> -dummy() dummy()
> -local z = 2; local r = true
> -while y < 4 do y = y + 1 end
> -while z < 4 do
> -  z = z + 1
> -end
> --- <-- line 20
> -local v
> -debug.sethook(nil, "", 0)
> -
> -assert(#lines > 0)
> -while lines[1] < 10 do table.remove(lines, 1) end
> -while lines[#lines] > 20 do table.remove(lines) end
> -
> -local s = table.concat(lines, " ")
> -assert(s == "11 12 7 13 14 7 7 15 16 16 16 16 17 18 17 18 17" or
> -       s == "11 12 7 13 14 7 14 7 15 16 16 16 16 17 18 17 18 17")
> -
> -lines = {}
> -local function f()
> -  if true then return end
> -  local function x() end
> -end -- <-- line 36
> -debug.sethook(hook, "l", 0)
> -f()
> -debug.sethook(nil, "", 0)
> -for i=1,#lines do assert(lines[i] ~= 36) end
> -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20240823/01d843b1/attachment.htm>


More information about the Tarantool-patches mailing list