Using Test::More test functions for pg_rewind
check_query() in RewindTest.pm currently has this comment before handrolling
tests for return code and stderr:
# We don't use ok() for the exit code and stderr, because we want this
# check to be just a single test.
The code came with the initial import of pg_rewind, and there is no further
explanation but I guess it was to make test planning easier since each
check_query would count as 1 test. (inspecting old pre-import pg_rewind repos
on Github didn't given any other insights). Does anymore remember the
rationale for this?
Since we moved to done_testing() with 549ec201d we no longer need be concerned
with test counts, so we can replace this with normal is() tests, as per the
attached, making the output in the errorpath consistent with other tests.
Unless I'm missing something important here.
--
Daniel Gustafsson https://vmware.com/
Attachments:
0001-Use-test-functions-in-pg_rewind-test-module.patchapplication/octet-stream; name=0001-Use-test-functions-in-pg_rewind-test-module.patch; x-unix-mode=0644Download
From a10c2520372c672453e10115249ed9882e0345db Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <daniel@yesql.se>
Date: Mon, 21 Feb 2022 14:25:02 +0100
Subject: [PATCH] Use test functions in pg_rewind test module
Commit 61081e75c introduced pg_rewind along with the test suite, which
ensured that subroutines didn't incur more than one planned test. Now
that we no longer explicitly plan test runs (since 549ec201d) we can
use the usual Test::More functions.
---
src/bin/pg_rewind/t/RewindTest.pm | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)
diff --git a/src/bin/pg_rewind/t/RewindTest.pm b/src/bin/pg_rewind/t/RewindTest.pm
index 2fedc626cc..5651602858 100644
--- a/src/bin/pg_rewind/t/RewindTest.pm
+++ b/src/bin/pg_rewind/t/RewindTest.pm
@@ -102,21 +102,10 @@ sub check_query
],
'>', \$stdout, '2>', \$stderr;
- # We don't use ok() for the exit code and stderr, because we want this
- # check to be just a single test.
- if (!$result)
- {
- fail("$test_name: psql exit code");
- }
- elsif ($stderr ne '')
- {
- diag $stderr;
- fail("$test_name: psql no stderr");
- }
- else
- {
- is($stdout, $expected_stdout, "$test_name: query result matches");
- }
+ is($result, 1, "$test_name: psql exit code");
+ is($stderr, '', "$test_name: psql no stderr");
+ is($stdout, $expected_stdout, "$test_name: query result matches");
+
return;
}
--
2.24.3 (Apple Git-128)
On 2/21/22 09:10, Daniel Gustafsson wrote:
check_query() in RewindTest.pm currently has this comment before handrolling
tests for return code and stderr:# We don't use ok() for the exit code and stderr, because we want this
# check to be just a single test.The code came with the initial import of pg_rewind, and there is no further
explanation but I guess it was to make test planning easier since each
check_query would count as 1 test. (inspecting old pre-import pg_rewind repos
on Github didn't given any other insights). Does anymore remember the
rationale for this?Since we moved to done_testing() with 549ec201d we no longer need be concerned
with test counts, so we can replace this with normal is() tests, as per the
attached, making the output in the errorpath consistent with other tests.
Unless I'm missing something important here.
Looks OK. Now we require a sufficiently modern Test::More we could have
made it a subtest if necessary.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
On 21 Feb 2022, at 16:17, Andrew Dunstan <andrew@dunslane.net> wrote:
Looks OK.
Thanks, pushed.
--
Daniel Gustafsson https://vmware.com/