[Tarantool-patches] [PATCH luajit 3/7] test: stop using utils.selfrun in tests

Igor Munkin imun at tarantool.org
Mon Feb 27 12:16:26 MSK 2023


Max,

Thanks for your review! See my answers below.

On 16.02.23, Maxim Kokryashkin wrote:
> 
> Hi, Igor!
> LGTM, except for a few nits below.
>  

<snipped>

> >>diff --git a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua
> >>index dd02130c..f4795db0 100644
> >>--- a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua
> >>+++ b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua
> >>@@ -3,52 +3,43 @@ local utils = require('utils')
> ><snipped>
> >>+ -- TODO: Leave another toxic comment regarding SIP on macOS.
> >That comment is unnecessary. Here and below.

================================================================================

diff --git a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua
index ff3eaf01..ad06c329 100644
--- a/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua
+++ b/test/tarantool-tests/gh-4427-ffi-sandwich.test.lua
@@ -6,8 +6,23 @@ local test = tap.test('gh-4427-ffi-sandwich'):skipcond({
 
 test:plan(2)
 
+-- <makecmd> runs %testname%/script.lua by <LUAJIT_TEST_BINARY>
+-- with the given environment, launch options and CLI arguments.
 local script = require('utils').makecmd(arg, {
-  -- TODO: Leave another toxic comment regarding SIP on macOS.
+  -- XXX: Apple tries their best to "protect their users from
+  -- malware". As a result SIP (see the link[1] below) has been
+  -- designed and released. Now, Apple developers are so
+  -- protected, that they can load nothing being not installed in
+  -- the system, since the environment is sanitized before the
+  -- child process is launched. In particular, environment
+  -- variables starting with DYLD_ and LD_ are unset for child
+  -- process. For more info, see the docs[2] below.
+  --
+  -- The environment variable below is used by FFI machinery to
+  -- find the proper shared library.
+  --
+  -- [1]: https://support.apple.com/en-us/HT204899
+  -- [2]: https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/RuntimeProtections/RuntimeProtections.html
   env = { DYLD_LIBRARY_PATH = os.getenv('DYLD_LIBRARY_PATH') },
   redirect = '2>&1',
 })

================================================================================

>> ><snipped>
> >>
> >>diff --git a/test/tarantool-tests/utils.lua b/test/tarantool-tests/utils.lua
> >>index eb11d40d..41a7c22a 100644
> >>--- a/test/tarantool-tests/utils.lua
> >>+++ b/test/tarantool-tests/utils.lua

<snipped>

> >>+ }, {
> >>+ __call = function(self, ...)
> >>+ local cmd = ('<ENV> <LUABIN> <REDIRECT> <SCRIPT>'):gsub('%<(%w+)>', self)
> >>+ .. (' %s'):rep(select('#', ...)):format(...)
> >>+ return io.popen(cmd):read('*all'):gsub('^%s+', ''):gsub('%s+$', '')
> >>+ end
> >>+ })
> >That part is barely readable, so I think you should either drop
> >a comment with explanation, or rewrite it in a more readable way.

Well, yeah... my Perl background is coming out ;)

Anyway, here is the comment:

================================================================================

diff --git a/test/tarantool-tests/tap.lua b/test/tarantool-tests/tap.lua
index ac04c01d..f5e08043 100644
--- a/test/tarantool-tests/tap.lua
+++ b/test/tarantool-tests/tap.lua
@@ -60,8 +65,17 @@ function M.makecmd(arg, opts)
     REDIRECT = opts and opts.redirect or '',
   }, {
     __call = function(self, ...)
+      -- This line just makes the command for <io.popen> by the
+      -- following steps:
+      -- 1. Replace the placeholders with the corresponding values
+      --    given to the command constructor (e.g. script, env)
+      -- 2. Join all CLI arguments given to the __call metamethod
+      -- 3. Concatenate the results of step 1 and step 2 to obtain
+      --    the resulting command.
       local cmd = ('<ENV> <LUABIN> <REDIRECT> <SCRIPT>'):gsub('%<(%w+)>', self)
                   .. (' %s'):rep(select('#', ...)):format(...)
+      -- Trim both leading and trailing whitespace from the output
+      -- produced by the child process.
       return io.popen(cmd):read('*all'):gsub('^%s+', ''):gsub('%s+$', '')
     end
   })

================================================================================

> >> end
> >> 
> >> function M.skipcond(condition, message)
> >>--
> >>2.30.2
> >--
> >Best regards,
> >Maxim Kokryashkin
>
-- 
Best regards,
IM


More information about the Tarantool-patches mailing list