From: Alexander Turenko <alexander.turenko@tarantool.org> To: Sergey Nikiforov <void@tarantool.org> Cc: tarantool-patches@dev.tarantool.org, Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Subject: Re: [Tarantool-patches] [PATCH] lua/key_def: fix compare_with_key() part count check Date: Thu, 17 Dec 2020 15:37:32 +0300 [thread overview] Message-ID: <20201217123732.rnaz2eu6752qk42f@tkn_work_nb> (raw) In-Reply-To: <20201214153527.451373-1-void@tarantool.org> > diff --git a/test/app-tap/gh-5307-key_def-part-count-check.result b/test/app-tap/gh-5307-key_def-part-count-check.result > new file mode 100644 > index 000000000..d47a905a5 > --- /dev/null > +++ b/test/app-tap/gh-5307-key_def-part-count-check.result > @@ -0,0 +1 @@ > +Failed (as it should), error message: Invalid key part count (expected [0..1], got 9) > diff --git a/test/app-tap/gh-5307-key_def-part-count-check.test.lua b/test/app-tap/gh-5307-key_def-part-count-check.test.lua > new file mode 100755 > index 000000000..8c8f6f34b > --- /dev/null > +++ b/test/app-tap/gh-5307-key_def-part-count-check.test.lua box-tap fit better here, because key_def (C part and the Lua module) is part of the database implementation ('box'). > @@ -0,0 +1,25 @@ > +#!/usr/bin/env tarantool > + > +key_def = require('key_def') > +kd = key_def.new({{fieldno = 1, type = 'unsigned'}}) `x = 42` is equivalent of `_G.x = 42` if there is no definition of `x` in the scope. I would use 'local' for such code hunks. It does not change any behaviour here, just for the sake of our usual style for Lua modules. In a module it is undesirable to set a global variable, which accessible for other modules. At least for a variable that is not intended to be exported. > + > +-- Should succeed > +if (kd:compare_with_key({1}, {1}) ~= 0) then > + print("Error: should be equal") > +end I would prefer to use 'tap' built-in module ([1]) for such tests. It produces TAP13 output and does not require a result file. Most of tests in the '*-tap' test suites procude TAP13 output. [1]: https://www.tarantool.io/en/doc/latest/reference/reference_lua/tap/ > + > +-- Should succeed > +if (kd:compare_with_key({1}, {2}) >= 0) then > + print("Error: should be less") > +end > + > +-- Should fail > +ok, err = pcall(function() > + kd:compare_with_key({1}, {1, 2, 3, 4, 5, 6, 7, 8, 9}) > + end) The indentation is strange here. I would write it like so: | local exp_err = '<..expected error message..>' | local ok, err = pcall(kd.compare_with_key, kd, {1}, {1, 2, 3, 4, 5, 6, 7, 8, 9}) | test:is_deeply({ok, tostring(err)}, {false, exp_err}, '<..short description..>') tostring() is to convert a box.error object to a string, otherwise is_deeply() fails to find them equal. Or, with extra function: | local exp_err = '<..expected error message..>' | local ok, err = pcall(function() | return kd:compare_with_key({1}, {1, 2, 3, 4, 5, 6, 7, 8, 9}) | end) | test:is_deeply({ok, tostring(err)}, {false, exp_err}, '<..short description..>') (Personally I prefer to avoid extra wrapping function, when we want to just call one function under pcall). > +if (ok) then > + print("Error: it should not have succeeded") > +else > + print("Failed (as it should), error message: " .. err) > +end An if condition may be written without parentheses in Lua. I would explicitly set an exit code: | os.exit(test:check() and 0 or 1) This way we have more freedom in automation: say, we can run a subset of tests without test-run and check their exit code without checks for output. To be honest, I just find it more intuitive, when a failing test process set a non-zero exit code. It would be great to also open a PR to the tuple-keydef module with the new test. I fixed the corresponding problem in the module, but don't add any test for it. https://github.com/tarantool/tuple-keydef/issues/7
prev parent reply other threads:[~2020-12-17 12:37 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-14 15:35 Sergey Nikiforov 2020-12-16 22:34 ` Vladislav Shpilevoy 2020-12-17 11:28 ` Alexander Turenko 2020-12-17 13:27 ` Sergey Nikiforov 2020-12-17 16:41 ` Alexander Turenko 2020-12-20 16:33 ` Vladislav Shpilevoy 2020-12-17 12:37 ` Alexander Turenko [this message]
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=20201217123732.rnaz2eu6752qk42f@tkn_work_nb \ --to=alexander.turenko@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --cc=void@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH] lua/key_def: fix compare_with_key() part count check' \ /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