Allow recovery tests to run on Windows as an admin user

This is the only test that fails when run as an admin user. The reason
is that when Postgres is started via pg_ctl its admin privileges are
lowered. However, this test called 'postgres -D datadir' directly,
resulting in a failure. Replace that by calling pg_ctl and then checking
the result for the expected failure, and the logfile for the expected
error message.
pull/39/head
Andrew Dunstan 7 years ago
parent 72c7c4e386
commit 4eff1e9f0b
  1. 11
      src/test/recovery/t/003_recovery_targets.pl

@ -132,6 +132,11 @@ my $node_standby = get_new_node('standby_7');
$node_standby->init_from_backup($node_master, 'my_backup', has_restoring => 1); $node_standby->init_from_backup($node_master, 'my_backup', has_restoring => 1);
$node_standby->append_conf('postgresql.conf', "recovery_target_name = '$recovery_name' $node_standby->append_conf('postgresql.conf', "recovery_target_name = '$recovery_name'
recovery_target_time = '$recovery_time'"); recovery_target_time = '$recovery_time'");
command_fails_like(['postgres', '-D', $node_standby->data_dir],
qr/multiple recovery targets specified/, my $res = run_log(['pg_ctl', '-D', $node_standby->data_dir,
'multiple conflicting settings'); '-l', $node_standby->logfile, 'start']);
ok(! $res, 'invalid recovery startup fails');
my $logfile = slurp_file($node_standby->logfile());
ok ($logfile =~ qr/multiple recovery targets specified/,
'multiple conflicting settings');

Loading…
Cancel
Save