Tarantool development patches archive
 help / color / mirror / Atom feed
From: Sergey Bronnikov via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Sergey Kaplun <skaplun@tarantool.org>,
	Sergey Bronnikov <estetus@gmail.com>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH luajit] test: limit code and comment max length by 80
Date: Wed, 12 Feb 2025 07:46:53 +0300	[thread overview]
Message-ID: <f2ee2664-593f-4604-8ea2-9ab9932aa65c@tarantool.org> (raw)
In-Reply-To: <Z6s5pnii2imXHzfg@root>

[-- Attachment #1: Type: text/plain, Size: 13085 bytes --]

Hi, Sergey

thanks for review! Please see my comments.

On 11.02.2025 14:51, Sergey Kaplun via Tarantool-patches wrote:
> Hi, Sergey!
> Thanks for the patch!
> It's a nice idea to automate this part of the review!
>
> Please consider my questions below.
>
> On 11.02.25, Sergey Bronnikov wrote:
>> The patch sets a max length with 80 symbols and fixes tests
>> exceeding this length.
>> ---
>> Branch:https://github.com/tarantool/luajit/tree/ligurio/gh-xxxx-set-max-length
>> Luacheck configuration file:
>> https://luacheck.readthedocs.io/en/stable/config.html
>>
>>   .luacheckrc                                            |  5 +++++
>>   test/tarantool-tests/fix-argv-handling.test.lua        |  4 ++++
>>   .../gh-3196-incorrect-string-length.test.lua           |  3 +++
>>   test/tarantool-tests/gh-6163-min-max.test.lua          |  4 ++++
>>   .../lj-366-strtab-correct-size.test.lua                | 10 ++++++++--
>>   .../lj-494-table-chain-infinite-loop.test.lua          |  3 ++-
>>   test/tarantool-tests/lj-688-snap-ir-rename.test.lua    |  2 ++
>>   test/tarantool-tests/lj-819-fix-missing-uclo.test.lua  |  6 ++++--
>>   .../lj-918-fma-numerical-accuracy-jit.test.lua         |  4 ++++
>>   .../lj-918-fma-numerical-accuracy.test.lua             |  4 ++++
>>   test/tarantool-tests/or-144-gc64-asmref-l.test.lua     |  4 ++++
>>   11 files changed, 44 insertions(+), 5 deletions(-)
>>
>> diff --git a/.luacheckrc b/.luacheckrc
>> index f2573e42..8047677c 100644
>> --- a/.luacheckrc
>> +++ b/.luacheckrc
>> @@ -3,6 +3,11 @@ std = 'luajit'
>>   -- This fork also introduces a new global for misc API namespace.
>>   read_globals = { 'misc' }
>>   
>> +max_line_length = 80
> I suppose this is excess since we have all other settings intact.
Removed.
>
>> +max_code_line_length = 80
>> +max_string_line_length = 80
> Do we need this particular check? Maybe it is covered by the
> `max_code_line_length` and `max_line_length`. Can we avoid markers in
> <gh-3196-incorrect-string-length.test.lua> without it?
>
>> +max_comment_line_length = 80
> Actually, the comment length for the Lua part is 66 symbols. Maybe we
> may omit this check to avoid stubs in the comments?

The main idea is automating this check and avoid comments like

"your comment is exceeded XXX symbols" on review. So I don't understand

how to omit this check.

BTW luacheck with "max_comment_line_length = 66" reports 89 warnings, it 
means

that manual (visual) checking of max length in comments is unreliable 
and we definitely

should automate it.

>
>> +
>>   -- The `_TARANTOOL` global is often used for skip condition
>>   -- checks in tests.
>>   files['test/tarantool-tests/'] = {
>> diff --git a/test/tarantool-tests/fix-argv-handling.test.lua b/test/tarantool-tests/fix-argv-handling.test.lua
>> index 84b626c3..5f147197 100644
>> --- a/test/tarantool-tests/fix-argv-handling.test.lua
>> +++ b/test/tarantool-tests/fix-argv-handling.test.lua
>> @@ -10,7 +10,11 @@ test:plan(1)
>>   -- to a single empty string if it is empty [1], so the issue is
>>   -- not reproducible on new kernels.
>>   --
>> +-- luacheck: push no max comment line length
> Side note: Can it will be done without push/pop interface? Like for
> globals we use:
> | luacheck: no global

AFAIR, no. Global suppression will cover the whole file, I don't think

it is a good idea. Approach with push/pop was already used in

commit 9ac79bd7cd12dc3dbfa0e502e29a99b3083676c1
  ("test: introduce test:done TAP helper") why we cannot continue using 
this approach for other files?

>
>> +--
>>   -- [1]:https://lore.kernel.org/all/20220201000947.2453721-1-keescook@chromium.org/
>> +--
>> +-- luacheck: pop
>>   
>>   local utils = require('utils')
>>   local execlib = require('execlib')
>> diff --git a/test/tarantool-tests/gh-3196-incorrect-string-length.test.lua b/test/tarantool-tests/gh-3196-incorrect-string-length.test.lua
>> index b82029f6..79521608 100644
>> --- a/test/tarantool-tests/gh-3196-incorrect-string-length.test.lua
>> +++ b/test/tarantool-tests/gh-3196-incorrect-string-length.test.lua
>> @@ -6,10 +6,13 @@ test:plan(2)
>>   --
>>   -- gh-3196: incorrect string length if Lua hash returns 0
>>   --
>> +-- luacheck: push no max code line length
> Side note: Can it will be done without push/pop interface? Like for
> globals we use:
> | luacheck: no global
See above.
>> +--
>>   local h = "\x1F\x93\xE2\x1C\xCA\xDE\x28\x08\x26\x01\xED\x0A\x2F\xE4\x21\x02\x97\x77\xD9\x3E"
>>   test:is(h:len(), 20)
>>   
>>   h = "\x0F\x93\xE2\x1C\xCA\xDE\x28\x08\x26\x01\xED\x0A\x2F\xE4\x21\x02\x97\x77\xD9\x3E"
>>   test:is(h:len(), 20)
>> +-- luacheck: pop
>>   
>>   test:done(true)
>> diff --git a/test/tarantool-tests/gh-6163-min-max.test.lua b/test/tarantool-tests/gh-6163-min-max.test.lua
>> index e3efd1a4..ca6c2a7f 100644
>> --- a/test/tarantool-tests/gh-6163-min-max.test.lua
>> +++ b/test/tarantool-tests/gh-6163-min-max.test.lua
>> @@ -69,9 +69,13 @@ jit.opt.start('hotloop=1')
>>   -- pair is emitted, and the result is `NaN`, which is inconsistent with
>>   -- the result of the non-optimized mcode.
>>   --
>> +-- luacheck: push no max comment line length
> Side note: Can it will be done without push/pop interface? Like for
> globals we use:
> | luacheck: no global
>
>> +--
>>   -- [1]:https://developer.arm.com/documentation/dui0801/g/A64-Floating-point-Instructions/FCMP
>>   -- [2]:https://developer.arm.com/documentation/100069/0608/A64-Floating-point-Instructions/FCSEL
>>   -- [3]:https://developer.arm.com/documentation/dui0068/b/ARM-Instruction-Reference/Conditional-execution
>> +--
>> +-- luacheck: pop
>>   
>>   local result = {}
>>   for k = 1, 4 do
>> diff --git a/test/tarantool-tests/lj-366-strtab-correct-size.test.lua b/test/tarantool-tests/lj-366-strtab-correct-size.test.lua
>> index a20339e5..b46ace49 100644
>> --- a/test/tarantool-tests/lj-366-strtab-correct-size.test.lua
>> +++ b/test/tarantool-tests/lj-366-strtab-correct-size.test.lua
>> @@ -22,11 +22,15 @@ local utils = require('utils')
>>   --
>>   -- $ readelf --symbols xxx.obj
>>   --
>> +-- luacheck: push no max comment line length
>> +--
>>   -- Symbol table '.symtab' contains 2 entries:
>>   --    Num:    Value          Size Type    Bind   Vis      Ndx Name
>>   --      0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
>>   --      1: 0000000000000000    66 OBJECT  GLOBAL DEFAULT    4 luaJIT_BC_lango_team
>>   --
>> +-- luacheck: pop
>> +--
>>   -- and to display the information contained in the file's section
>>   -- headers, if it has any. For our purposes, we are interested in
>>   -- .symtab section, so other sections are snipped in the output:
>> @@ -143,7 +147,8 @@ end
>>   -- and symtab sections.
>>   local function read_elf(elf_content)
>>     local ELFobj_type = ffi.typeof(is64 and 'ELF64obj *' or 'ELF32obj *')
>> -  local ELFsectheader_type = ffi.typeof(is64 and 'ELF64sectheader *' or 'ELF32sectheader *')
>> +  local ELFsectheader_type = ffi.typeof(is64 and 'ELF64sectheader *' or
>> +                                        'ELF32sectheader *')
>>     local elf = ffi.cast(ELFobj_type, elf_content)
>>     local symtab_hdr, strtab_hdr
>>     -- Iterate by section headers.
>> @@ -178,7 +183,8 @@ assert(sym_cnt ~= 0, 'number of symbols is zero')
>>   test:is(strtab_size, EXPECTED_STRTAB_SIZE, 'check .strtab size')
>>   test:is(strtab_offset, EXPECTED_STRTAB_OFFSET, 'check .strtab offset')
>>   
>> -local strtab_str = string.sub(elf_content, strtab_offset, strtab_offset + strtab_size)
>> +local strtab_str = string.sub(elf_content, strtab_offset,
>> +                              strtab_offset + strtab_size)
>>   
>>   local strtab_p = ffi.cast('char *', strtab_str)
>>   local sym_is_found = false
>> diff --git a/test/tarantool-tests/lj-494-table-chain-infinite-loop.test.lua b/test/tarantool-tests/lj-494-table-chain-infinite-loop.test.lua
>> index 3dd17e7a..1c1d7128 100644
>> --- a/test/tarantool-tests/lj-494-table-chain-infinite-loop.test.lua
>> +++ b/test/tarantool-tests/lj-494-table-chain-infinite-loop.test.lua
>> @@ -172,6 +172,7 @@ collectgarbage()
>>   for c, v in pairs(victims) do
>>       str_hash(v)[0] = orig_hash[c]
>>   end
>> -test:ok(true, "table keys collisions are resolved properly (no assertions failed)")
>> +test:ok(true,
>> +        "table keys collisions are resolved properly (no assertions failed)")
>>   
>>   test:done(true)
>> diff --git a/test/tarantool-tests/lj-688-snap-ir-rename.test.lua b/test/tarantool-tests/lj-688-snap-ir-rename.test.lua
>> index 807e0811..5b458cd0 100644
>> --- a/test/tarantool-tests/lj-688-snap-ir-rename.test.lua
>> +++ b/test/tarantool-tests/lj-688-snap-ir-rename.test.lua
>> @@ -41,7 +41,9 @@ jit.opt.start('hotloop=1')
>>   -- platform-agnostic, there is no real necessity to test it
>>   -- against ARM/ARM64 separately.
>>   --
>> +-- luacheck: push no max comment line length
> Side note: Can it will be done without push/pop interface? Like for
> globals we use:
> | luacheck: no global
>
>>   -- See alsohttps://drive.google.com/file/d/1iYkFx3F0DOtB9o9ykWfCEm-OdlJNCCL0/view?usp=share_link
>> +-- luacheck: pop
>>   
>>   
>>   local vals = {-0.1, 0.1, -0.1, 0.1}
>> diff --git a/test/tarantool-tests/lj-819-fix-missing-uclo.test.lua b/test/tarantool-tests/lj-819-fix-missing-uclo.test.lua
>> index e2352c92..43a65eb8 100644
>> --- a/test/tarantool-tests/lj-819-fix-missing-uclo.test.lua
>> +++ b/test/tarantool-tests/lj-819-fix-missing-uclo.test.lua
>> @@ -100,7 +100,8 @@ local f = missing_uclo()
>>   local res = f()
>>   -- Without a patch we don't get here a function, because upvalue isn't closed
>>   -- as desirable.
>> -test:ok(type(res) == 'function', 'virtual machine consistency: type of returned value is correct')
>> +test:ok(type(res) == 'function',
>> +        'virtual machine consistency: type of returned value is correct')
>>   
>>   -- Make JIT compiler aggressive.
>>   jit.opt.start('hotloop=1')
>> @@ -110,6 +111,7 @@ f()
>>   f = missing_uclo()
>>   local _
>>   _, res = pcall(f)
>> -test:ok(type(res) == 'function', 'consistency on compilation: type of returned value is correct')
>> +test:ok(type(res) == 'function',
>> +        'consistency on compilation: type of returned value is correct')
>>   
>>   test:done(true)
>> diff --git a/test/tarantool-tests/lj-918-fma-numerical-accuracy-jit.test.lua b/test/tarantool-tests/lj-918-fma-numerical-accuracy-jit.test.lua
>> index 8b16d4c3..43c1a4a9 100644
>> --- a/test/tarantool-tests/lj-918-fma-numerical-accuracy-jit.test.lua
>> +++ b/test/tarantool-tests/lj-918-fma-numerical-accuracy-jit.test.lua
>> @@ -22,9 +22,13 @@ local _2pow52 = 2 ^ 52
>>   -- double rounding. The numbers from the original issue are good
>>   -- enough.
>>   --
>> +-- luacheck: push no max comment line length
> Side note: Can it will be done without push/pop interface? Like for
> globals we use:
> | luacheck: no global
>
>> +--
>>   -- [1]:https://developer.arm.com/documentation/dui0801/g/A64-Floating-point-Instructions/FMSUB
>>   -- [2]:https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation
>>   --
>> +-- luacheck: pop
>> +--
>>   -- IEEE754 components to double:
>>   -- sign * (2 ^ (exp - 1023)) * (mantissa / _2pow52 + normal).
>>   local a = 1 * (2 ^ (1083 - 1023)) * (4080546448249347 / _2pow52 + 1)
>> diff --git a/test/tarantool-tests/lj-918-fma-numerical-accuracy.test.lua b/test/tarantool-tests/lj-918-fma-numerical-accuracy.test.lua
>> index 25b59707..2472f05a 100644
>> --- a/test/tarantool-tests/lj-918-fma-numerical-accuracy.test.lua
>> +++ b/test/tarantool-tests/lj-918-fma-numerical-accuracy.test.lua
>> @@ -20,9 +20,13 @@ local _2pow52 = 2 ^ 52
>>   -- double rounding. The numbers from the original issue are good
>>   -- enough.
>>   --
>> +-- luacheck: push no max comment line length
> Side note: Can it will be done without push/pop interface? Like for
> globals we use:
> | luacheck: no global
>
>> +--
>>   -- [1]:https://developer.arm.com/documentation/dui0801/g/A64-Floating-point-Instructions/FMSUB
>>   -- [2]:https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation
>>   --
>> +-- luacheck: pop
>> +--
>>   -- IEEE754 components to double:
>>   -- sign * (2 ^ (exp - 1023)) * (mantissa / _2pow52 + normal).
>>   local a = 1 * (2 ^ (1083 - 1023)) * (4080546448249347 / _2pow52 + 1)
>> diff --git a/test/tarantool-tests/or-144-gc64-asmref-l.test.lua b/test/tarantool-tests/or-144-gc64-asmref-l.test.lua
>> index 18c6efb2..cbc13278 100644
>> --- a/test/tarantool-tests/or-144-gc64-asmref-l.test.lua
>> +++ b/test/tarantool-tests/or-144-gc64-asmref-l.test.lua
>> @@ -5,11 +5,15 @@ local test = tap.test('or-144-gc64-asmref-l'):skipcond({
>>   
>>   test:plan(1)
>>   
>> +-- luacheck: push no max comment line length
>> +--
>>   -- Test file to demonstrate LuaJIT `IR_LREF` assembling incorrect
>>   -- behaviour.
>>   -- See also:
>>   -- *https://github.com/openresty/lua-resty-core/issues/144.
>>   -- *https://www.freelists.org/post/luajit/Consistent-SEGV-on-x64-with-the-latest-LuaJIT-v21-GC64-mode.
>> +--
>> +-- luacheck: pop
>>   
>>   jit.opt.start('hotloop=1')
>>   
>> -- 
>> 2.34.1
>>

[-- Attachment #2: Type: text/html, Size: 16414 bytes --]

  reply	other threads:[~2025-02-12  4:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-11  6:55 Sergey Bronnikov via Tarantool-patches
2025-02-11 11:51 ` Sergey Kaplun via Tarantool-patches
2025-02-12  4:46   ` Sergey Bronnikov via Tarantool-patches [this message]
2025-02-12  7:41     ` Sergey Kaplun via Tarantool-patches
2025-02-12 13:35       ` Sergey Bronnikov via Tarantool-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f2ee2664-593f-4604-8ea2-9ab9932aa65c@tarantool.org \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=estetus@gmail.com \
    --cc=sergeyb@tarantool.org \
    --cc=skaplun@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH luajit] test: limit code and comment max length by 80' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox