Re: Making background psql nicer to use in tap tests
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Daniel Gustafsson <daniel@yesql.se>, Andres Freund <andres@anarazel.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>,
PostgreSQL Hackers <pgsql-hackers@postgresql.org>,
Melanie Plageman <melanieplageman@gmail.com>
Date: 2023-03-17T13:48:31Z
Lists: pgsql-hackers
On 2023-03-17 Fr 05:48, Daniel Gustafsson wrote: >> On 15 Mar 2023, at 02:03, Andres Freund<andres@anarazel.de> wrote: >>> Returning a hash seems like a worse option since it will complicate callsites >>> which only want to know success/failure. >> Yea. Perhaps it's worth having a separate function for this? ->query_rc() or such? > If we are returning a hash then I agree it should be a separate function. > Maybe Andrew has input on which is the most Perl way of doing this. I think the perlish way is use the `wantarray` function. Perl knows if you're expecting a scalar return value or a list (which includes a hash). return wantarray ? $retval : (list or hash); A few more issues: A common perl idiom is to start private routine names with an underscore. so I'd rename wait_connect to _wait_connect; Why is $restart_before_query a package/class level value instead of an instance value? And why can we only ever set it to 1 but not back again? Maybe we don't want to, but it looks odd. If we are going to keep this as a separate package, then we should put some code in the constructor to prevent it being called from elsewhere than the Cluster package. e.g. # this constructor should only be called from PostgreSQL::Test::Cluster my ($package, $file, $line) = caller; die "Forbidden caller of constructor: package: $package, file: $file:$line" unless $package eq 'PostgreSQL::Test::Cluster'; This should refer to the full class name: +=item $node->background_psql($dbname, %params) => BackgroundPsql instance Still reviewing ... cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com
Commits
-
Fix missing installation/uninstallation rules for BackgroundPsql.pm
- 241ef53b6a95 12.20 landed
- 0d80e59a1b2c 13.16 landed
- 1185be355462 14.13 landed
- 9d7506a2f7cb 15.8 landed
-
Backport BackgroundPsql perl test module
- 4b467a6581af 12.20 landed
- 12f327b210b3 13.16 landed
- 31877cd8ec8c 14.13 landed
- d5fd7865f068 15.8 landed
- 187b8991f70f 16.4 landed
-
Add missing uninstallation rule for BackgroundPsql.pm
- 7039c7cff673 16.0 cited
-
Fix missing installation rules for BackgroundPsql.pm
- a4c17c86176c 16.0 cited
-
Skip \password TAP test on old IPC::Run versions
- 2e57ffe12f6b 16.0 landed
-
Test SCRAM iteration changes with psql \password
- bf5a894c5571 16.0 landed
-
Refactor background psql TAP functions
- 664d757531e1 16.0 landed