psql: Additional tests
authorPeter Eisentraut <peter@eisentraut.org>
Tue, 1 Mar 2022 10:21:20 +0000 (11:21 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Tue, 1 Mar 2022 10:23:28 +0000 (11:23 +0100)
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

src/bin/psql/t/001_basic.pl

index f416e0ab5e8f0c45e9c705c77bb956cbe5cca422..44ecd05add6bb7563734cd79bea982d319215295 100644 (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();