From: Sergey Bronnikov <sergeyb@tarantool.org>
To: Alexander Turenko <alexander.turenko@tarantool.org>
Cc: o.piskunov@tarantool.org, tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v2] Add option to update file with reference output
Date: Thu, 4 Jun 2020 16:07:03 +0300 [thread overview]
Message-ID: <20200604130703.GC19065@pony.bronevichok.ru> (raw)
In-Reply-To: <20200603172711.2dmy5bfekkzhi4as@tkn_work_nb>
Alexander,
On 20:27 Wed 03 Jun , Alexander Turenko wrote:
> I'm mostly okay with the patch, but decided to share several thoughts
> around it. Whether you'll follow them or not, I'll consider it
> ready-to-go. Just ping me, when you'll update everything that you want
> to update.
Patch has been updated according your comments. Also I have tested possible
cases:
- diff-based test, option --update-result is _not_ specified, result file is absent
======================================================================================
WORKR TEST PARAMS RESULT
---------------------------------------------------------------------------------
[001] box/tuple.test.lua
[001] TAP13 parse failed (Missing plan in the TAP source).
[001]
[001] No result file (box/tuple.result) found.
[001] Run the test with --update-result option to write the new result file.
[001] [ fail ]
---------------------------------------------------------------------------------
- diff-based test, option --update-result is _not_ specified, result file is present
======================================================================================
WORKR TEST PARAMS RESULT
---------------------------------------------------------------------------------
[001] box/tuple.test.lua [ pass ]
---------------------------------------------------------------------------------
- diff-based test, option --update-result is specified, result file is absent
======================================================================================
WORKR TEST PARAMS RESULT
---------------------------------------------------------------------------------
[001] box/tuple.test.lua
[001] TAP13 parse failed (Missing plan in the TAP source).
[001]
[001] No result file (box/tuple.result) found.
[001] [ updated ]
---------------------------------------------------------------------------------
- diff-based test, option --update-result is specified, result file is present
======================================================================================
WORKR TEST PARAMS RESULT
---------------------------------------------------------------------------------
[001] box/tuple.test.lua [ pass ]
---------------------------------------------------------------------------------
- TAP-based test, option --update-result is _not_ specified
======================================================================================
WORKR TEST PARAMS RESULT
---------------------------------------------------------------------------------
[001] box-tap/session.test.lua [ pass ]
---------------------------------------------------------------------------------
- TAP-based test, option --update-result is specified
======================================================================================
WORKR TEST PARAMS RESULT
---------------------------------------------------------------------------------
[001] box-tap/session.test.lua [ pass ]
---------------------------------------------------------------------------------
> WBR, Alexander Turenko.
>
> > diff --git a/lib/test.py b/lib/test.py
> > index 8bc1feb..733b90c 100644
> > --- a/lib/test.py
> > +++ b/lib/test.py
> > @@ -15,6 +15,7 @@ except ImportError:
> > from StringIO import StringIO
> >
> > import lib
> > +from lib.options import Options
>
> Unused.
>
> flake8 complains about this.
removed
> > @@ -235,9 +236,20 @@ class Test(object):
> > elif (self.is_executed_ok and not
> > self.is_equal_result and not
> > os.path.isfile(self.result)) and not is_tap:
> > + if lib.Options().args.update_result:
> > + shutil.copy(self.tmp_result, self.result)
> > + short_status = 'new'
> > + color_stdout("[ new ]\n", schema='test_new')
> > + else:
> > + short_status = 'fail'
> > + color_stdout("[ fail ]\n", schema='test_fail')
>
> (In brief: there are two way to do so; please choose one, which looks
> better for you.)
>
> In [1] I proposed to keep this if-elif-else branching to be splitted by
> status and to fall into 'else' at fail. The reason is that the 'else'
> branch already do everything that we should do at fail: print output
> diff, tarantool log, valgring log where appropriate.
>
> However in this certain case we have nothing to report:
> self.is_crash_reported is set to True in check_tap_output() and 'TAP13
> parse failed' message is already shown.
>
> So I would just note that falling into 'else' branch would look more 'in
> the spirit' of this code block, but I would let you decide how the code
> would look better.
>
> The change upward your patch would look so:
>
> - elif (self.is_executed_ok and not
> - self.is_equal_result and not
> - os.path.isfile(self.result)) and not is_tap:
> - if lib.Options().args.update_result:
> - shutil.copy(self.tmp_result, self.result)
> - short_status = 'new'
> - color_stdout("[ new ]\n", schema='test_new')
> - else:
> - short_status = 'fail'
> - color_stdout("[ fail ]\n", schema='test_fail')
> + elif (self.is_executed_ok and
> + not self.is_equal_result and
> + not os.path.isfile(self.result) and
> + not is_tap and
> + lib.Options().args.update_result):
> + shutil.copy(self.tmp_result, self.result)
> + short_status = 'new'
> + color_stdout("[ new ]\n", schema='test_new')
>
Applied your diff above.
> (Also moved 'not' from line ends, because it was confusing.)
>
> Actual behaviour of both variants is the same.
>
> BTW, the 'TAP13 parse failed' message may now appear in the case, when
> non-tap13 test fails and --update-result option is not passed. I would
> add a few words here, like: 'No result file found. TAP13 parse failed'.
> Maybe even 'Run the test with --update-result option to write the new
> result file' on a separate line. It would give a developer better
> understanding what actually occurs.
>
> [1]: https://lists.tarantool.org/pipermail/tarantool-patches/2020-May/016775.html
Agree. Updated error messages in check_tap_output():
except ValueError as e:
- color_stdout('\nTAP13 parse failed: %s\n' % str(e),
+ color_stdout('\nTAP13 parse failed (%s).\n' % str(e),
schema='error')
+ color_stdout('\nNo result file (%s) found.\n' % self.result, schema='error')
+ if not lib.Options().args.update_result:
+ color_stdout('Run the test with --update-result option to write the new result file.\n',
+ schema='error')
self.is_crash_reported = True
> > + elif (self.is_executed_ok and
> > + not self.is_equal_result and
> > + os.path.isfile(self.result) and
> > + lib.Options().args.update_result):
> > shutil.copy(self.tmp_result, self.result)
> > - short_status = 'new'
> > - color_stdout("[ new ]\n", schema='test_new')
> > + short_status = 'updated'
> > + color_stdout("[ updated ]\n", schema='test_new')
>
> It looks okay.
>
> > else:
> > has_result = os.path.exists(self.tmp_result)
> > if has_result:
> > @@ -256,7 +268,8 @@ class Test(object):
> > server.print_log(15)
> > where = ": test execution aborted, reason " \
> > "'{0}'".format(diagnostics)
> > - elif not self.is_crash_reported and not self.is_equal_result:
> > + elif (not self.is_crash_reported and not self.is_equal_result and
> > + not lib.Options().args.update_result):
> > self.print_unidiff()
> > server.print_log(15)
> > where = ": wrong test output"
>
> As far as I see, we should not fall here, when --update-result is passed
> (I failed to find any such situation). But even if it would be possible,
> it would be not correct to just hide diff and set 'fail' status under
> --update-result.
>
> I think it is safe enough to assume that update_result is False when
> we're going to report failed status due to different results. I would
> just remove this check and left the code as is.
removed condition with lib.Options().args.update_result
--
sergeyb@
next prev parent reply other threads:[~2020-06-04 13:08 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-19 10:25 sergeyb
2020-05-20 8:03 ` Alexander V. Tikhonov
2020-05-20 8:23 ` Sergey Bronnikov
2020-06-03 17:27 ` Alexander Turenko
2020-06-04 13:07 ` Sergey Bronnikov [this message]
2020-06-08 9:19 ` Alexander Turenko
2020-06-08 15:31 ` Sergey Bronnikov
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=20200604130703.GC19065@pony.bronevichok.ru \
--to=sergeyb@tarantool.org \
--cc=alexander.turenko@tarantool.org \
--cc=o.piskunov@tarantool.org \
--cc=tarantool-patches@dev.tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH v2] Add option to update file with reference output' \
/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