aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog8
-rw-r--r--test/Makefile.am35
-rw-r--r--test/filefuncs.awk25
-rw-r--r--test/filefuncs.ok0
-rw-r--r--test/fork.awk33
-rw-r--r--test/fork.ok0
-rw-r--r--test/fork2.awk35
-rw-r--r--test/fork2.ok0
-rw-r--r--test/ordchr.awk5
-rw-r--r--test/ordchr.ok1
10 files changed, 139 insertions, 3 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index 236288e2..5993ca23 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,11 @@
+2012-04-07 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * Makefile.am (check): Add new shlib-tests target.
+ (SHLIB_TESTS): Add tests ordchr, ordchr2, fork, fork2, readfile and
+ filefuncs.
+ * ordchr.awk, ordchr.ok, fork.awk, fork.ok, fork2.awk, fork2.ok,
+ filefuncs.awk, filefuncs.ok: New files.
+
2012-04-01 Andrew J. Schorr <aschorr@telemetry-investments.com>
* Makefile.am (valgrind-scan): Update to match modern valgrind output.
diff --git a/test/Makefile.am b/test/Makefile.am
index afd98299..854a8f7c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -201,6 +201,8 @@ EXTRA_DIST = \
fieldwdth.awk \
fieldwdth.in \
fieldwdth.ok \
+ filefuncs.awk \
+ filefuncs.ok \
fldchg.awk \
fldchg.in \
fldchg.ok \
@@ -230,6 +232,8 @@ EXTRA_DIST = \
fnmisc.ok \
fnparydl.awk \
fnparydl.ok \
+ fork.awk \
+ fork2.awk \
fpat1.awk \
fpat1.in \
fpat1.ok \
@@ -522,6 +526,8 @@ EXTRA_DIST = \
opasnidx.ok \
opasnslf.awk \
opasnslf.ok \
+ ordchr.awk \
+ ordchr.ok \
out1.ok \
out2.ok \
out3.ok \
@@ -846,6 +852,8 @@ LOCALE_CHARSET_TESTS = \
asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \
mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc
+SHLIB_TESTS = ordchr ordchr2 fork fork2 readfile filefuncs
+
# List of the tests which should be run with --lint option:
NEED_LINT = \
defref fmtspcl lintwarn noeffect nofmtch shadow \
@@ -870,8 +878,10 @@ PGAWKPROG = ../pgawk$(EXEEXT)
#
# This can also be done in individual tests where we wish to
# check things specifically not in the C locale.
-AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG)
-PGAWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(PGAWKPROG)
+#
+# And we set AWKLIBPATH to find the extension libraries we built.
+AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} AWKLIBPATH=../extension/.libs $(AWKPROG)
+PGAWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} AWKLIBPATH=../extension/.libs $(PGAWKPROG)
# Message stuff is to make it a little easier to follow.
# Make the pass-fail last and dependent on others to avoid
@@ -882,7 +892,8 @@ check: msg \
unix-msg-start unix-tests unix-msg-end \
extend-msg-start gawk-extensions extend-msg-end \
machine-msg-start machine-tests machine-msg-end \
- charset-msg-start charset-tests charset-msg-end
+ charset-msg-start charset-tests charset-msg-end \
+ shlib-msg-start shlib-tests shlib-msg-end
@$(MAKE) pass-fail
basic: $(BASIC_TESTS)
@@ -899,6 +910,8 @@ inet: inetmesg $(INET_TESTS)
machine-tests: $(MACHINE_TESTS)
+shlib-tests: $(SHLIB_TESTS)
+
msg::
@echo ''
@echo 'Any output from "cmp" is bad news, although some differences'
@@ -939,6 +952,12 @@ charset-msg-start:
charset-msg-end:
@echo "======== Done with tests that can vary based on character set or locale support ========"
+shlib-msg-start:
+ @echo "======== Starting shared library tests ========"
+
+shlib-msg-end:
+ @echo "======== Done with shared library tests ========"
+
lc_num1:
@echo $@
@@ -1444,6 +1463,16 @@ rri1::
AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+ordchr2::
+ @echo $@
+ @$(AWK) -l ordchr 'BEGIN {print chr(ord("A"))}' >_$@ 2>&1
+ @-$(CMP) $(srcdir)/ordchr.ok _$@ && rm -f _$@
+
+readfile::
+ @echo $@
+ @$(AWK) -l readfile 'BEGIN {printf "%s", readfile("Makefile")}' 2>&1 \
+ | $(CMP) Makefile -
+
# Targets generated for other tests:
include Maketests
diff --git a/test/filefuncs.awk b/test/filefuncs.awk
new file mode 100644
index 00000000..aa532741
--- /dev/null
+++ b/test/filefuncs.awk
@@ -0,0 +1,25 @@
+@load "filefuncs"
+
+BEGIN {
+ if (chdir("..") < 0) {
+ printf "Error: chdir failed with ERRNO %s\n", ERRNO
+ exit 1
+ }
+
+ if (stat(ARGV[0], st) < 0) {
+ printf "Error: stat(%s) failed with ERRNO %s\n", ARGV[0], ERRNO
+ exit 1
+ }
+
+ nf = split("name dev ino mode nlink uid gid size blocks atime mtime ctime pmode type", f)
+
+ for (i = 1; i <= nf; i++) {
+ if (!(f[i] in st)) {
+ printf "stat value for %s is missing\n",f[i]
+ rc = 1
+ }
+ else
+ delete st[f[i]]
+ }
+ exit rc+0
+}
diff --git a/test/filefuncs.ok b/test/filefuncs.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/filefuncs.ok
diff --git a/test/fork.awk b/test/fork.awk
new file mode 100644
index 00000000..0b29f9ff
--- /dev/null
+++ b/test/fork.awk
@@ -0,0 +1,33 @@
+@load "fork"
+
+BEGIN {
+ fn = ("fork.tmp." PROCINFO["pid"])
+ switch (pid = fork()) {
+ case -1:
+ printf "Error: fork failed with ERRNO %s\n", ERRNO
+ exit 1
+ case 0:
+ # child
+ printf "pid %s ppid %s\n", PROCINFO["pid"], PROCINFO["ppid"] > fn
+ exit 0
+ default:
+ # parent
+ erc = 1
+ if ((rc = wait()) < 0)
+ printf "Error: wait failed with ERRNO %s\n", ERRNO
+ else if (rc != pid)
+ printf "Error: wait returned %s instead of child pid %s\n", rc, pid
+ else if ((getline x < fn) != 1)
+ printf "Error: getline failed on temp file %s\n", fn
+ else {
+ expected = ("pid " pid " ppid " PROCINFO["pid"])
+ if (x != expected)
+ printf "Error: child data (%s) != expected (%s)\n", x, expected
+ else if ((rc = system("rm " fn)) != 0)
+ printf "Error removing temp file %s with ERRNO %s\n", fn, ERRNO
+ else
+ erc = 0
+ }
+ exit erc
+ }
+}
diff --git a/test/fork.ok b/test/fork.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/fork.ok
diff --git a/test/fork2.awk b/test/fork2.awk
new file mode 100644
index 00000000..bd364286
--- /dev/null
+++ b/test/fork2.awk
@@ -0,0 +1,35 @@
+@load "fork"
+
+BEGIN {
+ # avoid instantiating PROCINFO prior to the fork
+ switch (pid = fork()) {
+ case -1:
+ printf "Error: fork failed with ERRNO %s\n", ERRNO
+ exit 1
+ case 0:
+ # child
+ fn = ("fork.tmp." PROCINFO["pid"])
+ printf "pid %s ppid %s\n", PROCINFO["pid"], PROCINFO["ppid"] > fn
+ exit 0
+ default:
+ # parent
+ erc = 1
+ fn = ("fork.tmp." pid)
+ if ((rc = wait()) < 0)
+ printf "Error: wait failed with ERRNO %s\n", ERRNO
+ else if (rc != pid)
+ printf "Error: wait returned %s instead of child pid %s\n", rc, pid
+ else if ((getline x < fn) != 1)
+ printf "Error: getline failed on temp file %s\n", fn
+ else {
+ expected = ("pid " pid " ppid " PROCINFO["pid"])
+ if (x != expected)
+ printf "Error: child data (%s) != expected (%s)\n", x, expected
+ else if ((rc = system("rm " fn)) != 0)
+ printf "Error removing temp file %s with ERRNO %s\n", fn, ERRNO
+ else
+ erc = 0
+ }
+ exit erc
+ }
+}
diff --git a/test/fork2.ok b/test/fork2.ok
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/fork2.ok
diff --git a/test/ordchr.awk b/test/ordchr.awk
new file mode 100644
index 00000000..abb793a0
--- /dev/null
+++ b/test/ordchr.awk
@@ -0,0 +1,5 @@
+@load "ordchr"
+
+BEGIN {
+ print chr(ord("A"))
+}
diff --git a/test/ordchr.ok b/test/ordchr.ok
new file mode 100644
index 00000000..f70f10e4
--- /dev/null
+++ b/test/ordchr.ok
@@ -0,0 +1 @@
+A