diff options
author | Eli Zaretskii <eliz@gnu.org> | 2015-04-17 17:00:48 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2015-04-17 17:00:48 +0300 |
commit | 8dfb80aa04885ae1cbdda07fb24026066b440cdf (patch) | |
tree | d9836535b002a0183bbdcb0e0b480ced4a4019a7 /pc/testoutcmp.awk | |
parent | 16f0b3187f01bda5401b7e6f56ebb6d6fe15d147 (diff) | |
download | egawk-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/testoutcmp.awk')
-rw-r--r-- | pc/testoutcmp.awk | 35 |
1 files changed, 29 insertions, 6 deletions
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 } |