summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier2021-09-22 01:13:38 +0000
committerMichael Paquier2021-09-22 01:13:38 +0000
commit1a9d802828110c87a207785aaf6b00d8917a86ad (patch)
tree01b41fbdd7f25b535b5474050151b0fcd3f2915d
parent0d91c52a8fc71bfe5664a13368e42e1dabc5fe78 (diff)
Fix some issues with TAP tests for postgres -C
This addresses two issues with the tests added in 0c39c292 for runtime GUCs: - Re-enable the test on Msys. The test could fail because of \r\n generated by Msys perl. 0d91c52a has taken care of this issue. - Allow the test to run in the context of a privileged account. CIs running under privileged accounts would fail on permission failures, as reported by Andres Freund. This issue is fixed by wrapping the postgres command within pg_ctl as the latter will take care of any permissions needed. The test checking a failure of postgres -C for a runtime parameter with an instance running is removed, as pg_ctl produces an unstable error code (no need for a CI to reproduce that). Discussion: https://postgr.es/m/[email protected]
-rw-r--r--src/bin/pg_checksums/t/002_actions.pl37
1 files changed, 14 insertions, 23 deletions
diff --git a/src/bin/pg_checksums/t/002_actions.pl b/src/bin/pg_checksums/t/002_actions.pl
index 97492caab4..0b3e19ab7c 100644
--- a/src/bin/pg_checksums/t/002_actions.pl
+++ b/src/bin/pg_checksums/t/002_actions.pl
@@ -11,7 +11,7 @@ use PostgresNode;
use TestLib;
use Fcntl qw(:seek);
-use Test::More tests => 69;
+use Test::More tests => 66;
# Utility routine to create and check a table with corrupted checksums
@@ -181,34 +181,25 @@ command_fails(
# Test postgres -C for an offline cluster.
# Run-time GUCs are safe to query here. Note that a lock file is created,
-# then unlinked, leading to an extra LOG entry showing in stderr.
-SKIP:
-{
- skip "unstable output generated with Msys", 3
- if ($Config{osname} eq 'msys');
- command_checks_all(
- [ 'postgres', '-D', $pgdata, '-C', 'data_checksums' ],
- 0,
- [qr/^on$/],
- # LOG entry when unlinking lock file.
- [qr/database system is shut down/],
- 'data_checksums=on is reported on an offline cluster');
-}
+# then removed, leading to an extra LOG entry showing in stderr. This uses
+# log_min_messages=fatal to remove any noise. This test uses a startup
+# wrapped with pg_ctl to allow the case where this runs under a privileged
+# account on Windows.
+command_checks_all(
+ [
+ 'pg_ctl', 'start', '-D', $pgdata, '-s', '-o',
+ '-C data_checksums -c log_min_messages=fatal'
+ ],
+ 1,
+ [qr/^on$/],
+ [qr/could not start server/],
+ 'data_checksums=on is reported on an offline cluster');
# Checks cannot happen with an online cluster
$node->start;
command_fails([ 'pg_checksums', '--check', '-D', $pgdata ],
"fails with online cluster");
-# Test postgres -C on an online cluster.
-command_fails_like(
- [ 'postgres', '-D', $pgdata, '-C', 'data_checksums' ],
- qr/lock file .* already exists/,
- 'data_checksums is not reported on an online cluster');
-command_ok(
- [ 'postgres', '-D', $pgdata, '-C', 'work_mem' ],
- 'non-runtime parameter is reported on an online cluster');
-
# Check corruption of table on default tablespace.
check_relation_corruption($node, 'corrupt1', 'pg_default');