Thread: Confusing TAP tests readme file
Hi all, I was checking out TAP tests documentation. And I found confusing this part of src/test/perl/README file: my $ret = $node->psql('postgres', 'SELECT 1'); is($ret, '1', 'SELECT 1 returns 1'); The returning value of psql() function is the exit code of the psql. Hence this test will never pass since psql returns 0 if query was successfully executed. Probably it was meant to be the safe_psql() function instead which returns stdout: my $ret = $node->safe_psql('postgres', 'SELECT 1'); is($ret, '1', 'SELECT 1 returns 1'); or else: my ($ret, $stdout, $stderr) = $node->psql('postgres', 'SELECT 1'); is($stdout, '1', 'SELECT 1 returns 1'); The attached patch fixes this. Regards, Ildar Musin -- Ildar Musin i.musin@postgrespro.ru
Attachment
On Mon, Jul 25, 2016 at 7:42 PM, Ildar Musin <i.musin@postgrespro.ru> wrote: > I was checking out TAP tests documentation. And I found confusing this part > of src/test/perl/README file: > > my $ret = $node->psql('postgres', 'SELECT 1'); > is($ret, '1', 'SELECT 1 returns 1'); Good catch. > The returning value of psql() function is the exit code of the psql. Hence > this test will never pass since psql returns 0 if query was successfully > executed. Probably it was meant to be the safe_psql() function instead which > returns stdout: > > my $ret = $node->safe_psql('postgres', 'SELECT 1'); > is($ret, '1', 'SELECT 1 returns 1'); > > or else: > > my ($ret, $stdout, $stderr) = > $node->psql('postgres', 'SELECT 1'); > is($stdout, '1', 'SELECT 1 returns 1'); > > The attached patch fixes this. Just using psql_safe looks fine to me. -- Michael
On Mon, Jul 25, 2016 at 9:53 PM, Michael Paquier <michael.paquier@gmail.com> wrote: > On Mon, Jul 25, 2016 at 7:42 PM, Ildar Musin <i.musin@postgrespro.ru> wrote: >> I was checking out TAP tests documentation. And I found confusing this part >> of src/test/perl/README file: >> >> my $ret = $node->psql('postgres', 'SELECT 1'); >> is($ret, '1', 'SELECT 1 returns 1'); > > Good catch. > >> The returning value of psql() function is the exit code of the psql. Hence >> this test will never pass since psql returns 0 if query was successfully >> executed. Probably it was meant to be the safe_psql() function instead which >> returns stdout: >> >> my $ret = $node->safe_psql('postgres', 'SELECT 1'); >> is($ret, '1', 'SELECT 1 returns 1'); >> >> or else: >> >> my ($ret, $stdout, $stderr) = >> $node->psql('postgres', 'SELECT 1'); >> is($stdout, '1', 'SELECT 1 returns 1'); >> >> The attached patch fixes this. > > Just using psql_safe looks fine to me. Pushed. Thanks! Regards, -- Fujii Masao