Convert libpq regress script to Perl
This should ease its use on the Windows build environment.
This commit is contained in:
parent
adb9b7d53b
commit
a184e4db83
@ -15,7 +15,7 @@ all: $(PROGS)
|
||||
|
||||
installcheck: all
|
||||
SRCDIR='$(top_srcdir)' SUBDIR='$(subdir)' \
|
||||
$(SHELL) $(top_srcdir)/$(subdir)/regress.sh
|
||||
$(PERL) $(top_srcdir)/$(subdir)/regress.pl
|
||||
|
||||
clean distclean maintainer-clean:
|
||||
rm -f $(PROGS)
|
||||
|
62
src/interfaces/libpq/test/regress.pl
Normal file
62
src/interfaces/libpq/test/regress.pl
Normal file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use strict;
|
||||
|
||||
# use of SRCDIR/SUBDIR is required for supporting VPath builds
|
||||
my $srcdir = $ENV{'SRCDIR'} or die 'SRCDIR environment variable is not set';
|
||||
my $subdir = $ENV{'SUBDIR'} or die 'SUBDIR environment variable is not set';
|
||||
|
||||
my $regress_in = "$srcdir/$subdir/regress.in";
|
||||
my $expected_out = "$srcdir/$subdir/expected.out";
|
||||
|
||||
# the output file should land in the build_dir of VPath, or just in
|
||||
# the current dir, if VPath isn't used
|
||||
my $regress_out = "regress.out";
|
||||
|
||||
# open input file first, so possible error isn't sent to redirected STDERR
|
||||
open(REGRESS_IN, "<", $regress_in)
|
||||
or die "can't open $regress_in for reading: $!";
|
||||
|
||||
# save STDOUT/ERR and redirect both to regress.out
|
||||
open(OLDOUT, ">&", \*STDOUT) or die "can't dup STDOUT: $!";
|
||||
open(OLDERR, ">&", \*STDERR) or die "can't dup STDERR: $!";
|
||||
|
||||
open(STDOUT, ">", $regress_out)
|
||||
or die "can't open $regress_out for writing: $!";
|
||||
open(STDERR, ">&", \*STDOUT) or die "can't dup STDOUT: $!";
|
||||
|
||||
# read lines from regress.in and run uri-regress on them
|
||||
while (<REGRESS_IN>)
|
||||
{
|
||||
chomp;
|
||||
print "trying $_\n";
|
||||
system("./uri-regress \"$_\"");
|
||||
print "\n";
|
||||
}
|
||||
|
||||
# restore STDOUT/ERR so we can print the outcome to the user
|
||||
open(STDERR, ">&", \*OLDERR) or die; # can't complain as STDERR is still duped
|
||||
open(STDOUT, ">&", \*OLDOUT) or die "Can't restore STDOUT: $!";
|
||||
|
||||
# just in case
|
||||
close REGRESS_IN;
|
||||
|
||||
my $diff_status = system(
|
||||
"diff -c \"$srcdir/$subdir/expected.out\" regress.out >regress.diff");
|
||||
if ($diff_status == 0)
|
||||
{
|
||||
print "=" x 70, "\n";
|
||||
print "All tests passed\n";
|
||||
exit 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "=" x 70, "\n";
|
||||
print <<EOF;
|
||||
FAILED: the test result differs from the expected output
|
||||
|
||||
Review the difference in "$subdir/regress.diff"
|
||||
EOF
|
||||
print "=" x 70, "\n";
|
||||
exit 1;
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
while read line
|
||||
do
|
||||
echo "trying $line"
|
||||
./uri-regress "$line"
|
||||
echo ""
|
||||
done < "${SRCDIR}/${SUBDIR}"/regress.in >regress.out 2>&1
|
||||
|
||||
if diff -c "${SRCDIR}/${SUBDIR}/"expected.out regress.out >regress.diff; then
|
||||
echo "========================================"
|
||||
echo "All tests passed"
|
||||
exit 0
|
||||
else
|
||||
echo "========================================"
|
||||
echo "FAILED: the test result differs from the expected output"
|
||||
echo
|
||||
echo "Review the difference in ${SUBDIR}/regress.diff"
|
||||
echo "========================================"
|
||||
exit 1
|
||||
fi
|
Loading…
Reference in New Issue
Block a user