diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2018-05-04 15:22:48 -0400 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2018-05-04 15:51:31 -0400 |
commit | 134db37d21358fa5b0030c179bfa97af414d0f69 (patch) | |
tree | fa87ad8d657fc4e7e39c1091db64a2c651939381 | |
parent | ade3b273caeefc9ec51355607679f913606eab1b (diff) |
Provide for testing on python3 modules when under MSVC
This should have been done some years ago as promised in commit
c4dcdd0c2. However, better late than never.
Along the way do a little housekeeping, including using a simpler test
for the python version being tested, and removing a redundant subroutine
parameter. These changes only apply back to release 9.5.
Backpatch to all live releases.
-rw-r--r-- | src/tools/msvc/vcregress.pl | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index 5d37a68b93c..88a89ebcf1d 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -240,6 +240,51 @@ sub taptest exit $status if $status; } +sub mangle_plpython3 +{ + my $tests = shift; + mkdir "results" unless -d "results"; + mkdir "sql/python3"; + mkdir "results/python3"; + mkdir "expected/python3"; + + foreach my $test (@$tests) + { + local $/ = undef; + foreach my $dir ('sql','expected') + { + my $extension = ($dir eq 'sql' ? 'sql' : 'out'); + + my @files = glob("$dir/$test.$extension $dir/${test}_[0-9].$extension"); + foreach my $file (@files) + { + open(my $handle, "$file") || die "test file $file not found"; + my $contents = <$handle>; + close($handle); + map + { + s/except ([[:alpha:]][[:alpha:].]*), *([[:alpha:]][[:alpha:]]*):/except $1 as $2:/g; + s/<type 'exceptions\.([[:alpha:]]*)'>/<class '$1'>/g; + s/<type 'long'>/<class 'int'>/g; + s/([0-9][0-9]*)L/$1/g; + s/([ [{])u"/$1"/g; + s/([ [{])u'/$1'/g; + s/def next/def __next__/g; + s/LANGUAGE plpython2?u/LANGUAGE plpython3u/g; + s/EXTENSION ([^ ]*_)*plpython2?u/EXTENSION $1plpython3u/g; + s/installing required extension "plpython2u"/installing required extension "plpython3u"/g; + } $contents; + my $base = basename $file; + open($handle, ">$dir/python3/$base") || die "opening python 3 file for $file"; + print $handle $contents; + close($handle); + } + } + } + map { $_ =~ s!^!python3/!; } @$tests; + return @$tests; +} + sub plcheck { chdir "../../pl"; @@ -250,7 +295,8 @@ sub plcheck my $lang = $pl eq 'tcl' ? 'pltcl' : $pl; if ($lang eq 'plpython') { - next unless -d "../../$Config/plpython2"; + next unless -d "$topdir/$Config/plpython2" || + -d "$topdir/$Config/plpython3"; $lang = 'plpythonu'; } else @@ -260,6 +306,8 @@ sub plcheck my @lang_args = ("--load-extension=$lang"); chdir $pl; my @tests = fetchTests(); + @tests = mangle_plpython3(\@tests) + if $lang eq 'plpythonu' && -d "$topdir/$Config/plpython3"; if ($lang eq 'plperl') { @@ -275,6 +323,10 @@ sub plcheck push(@tests, 'plperl_plperlu'); } } + elsif ($lang eq 'plpythonu' && -d "$topdir/$Config/plpython3") + { + @lang_args = (); + } print "============================================================\n"; print "Checking $lang\n"; |