From 5bca69a76b3046a85c60c48271c1831fd5affa51 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Fri, 5 Mar 2021 10:12:49 +0900 Subject: [PATCH] Add support for PROVE_TESTS and PROVE_FLAGS in MSVC scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These can be set in buildenv.pl or a "set" command within a Windows terminal. The MSVC script vcregress.pl parses the values available in the environment to build the resulting prove commands, and the parsing of PROVE_TESTS is able to handle name patterns in the same way as other platforms. Not specifying those environment values makes vcregress.pl fall back to the previous default, with no extra flags for the prove command, and all the tests run within t/. Author: Michael Paquier Reviewed-by: Juan José Santamaría Flecha, Julien Rouhaud Discussion: https://postgr.es/m/YD9GigwHoL6lFY2y@paquier.xyz --- doc/src/sgml/install-windows.sgml | 18 ++++++++++++++++++ src/tools/msvc/vcregress.pl | 16 +++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml index 47e5f7c8ae..64687b12e6 100644 --- a/doc/src/sgml/install-windows.sgml +++ b/doc/src/sgml/install-windows.sgml @@ -496,6 +496,24 @@ $ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib'; + + + The TAP tests run with vcregress support the + environment variables PROVE_TESTS, that is expanded + automatically using the name patterns given, and + PROVE_FLAGS. These can be set on a Windows terminal, + before running vcregress: + +set PROVE_FLAGS=--timer --jobs 2 +set PROVE_TESTS=t/020*.pl t/010*.pl + + It is also possible to set up those parameters in + buildenv.pl: + +$ENV{PROVE_FLAGS}='--timer --jobs 2' +$ENV{PROVE_TESTS}='t/020*.pl t/010*.pl' + + diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index 266098e193..14cceac31e 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -209,7 +209,21 @@ sub tap_check my $dir = shift; chdir $dir; - my @args = ("prove", @flags, glob("t/*.pl")); + # Fetch and adjust PROVE_TESTS, applying glob() to each element + # defined to build a list of all the tests matching patterns. + my $prove_tests_val = $ENV{PROVE_TESTS} || "t/*.pl"; + my @prove_tests_array = split(/\s+/, $prove_tests_val); + my @prove_tests = (); + foreach (@prove_tests_array) + { + push(@prove_tests, glob($_)); + } + + # Fetch and adjust PROVE_FLAGS, handling multiple arguments. + my $prove_flags_val = $ENV{PROVE_FLAGS} || ""; + my @prove_flags = split(/\s+/, $prove_flags_val); + + my @args = ("prove", @flags, @prove_tests, @prove_flags); # adjust the environment for just this test local %ENV = %ENV;