From: Justin Pryzby Date: Sat, 19 Feb 2022 13:41:36 -0600 Subject: [PATCH 6/7] vcregress: run alltaptests in parallel ci-os-only: windows The test changes are needed to avoid these failures: https://github.com/justinpryzby/postgres/runs/5174636590 [15:59:59.408] Bailout called. Further testing stopped: could not create test directory "c:/cirrus/tmp_check/t_C:\cirrus\src\bin\pgbench\t\002_pgbench_no_server_stuff": Invalid argument [15:59:59.408] FAILED--Further testing stopped: could not create test directory "c:/cirrus/tmp_check/t_C:\cirrus\src\bin\pgbench\t\002_pgbench_no_server_stuff": Invalid argument https://github.com/justinpryzby/postgres/runs/5174788205 [16:37:09.891] # Failed test 'reading traces/disallowed_in_pipeline.trace: could not open "traces/disallowed_in_pipeline.trace": The system cannot find the path specified at C:\cirrus\src\test\modules\libpq_pipeline\t\001_libpq_pipeline.pl line 70. https://github.com/justinpryzby/postgres/runs/5174877506 pg_regress: could not open file "../regress/parallel_schedule" for reading: No such file or directory XXX: avoid breaking src/bin/psql/t/010_tab_completion.pl: Should pass the srcdir to all taptests, or go back to writing the results to tmp_check ? See also: f4ce6c4d3a30ec3a12c7f64b90a6fc82887ddd7b 795862c280c5949bafcd8c44543d887fd32b590a db973ffb3ca43e65a0bf15175a35184a53bf977d --- src/bin/pgbench/t/002_pgbench_no_server.pl | 4 ++-- .../modules/libpq_pipeline/t/001_libpq_pipeline.pl | 3 ++- src/test/modules/test_misc/t/003_check_guc.pl | 2 +- src/test/recovery/t/027_stream_regress.pl | 4 ++-- src/tools/msvc/vcregress.pl | 14 ++++---------- 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/bin/pgbench/t/002_pgbench_no_server.pl b/src/bin/pgbench/t/002_pgbench_no_server.pl index acad19edd0..84e36dcd3f 100644 --- a/src/bin/pgbench/t/002_pgbench_no_server.pl +++ b/src/bin/pgbench/t/002_pgbench_no_server.pl @@ -8,12 +8,12 @@ use strict; use warnings; +use File::Basename; use PostgreSQL::Test::Utils; use Test::More; # create a directory for scripts -my $testname = $0; -$testname =~ s,.*/,,; +my $testname = basename($0); $testname =~ s/\.pl$//; my $testdir = "$PostgreSQL::Test::Utils::tmp_check/t_${testname}_stuff"; diff --git a/src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl b/src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl index 0c164dcaba..2a0eca7744 100644 --- a/src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl +++ b/src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl @@ -49,7 +49,8 @@ for my $testname (@tests) my $expected; my $result; - $expected = slurp_file_eval("traces/$testname.trace"); + my $inputdir = "$ENV{'TESTDIR'}/tmp_check"; + $expected = slurp_file_eval("$inputdir/traces/$testname.trace"); next unless $expected ne ""; $result = slurp_file_eval($traceout); next unless $result ne ""; diff --git a/src/test/modules/test_misc/t/003_check_guc.pl b/src/test/modules/test_misc/t/003_check_guc.pl index 60459ef759..167b6ea44b 100644 --- a/src/test/modules/test_misc/t/003_check_guc.pl +++ b/src/test/modules/test_misc/t/003_check_guc.pl @@ -35,7 +35,7 @@ my @not_in_sample_array = split("\n", lc($not_in_sample)); # TAP tests are executed in the directory of the test, in the source tree, # even for VPATH builds, so rely on that to find postgresql.conf.sample. -my $rootdir = "../../../.."; +my $rootdir = "$ENV{TESTDIR}/../../../.."; my $sample_file = "$rootdir/src/backend/utils/misc/postgresql.conf.sample"; # List of all the GUCs found in the sample file. diff --git a/src/test/recovery/t/027_stream_regress.pl b/src/test/recovery/t/027_stream_regress.pl index c40951b7ba..f7679306f5 100644 --- a/src/test/recovery/t/027_stream_regress.pl +++ b/src/test/recovery/t/027_stream_regress.pl @@ -58,9 +58,9 @@ system_or_bail($ENV{PG_REGRESS} . " $extra_opts " . "--bindir= " . "--host=" . $node_primary->host . " " . "--port=" . $node_primary->port . " " . - "--schedule=../regress/parallel_schedule " . + "--schedule=\"$dlpath/parallel_schedule\" " . "--max-concurrent-tests=20 " . - "--inputdir=../regress " . + "--inputdir=\"$dlpath\" " . "--outputdir=\"$outputdir\""); # Clobber all sequences with their next value, so that we don't have diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index e27c1d15e5..cc8d690c29 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -295,8 +295,6 @@ sub alltaptests { InstallTemp(); - my $mstat = 0; - # Find out all the existing TAP tests by looking for t/ directories # in the tree. my @tap_dirs = (); @@ -310,14 +308,10 @@ sub alltaptests }, @top_dir); - # Process each test - foreach my $test_path (@tap_dirs) - { - my $dir = dirname($test_path); - my $status = tap_check($dir); - $mstat ||= $status; - } - exit $mstat if $mstat; + # Run all the tap tests in a single prove instance for good performance + $ENV{PROVE_TESTS} = "@tap_dirs"; + my $status = tap_check('PROVE_FLAGS=--ext=.pl', "$topdir"); + exit $status if $status; return; } -- 2.17.1 --ibvzjYYg+QDzMCy1 Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0007-tmp-run-tap-tests-first.patch"