Re: Improved TAP tests by replacing sub-optimal uses of ok() with better Test::More functions
От | Andrew Dunstan |
---|---|
Тема | Re: Improved TAP tests by replacing sub-optimal uses of ok() with better Test::More functions |
Дата | |
Msg-id | f8e47e3e-549b-4cc9-9c20-dfbd49dad644@dunslane.net обсуждение исходный текст |
Ответ на | Improved TAP tests by replacing sub-optimal uses of ok() with better Test::More functions (Sadhuprasad Patro <b.sadhu@gmail.com>) |
Ответы |
Re: Improved TAP tests by replacing sub-optimal uses of ok() with better Test::More functions
Re: Improved TAP tests by replacing sub-optimal uses of ok() with better Test::More functions |
Список | pgsql-hackers |
I experimented by modifying a TAP test inHi all,
I've noticed that many TAP tests in the codebase make sub-optimal use of the "
ok()"
function. Specifically,ok()
is often used for expressions involving comparison operators or regex matches, which is not ideal because other Test::More functions provide much clearer diagnostic messages when tests fail.For example, instead of writing:
ok($var =~ /foo/, "found foo")
it’s better to write:
like($var, /foo/, "found foo")src/bin/pg_dump
to deliberately fail usingok()
. The failure output was quite minimal and didn’t give much detail:# +++ tap check in src/bin/pg_dump +++
t/005_pg_dump_filterfile.pl .. 1/?
# Failed test 'table one dumped'
# at t/005_pg_dump_filterfile.pl line 103.
t/005_pg_dump_filterfile.pl .. 57/? # Looks like you failed 1 test of 108.
t/005_pg_dump_filterfile.pl .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/108 subtests
Test Summary Report
-------------------
t/005_pg_dump_filterfile.pl (Wstat: 256 (exited 1) Tests: 108 Failed: 1)
Failed test: 2
Non-zero exit status: 1Then I changed the same test to uselike()
instead ofok()
, which produced much more informative diagnostics:# +++ tap check in src/bin/pg_dump +++
t/005_pg_dump_filterfile.pl .. 1/?
# Failed test 'table one dumped'
# at t/005_pg_dump_filterfile.pl line 103.
#
# '--
# '
# doesn't match '(?^m:^CREATE TABLE public1\.table_one)'
t/005_pg_dump_filterfile.pl .. 41/? # Looks like you failed 1 test of 108.
t/005_pg_dump_filterfile.pl .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/108 subtests
Test Summary Report
-------------------
t/005_pg_dump_filterfile.pl (Wstat: 256 (exited 1) Tests: 108 Failed: 1)
Failed test: 2
Non-zero exit status: 1Based on this, I’ve replaced all such uses of
ok()
with the more appropriateis()
,isnt()
,like()
,unlike()
, andcmp_ok()
functions, depending on the test case.Please find the attached patch implementing these improvements...
'
Great, I think this is a definite improvement. I saw someone recently complaining about this overuse of ok(), so thanks for doing the work to improve it.
cheers
andrew
-- Andrew Dunstan EDB: https://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: