aboutsummaryrefslogtreecommitdiffstats
path: root/pc
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2015-04-17 17:00:48 +0300
committerEli Zaretskii <eliz@gnu.org>2015-04-17 17:00:48 +0300
commit8dfb80aa04885ae1cbdda07fb24026066b440cdf (patch)
treed9836535b002a0183bbdcb0e0b480ced4a4019a7 /pc
parent16f0b3187f01bda5401b7e6f56ebb6d6fe15d147 (diff)
downloadegawk-8dfb80aa04885ae1cbdda07fb24026066b440cdf.tar.gz
egawk-8dfb80aa04885ae1cbdda07fb24026066b440cdf.tar.bz2
egawk-8dfb80aa04885ae1cbdda07fb24026066b440cdf.zip
Fix bogus failures of test suite on MS-Windows
* testoutcmp.awk (END): Attempt a series of massages on the actual output to match it to the expected result, when the number of exponent digits is different. Also, edit "nul" into "null", to account for the difference in the null device name. This removes "failures" due to Windows-specific issues that do not indicate real problems in Gawk, just some non-portable assumptions about the expected results. * Makefile.tst (profile5, exit, hsprint, posix, double2, fmttest): Remove the "expect to fail" message for MinGW, and use the testoutcmp.awk script to loosely compare actual output to expected one.
Diffstat (limited to 'pc')
-rw-r--r--pc/ChangeLog11
-rw-r--r--pc/Makefile.tst25
-rw-r--r--pc/testoutcmp.awk35
3 files changed, 53 insertions, 18 deletions
diff --git a/pc/ChangeLog b/pc/ChangeLog
index f28d2a44..b6ecad83 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,7 +1,18 @@
2015-04-17 Eli Zaretskii <eliz@gnu.org>
+ * testoutcmp.awk (END): Attempt a series of massages on the actual
+ output to match it to the expected result, when the number of
+ exponent digits is different. Also, edit "nul" into "null", to
+ account for the difference in the null device name. This removes
+ "failures" due to Windows-specific issues that do not indicate
+ real problems in Gawk, just some non-portable assumptions about
+ the expected results.
+
* Makefile.tst (abs_top_builddir): Define.
(negtime): Mark this test as an expected failure with MinGW.
+ (profile5, exit, hsprint, posix, double2, fmttest): Remove the
+ "expect to fail" message for MinGW, and use the testoutcmp.awk
+ script to loosely compare actual output to expected one.
* Makefile.ext ($(SIMPLE_EXTENSIONS)): Really use -static-libgcc.
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index 6a39231d..0e837a73 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -904,10 +904,10 @@ profile4:
profile5:
@echo $@
- @echo Expect profile5 to fail with MinGW due to 3 digits in %e output
@GAWK_NO_PP_RUN=1 $(AWK) --profile=ap-$@.out -f "$(srcdir)"/$@.awk > /dev/null
@sed 1,2d < ap-$@.out > _$@; rm ap-$@.out
- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
profile6:
@echo $@
@@ -935,7 +935,8 @@ exit:
@echo $@
@echo Expect exit to fail with MinGW due to null vs nul difference
@-AWK="$(AWKPROG)" "$(srcdir)"/$@.sh > _$@ 2>&1
- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
rri1::
@echo $@
@@ -1638,9 +1639,9 @@ hex:
hsprint:
@echo $@
- @echo Expect hsprint to fail with MinGW due to 3 digits in %e output
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
inputred:
@echo $@
@@ -2418,9 +2419,9 @@ patsplit:
posix:
@echo $@
- @echo Expect posix to fail with MinGW due to 3 digits in e+NNN exponent
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
printfbad1:
@echo $@
@@ -2545,9 +2546,9 @@ double1:
double2:
@echo $@
- @echo Expect double2 to fail with MinGW due to 3 digits in e+NNN exponents
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
intformat:
@echo $@
@@ -2566,9 +2567,9 @@ asorti:
fmttest:
@echo $@
- @echo Expect fmttest to fail with MinGW due to 3 digits in e+NNN exponents
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
- @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+# @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+ @-$(TESTOUTCMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
fnarydel:
@echo $@
@@ -2681,7 +2682,7 @@ diffout:
diff -c "$(srcdir)"/$${base}.ok $$i ; \
fi ; \
fi ; \
- done | more
+ done | less
# convenient way to scan valgrind results for errors
valgrind-scan:
diff --git a/pc/testoutcmp.awk b/pc/testoutcmp.awk
index 33dcaa3f..d4bbadd0 100644
--- a/pc/testoutcmp.awk
+++ b/pc/testoutcmp.awk
@@ -1,7 +1,8 @@
# cmp replacement program for PC where the error messages aren't
-# exactly the same. should run even on old awk
+# exactly the same, and neither are e+NNN exponents.
+# should run even on old awk
#
-# Copyright (C) 2011 the Free Software Foundation, Inc.
+# Copyright (C) 2011-2015 the Free Software Foundation, Inc.
#
# This file is part of GAWK, the GNU implementation of the
# AWK Programming Language.
@@ -35,6 +36,7 @@ END {
exit 1
}
+ status = 0;
for (i = 1; i <= FNR; i++) {
good = lines[0, i]
actual = lines[1, i]
@@ -46,12 +48,33 @@ END {
l--
if (substr(good, 1, l) == substr(actual, 1, l))
continue
+
+ # For exponents
+ actual1 = gensub(/( ?)([-+]?[0-9.][0-9.]?+e[-+])0([0-9][0-9])/, " \\1\\2\\3", "g", actual)
+ if (good == actual1)
+ continue
+ actual1 = gensub(/([-+]?0)([0-9.]+e[-+])0([0-9][0-9])/, "\\10\\2\\3", "g", actual)
+ if (good == actual1)
+ continue
+ actual1 = gensub(/( ?)([-+]?)([1-9.][0-9.]?+e[-+])0([0-9][0-9])/, "\\1\\20\\3\\4", "g", actual)
+ if (good == actual1)
+ continue
+ actual1 = gensub(/([-+]?[0-9.]+e[-+])0([0-9][0-9])/, "\\1\\2 ", "g", actual)
+ if (good == actual1)
+ continue
+ actual1 = gensub(/([-+]?[0-9.]+e[-+])0([0-9][0-9])/, "\\1\\2", "g", actual)
+ if (good == actual1)
+ continue
+ # For exit test
+ actual1 = gensub(/([01]) nul/, "\\1 null", "g", actual)
+ if (good == actual1)
+ continue
else {
- printf("%s and %s are not equal\n", ARGV[1],
- ARGV[2]) > "/dev/stderr"
- exit 1
+ printf("-%s\n", good) > "/dev/stderr"
+ printf("+%s\n", actual) > "/dev/stderr"
+ status = 1
}
}
- exit 0
+ exit status
}