aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/ChangeLog8
-rw-r--r--test/forcenum.awk17
-rw-r--r--test/forcenum.ok2
3 files changed, 24 insertions, 3 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index 4f79460f..8b2d0325 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,11 @@
+2017-10-17 Arnold D. Robbins <arnold@skeeve.com>
+
+ * forcenum.awk: Convert values manually to number and then
+ to string and remove leading sign, to avoid C library
+ differences across platforms. Thanks to Corinna Vinschen
+ for the report.
+ * forcenum.ok: Adjust for above change.
+
2017-10-12 Arnold D. Robbins <arnold@skeeve.com>
* fork.awk: Close the file in the parent after reading it.
diff --git a/test/forcenum.awk b/test/forcenum.awk
index 1a7ddce7..d4ff5d5e 100644
--- a/test/forcenum.awk
+++ b/test/forcenum.awk
@@ -1,6 +1,17 @@
BEGIN {
# make some strnums
- nf = split("|5apple|+NaN| 6|0x1az|011Q|027", f, "|")
- for (i = 1; i <= nf; i++)
- printf "[%s] -> %g (type %s)\n", f[i], f[i], typeof(f[i])
+ nf = split("|5apple|NaN|-NaN|+NaN| 6|0x1az|011Q|027", f, "|")
+
+ for (i = 1; i <= nf; i++) {
+ # NaN values on some systems can come out with
+ # a sign in front of them. So instead of using %g to
+ # convert the strnum to a double, do it manually, and
+ # then remove any leading sign so that the test will
+ # work across systems.
+ val = f[i] + 0
+ val = val ""
+ val = tolower(val)
+ sub(/^[-+]/, "", val)
+ printf "[%s] -> %s (type %s)\n", f[i], val, typeof(f[i])
+ }
}
diff --git a/test/forcenum.ok b/test/forcenum.ok
index a379db62..0ad1714f 100644
--- a/test/forcenum.ok
+++ b/test/forcenum.ok
@@ -1,5 +1,7 @@
[] -> 0 (type string)
[5apple] -> 5 (type string)
+[NaN] -> 0 (type string)
+[-NaN] -> nan (type strnum)
[+NaN] -> nan (type strnum)
[ 6] -> 6 (type strnum)
[0x1az] -> 26 (type string)