> On 1 Dec 2022, at 16:18, Peter Eisentraut <[email protected]>
> wrote:
>
> I wanted to test the different pg_upgrade transfer modes (--link, --clone),
> but that was not that easy, because there is more than one place in the test
> script you have to find and manually change. So I wrote a little patch to
> make that easier. It's still manual, but it's a start. (In principle, we
> could automatically run the tests with each supported mode in a loop, but
> that would be very slow.)
Wouldn't it be possible, and less change-code-manual, to accept this via an
extension to PROVE_FLAGS? Any options after :: to prove are passed to the
test(s) [0] so we could perhaps inspect @ARGV for the mode if we invent a new
way to pass arguments. Something along the lines of the untested sketch
below in the pg_upgrade test:
+# Optionally set the file transfer mode for the tests via arguments to PROVE
+my $mode = (@ARGV);
+$mode = '--copy' unless defined;
.. together with an extension to Makefile.global.in ..
- $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if
$(PROVE_TESTS),$(PROVE_TESTS),t/*.pl)
+ $(PROVE) $(PG_PROVE_FLAGS) $(PROVE_FLAGS) $(if
$(PROVE_TESTS),$(PROVE_TESTS),t/*.pl) $(PROVE_TEST_ARGS)
.. should *I think* allow for passing the mode to the tests via:
make -C src/bin/pg_upgrade check PROVE_TEST_ARGS=":: --link"
The '::' part should of course ideally be injected automatically but the above
is mostly thinking out loud pseudocode so I didn't add that.
This could probably benefit other tests as well, to make it eas{y|ier} to run
extended testing on certain buildfarm animals or in the CFBot CI on specific
patches in the commitfest.
> While doing that, I also found it strange that the default transfer mode
> (referred to as "copy" internally) did not have any external representation,
> so it is awkward to refer to it in text, and obscure to see where it is used
> for example in those test scripts. So I added an option --copy, which
> effectively does nothing, but it's not uncommon to have options that select
> default behaviors explicitly. (I also thought about something like a "mode"
> option with an argument, but given that we already have --link and --clone,
> this seemed the most sensible.)
Agreed, +1 on adding --copy regardless of the above.
--
Daniel Gustafsson https://vmware.com/
[0] https://perldoc.perl.org/prove#Arguments-to-Tests