diff options
-rwxr-xr-x | buildtest.sh | 1 | ||||
-rwxr-xr-x | configure.ac | 16 | ||||
-rw-r--r-- | tests/.gitignore | 5 | ||||
-rw-r--r-- | tests/Makefile.am | 11 | ||||
-rw-r--r-- | tests/config/unix.exp | 104 | ||||
-rw-r--r-- | tests/global-conf.exp | 0 |
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 |