Hi,

On 2022-02-19 17:53:09 -0600, Justin Pryzby wrote:
> I also meant to also attach it.

Is the patch actually independent of the other patches in your stack?


I like this concept a lot:

- I've had to use a wrapper around individual tap tests for meson, just to set
  the CWD etc.
- Being able to run all tap tests at once, instead of many separate prove
  invocations is a lot more readable. And can be faster.
- makes it easier to invoke tap tests "manually", which can be useful when
  debugging problems (not fun to run make in valgrind or rr)
- I'd like to put test data and test log files in different places than they
  are eventually. This seems like it gets us a tiny bit closer to that.



> -             $expected = slurp_file_eval("traces/$testname.trace");
> +             my $inputdir = "$ENV{'TESTDIR'}/tmp_check";
> +             $expected = slurp_file_eval("$inputdir/traces/$testname.trace");

Why is this needed? Shouldn't we end up in exactly the same dir with/without
this patch?


> diff --git a/src/test/perl/PostgreSQL/Test/Utils.pm 
> b/src/test/perl/PostgreSQL/Test/Utils.pm
> index 31e2b0315e..8a8d95ca8c 100644
> --- a/src/test/perl/PostgreSQL/Test/Utils.pm
> +++ b/src/test/perl/PostgreSQL/Test/Utils.pm
> @@ -184,19 +184,21 @@ INIT
>       # test may still fail, but it's more likely to report useful facts.
>       $SIG{PIPE} = 'IGNORE';
>  
> -     # Determine output directories, and create them.  The base path is the
> -     # TESTDIR environment variable, which is normally set by the invoking
> -     # Makefile.
> -     $tmp_check = $ENV{TESTDIR} ? "$ENV{TESTDIR}/tmp_check" : "tmp_check";
> +     my $test_dir = File::Spec->rel2abs(dirname($0));
> +     my $test_name = basename($0);
> +     $test_name =~ s/\.[^.]+$//;
> +
> +     # Determine output directories, and create them.
> +     # TODO: set srcdir?
> +     $tmp_check = "$test_dir/tmp_check";
>       $log_path = "$tmp_check/log";
> +     $ENV{TESTDIR} = $test_dir;
>  
>       mkdir $tmp_check;
>       mkdir $log_path;
>  
>       # Open the test log file, whose name depends on the test name.
> -     $test_logfile = basename($0);
> -     $test_logfile =~ s/\.[^.]+$//;
> -     $test_logfile = "$log_path/regress_log_$test_logfile";
> +     $test_logfile = "$log_path/regress_log_$test_name";
>       open my $testlog, '>', $test_logfile
>         or die "could not open STDOUT to logfile \"$test_logfile\": $!";
>  
> diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl
> index e2b0db0879..63085506e0 100644
> --- a/src/tools/msvc/vcregress.pl
> +++ b/src/tools/msvc/vcregress.pl
> @@ -261,10 +261,8 @@ sub tap_check
>       $ENV{PG_REGRESS}    = "$topdir/$Config/pg_regress/pg_regress";
>       $ENV{REGRESS_SHLIB} = "$topdir/src/test/regress/regress.dll";
>  
> -     $ENV{TESTDIR} = "$dir";
>       my $module = basename $dir;
> -     # add the module build dir as the second element in the PATH
> -     $ENV{PATH} =~ s!;!;$topdir/$Config/$module;!;
> +     #$ENV{VCREGRESS_MODE} = $Config;

Hm. How does the module build dir end up on PATH after this?

Greetings,

Andres Freund


Reply via email to