Hi all,

Each time I do development on Windows, I get annoyed by the fact that
it is not easy to run individual test scripts in the same way as we do
on any other platforms, using PROVE_TESTS, or even PROVE_FLAGS.  And
there have been recent complaints about not being able to do that.

Please find attached a patch to support both variables, with some
documentation.  Using a terminal on Windows, one can set those
variables using just..  "set", say:
set PROVE_FLAGS=--timer
set PROVE_TESTS=t/020*.pl t/010*.pl

Note the absence of quotes for the second one, so as it is possible to
apply cleanly glob() to each element passed down.

Thoughts?
--
Michael
diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml
index 47e5f7c8ae..3692b49b39 100644
--- a/doc/src/sgml/install-windows.sgml
+++ b/doc/src/sgml/install-windows.sgml
@@ -496,6 +496,19 @@ $ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';
     </varlistentry>
    </variablelist>
   </para>
+
+  <para>
+   The TAP tests run with <command>vcregress</command> support the
+   environment variables <varname>PROVE_TESTS</varname>, that is expanded
+   automatically using the name patterns given, and
+   <varname>PROVE_FLAGS</varname>. These can for instance be set
+   on a Windows terminal as follows, before running
+   <command>vcregress</command>:
+<programlisting>
+set PROVE_FLAGS=--timer
+set PROVE_TESTS=t/020*.pl t/010*.pl
+</programlisting>
+  </para>
  </sect2>
 
  </sect1>
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
index 266098e193..d6c33f68ee 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 get and list individual tests.
+	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;

Attachment: signature.asc
Description: PGP signature

Reply via email to