Re: set TESTDIR from perl rather than Makefile - Mailing list pgsql-hackers
From | Andres Freund |
---|---|
Subject | Re: set TESTDIR from perl rather than Makefile |
Date | |
Msg-id | 20220221003908.lw33x7zmsxk5wm2z@alap3.anarazel.de Whole thread Raw |
In response to | Re: set TESTDIR from perl rather than Makefile (Justin Pryzby <pryzby@telsasoft.com>) |
Responses |
Re: set TESTDIR from perl rather than Makefile
|
List | pgsql-hackers |
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
pgsql-hackers by date: