Обсуждение: 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
Вложения
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