summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuildtest.sh1
-rwxr-xr-xconfigure.ac16
-rw-r--r--tests/.gitignore5
-rw-r--r--tests/Makefile.am11
-rw-r--r--tests/config/unix.exp104
-rw-r--r--tests/global-conf.exp0
6 files changed, 135 insertions, 2 deletions
diff --git a/buildtest.sh b/buildtest.sh
index c9dd323f..de638f56 100755
--- a/buildtest.sh
+++ b/buildtest.sh
@@ -85,6 +85,7 @@ for cfg in ${CONFIGS:-$defconfigs}; do
cd "$bdir"
../sdist/configure $args
make -j5
+ make check
make DESTDIR="$TEMP/inst_$cfg" install
cd ..
done
diff --git a/configure.ac b/configure.ac
index 6e59037a..582f3572 100755
--- a/configure.ac
+++ b/configure.ac
@@ -1619,6 +1619,18 @@ fi
AC_SUBST(PICFLAGS)
AC_SUBST(PILDFLAGS)
+dnl -------
+dnl DejaGNU
+dnl -------
+if test x"$DEJAGNU" = x
+then
+ DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
+fi
+RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
+
+AC_SUBST(DEJAGNU)
+AC_SUBST(RUNTESTDEFAULTFLAGS)
+
dnl ------------------------------
dnl set paths for state directory
dnl ------------------------------
@@ -1691,8 +1703,8 @@ AC_MSG_RESULT($ac_cv_htonl_works)
AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
ospf6d/Makefile isisd/Makefile babeld/Makefile vtysh/Makefile
- doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
- redhat/Makefile
+ doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
+ redhat/Makefile
pkgsrc/Makefile
redhat/quagga.spec
lib/version.h
diff --git a/tests/.gitignore b/tests/.gitignore
index 93e886c0..8baea0a8 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -10,6 +10,10 @@ TAGS
*.lo
*.la
*.libs
+*.bak
+*.log
+*.sum
+*.xml
.arch-inventory
.arch-ids
aspathtest
@@ -27,3 +31,4 @@ testmemory
testprivs
testsig
teststream
+site.exp
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7bc880b5..14f7bef1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,3 +1,14 @@
+AUTOMAKE_OPTIONS = dejagnu
+export DEJAGNU
+
+SUBDIRS =
+
+EXTRA_DIST = \
+ config/unix.exp \
+ global-conf.exp
+
+DEJATOOL =
+
INCLUDES = @INCLUDES@ -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib
DEFS = @DEFS@ $(LOCAL_OPTS) -DSYSCONFDIR=\"$(sysconfdir)/\"
diff --git a/tests/config/unix.exp b/tests/config/unix.exp
new file mode 100644
index 00000000..25ea97f4
--- /dev/null
+++ b/tests/config/unix.exp
@@ -0,0 +1,104 @@
+
+# every test should always be run and always return some status.
+# so, if we lose sync with a multi-test program, aborted will be used
+# to flag the remainder of the tests as untested.
+#set aborted 0
+
+# only match with color codes since "failed" / "OK" might otherwise
+# be part of the output...
+#set color 1
+
+set config_h [open "../config.h" "r"]
+set config_h_text [read $config_h]
+close $config_h
+set i [string first "#define HAVE_IPV6" $config_h_text]
+if { $i >= 0 } {
+ set have_ipv6 1
+} else {
+ set have_ipv6 0
+}
+send_user "IPv6 enabled: $have_ipv6\n"
+set xfail 0
+
+proc onetest { test_name note start } {
+ global aborted
+ global testprefix
+ global verbose
+ global color
+ global xfail
+
+ if { $aborted > 0 } {
+ untested "$testprefix$test_name"
+ return
+ }
+
+ if { $verbose > 0 } {
+ send_user "$testprefix$test_name$note\n"
+ }
+ expect {
+ "$start" { }
+
+ eof { unresolved "$testprefix$test_name"; set aborted 1; }
+ timeout { unresolved "$testprefix$test_name"; set aborted 1; }
+ }
+
+ if { $aborted > 0 } {
+ send_user "sync failed: $testprefix$test_name$note -- $testprefix aborted!\n"
+ return
+ }
+
+ if { $color } {
+ set pat "(32mOK|31mfailed)"
+ } else {
+ set pat "(OK|failed)"
+ }
+ expect {
+ # need this because otherwise expect will skip over a "failed" and
+ # grab the next "OK" (or the other way around)
+ -re "$pat" {
+ if { "$expect_out(0,string)" == "32mOK" || "$expect_out(0,string)" == "OK" } {
+ pass "$testprefix$test_name"
+ } else {
+ if { $xfail } {
+ xfail "$testprefix$test_name"
+ } else {
+ fail "$testprefix$test_name"
+ }
+ }
+ return
+ }
+
+ eof { unresolved "$testprefix$test_name"; set aborted 1; }
+ timeout { unresolved "$testprefix$test_name"; set aborted 1; }
+ }
+
+ if { $aborted > 0 } {
+ send_user "failed: $testprefix$test_name$note -- $testprefix aborted!\n"
+ return
+ }
+}
+
+proc headerline { line } {
+ global aborted
+ if { $aborted > 0 } { return; }
+ expect {
+ $line { return; }
+ eof { send_user "numbering mismatch!\n"; set aborted 1; }
+ timeout { send_user "numbering mismatch!\n"; set aborted 1; }
+ }
+}
+
+proc simpletest { start } {
+ onetest "$start" "" "$start"
+}
+
+proc simpletest_nov6 { start } {
+ global have_ipv6
+ global xfail
+
+ set xfail [expr 1-$have_ipv6]
+ onetest "$start" "" "$start"
+ set xfail 0
+}
+
+
diff --git a/tests/global-conf.exp b/tests/global-conf.exp
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/global-conf.exp