aboutsummaryrefslogtreecommitdiffstats
path: root/pc
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-04-18 23:21:26 +0300
committerArnold D. Robbins <arnold@skeeve.com>2015-04-18 23:21:26 +0300
commitb902be41919a9b13c915cda67446c58f16f39b41 (patch)
treee8d07a871e18a2b4179616a1794310b71ee50939 /pc
parentbdc8a5dcf17bae4d1207de725ecf84dfaa637b5a (diff)
parent114f39dd4a1b6da85feb34eb1452811a5e3f6728 (diff)
downloadegawk-b902be41919a9b13c915cda67446c58f16f39b41.tar.gz
egawk-b902be41919a9b13c915cda67446c58f16f39b41.tar.bz2
egawk-b902be41919a9b13c915cda67446c58f16f39b41.zip
Merge branch 'gawk-4.1-stable'
Diffstat (limited to 'pc')
-rw-r--r--pc/ChangeLog12
-rw-r--r--pc/Makefile.tst26
-rw-r--r--pc/testoutcmp.awk35
3 files changed, 55 insertions, 18 deletions
diff --git a/pc/ChangeLog b/pc/ChangeLog
index 6eade7da..b6ecad83 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,6 +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 321aa99b..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 $@
@@ -1230,6 +1231,7 @@ paramasfunc2::
negtime::
@echo $@
+ @echo Expect negtime to fail with MinGW
@TZ=GMT AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
Gt-dummy:
@@ -1637,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 $@
@@ -2417,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 $@
@@ -2544,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 $@
@@ -2565,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 $@
@@ -2680,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
}