psql: Additional tests

Add a few TAP tests for things that happen while a user query is being
sent:

- \timing
- client encoding handling
- notifications

Discussion: https://www.postgresql.org/message-id/3199e176-424e-1bef-f180-c1548466c2da@enterprisedb.com
This commit is contained in:
Peter Eisentraut 2022-03-01 11:21:20 +01:00
parent a33e17f210
commit 9028cce426
1 changed files with 36 additions and 1 deletions

View File

@ -60,7 +60,7 @@ foreach my $arg (qw(commands variables))
}
my $node = PostgreSQL::Test::Cluster->new('main');
$node->init;
$node->init(extra => [ '--locale=C', '--encoding=UTF8' ]);
$node->append_conf(
'postgresql.conf', q{
wal_level = 'logical'
@ -80,4 +80,39 @@ psql_fails_like(
qr/unexpected PQresultStatus: 8$/,
'handling of unexpected PQresultStatus');
# test \timing
psql_like(
$node,
'\timing on
SELECT 1',
qr/^1$
^Time: \d+.\d\d\d ms/m,
'\timing');
# test that ENCODING variable is set and that it is updated when
# client encoding is changed
psql_like(
$node,
'\echo :ENCODING
set client_encoding = LATIN1;
\echo :ENCODING',
qr/^UTF8$
^LATIN1$/m,
'ENCODING variable is set and updated');
# test LISTEN/NOTIFY
psql_like(
$node,
'LISTEN foo;
NOTIFY foo;',
qr/^Asynchronous notification "foo" received from server process with PID \d+\.$/,
'notification');
psql_like(
$node,
"LISTEN foo;
NOTIFY foo, 'bar';",
qr/^Asynchronous notification "foo" with payload "bar" received from server process with PID \d+\.$/,
'notification with payload');
done_testing();