aboutsummaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorJacob Bachmeyer <jcb62281+dev@gmail.com>2020-07-06 21:08:36 -0500
committerJacob Bachmeyer <jcb62281+dev@gmail.com>2020-07-06 21:08:36 -0500
commit9dac619a001d495a517ec0807b0529be5e3d62e6 (patch)
tree0cbf29b877bf6fc4c7e5d84bf520a28c1f7b5697 /testsuite
parent4348c51f4e587974e1da5a32cd8cf1e0097ff8fd (diff)
parent61dc0cafad8845b3c668940ed2e574bd503d410f (diff)
downloaddejagnu-9dac619a001d495a517ec0807b0529be5e3d62e6.zip
dejagnu-9dac619a001d495a517ec0807b0529be5e3d62e6.tar.gz
dejagnu-9dac619a001d495a517ec0807b0529be5e3d62e6.tar.bz2
Merge branch 'PR41918'
Conflicts: ChangeLog
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/runtest.main/error.exp81
-rw-r--r--testsuite/runtest.main/error/testsuite/error.test/error-al-dbz.exp38
-rw-r--r--testsuite/runtest.main/error/testsuite/error.test/error-dbz.exp29
-rw-r--r--testsuite/runtest.main/error/testsuite/error.test/error-undef.exp25
-rw-r--r--testsuite/runtest.main/error/testsuite/error.test/simple.exp21
5 files changed, 194 insertions, 0 deletions
diff --git a/testsuite/runtest.main/error.exp b/testsuite/runtest.main/error.exp
new file mode 100644
index 0000000..1473ee1
--- /dev/null
+++ b/testsuite/runtest.main/error.exp
@@ -0,0 +1,81 @@
+# Copyright (C) 1995-2016, 2018, 2020 Free Software Foundation, Inc.
+#
+# This file is part of DejaGnu.
+#
+# DejaGnu is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# DejaGnu is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with DejaGnu; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+# This file tests handling of fatal errors in testcases.
+# The way we do this is to recursively invoke ourselves on a small testsuite
+# and analyze the results.
+
+load_lib util-defs.exp
+
+if {![info exists tmpdir]} {
+ set tmpdir [testsuite file -object -top tmpdir]
+}
+
+set fd [open error-init.exp w]
+puts $fd "set srcdir [testsuite file -source -test error]"
+puts $fd "set objdir [testsuite file -object -test error]"
+puts $fd "set tmpdir $tmpdir"
+close $fd
+
+if {![file isdirectory $tmpdir]} {
+ catch "file mkdir $tmpdir"
+}
+
+if {![file isdirectory [testsuite file -object -test error]]} {
+ catch {file mkdir [testsuite file -object -test error]}
+}
+
+set tests {
+ { "run only simple test"
+ "simple.exp"
+ "PASS: simple test.*\
+ *expected passes\[ \t\]+1\n" }
+ { "continue after divide-by-zero, reporting error"
+ "error-dbz.exp simple.exp"
+ "PASS: running error-dbz.exp.*\
+ *UNRESOLVED: .* aborted.*\
+ *PASS: simple test.*\
+ *expected passes\[ \t\]+2\n.*unresolved testcases\[ \t\]+1\n" }
+ { "continue after auto-loaded divide-by-zero, reporting error"
+ "error-al-dbz.exp simple.exp"
+ "PASS: running error-al-dbz.exp.*\
+ *UNRESOLVED: .* aborted.*\
+ *PASS: simple test.*\
+ *expected passes\[ \t\]+2\n.*unresolved testcases\[ \t\]+1\n" }
+ { "continue after calling undefined procedure, reporting error"
+ "error-undef.exp simple.exp"
+ "PASS: running error-undef.exp.*\
+ *UNRESOLVED: .* aborted.*\
+ *PASS: simple test.*\
+ *expected passes\[ \t\]+2\n.*unresolved testcases\[ \t\]+1\n" }
+}
+
+foreach t $tests {
+ if [util_test $RUNTEST \
+ "--local_init error-init.exp\
+ --outdir $tmpdir -a [lindex $t 1]" \
+ "" \
+ [lindex $t 2]] {
+ fail [lindex $t 0]
+ } else {
+ pass [lindex $t 0]
+ }
+}
+
+file delete -force $tmpdir
+file delete -force [testsuite file -object -test error testsuite error.test lib]
diff --git a/testsuite/runtest.main/error/testsuite/error.test/error-al-dbz.exp b/testsuite/runtest.main/error/testsuite/error.test/error-al-dbz.exp
new file mode 100644
index 0000000..52b5bc3
--- /dev/null
+++ b/testsuite/runtest.main/error/testsuite/error.test/error-al-dbz.exp
@@ -0,0 +1,38 @@
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of DejaGnu.
+#
+# DejaGnu is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# DejaGnu is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with DejaGnu; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Cause a divide-by-zero error in an auto-loaded procedure.
+
+pass "running error-al-dbz.exp"
+
+set fd [open [testsuite file -object -test lib foo.tcl] w]
+puts $fd {proc throw_arith_error_div_by_zero { } {
+ expr { 1 / 0 }
+}
+}
+close $fd
+
+auto_mkindex \
+ [testsuite file -object -test lib] \
+ [testsuite file -object -test lib/*.tcl]
+
+lappend auto_path [testsuite file -object -test lib]
+
+throw_arith_error_div_by_zero
+
+fail "script did not abort"
diff --git a/testsuite/runtest.main/error/testsuite/error.test/error-dbz.exp b/testsuite/runtest.main/error/testsuite/error.test/error-dbz.exp
new file mode 100644
index 0000000..463337a
--- /dev/null
+++ b/testsuite/runtest.main/error/testsuite/error.test/error-dbz.exp
@@ -0,0 +1,29 @@
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of DejaGnu.
+#
+# DejaGnu is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# DejaGnu is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with DejaGnu; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Cause a divide-by-zero error.
+
+pass "running error-dbz.exp"
+
+proc throw_arith_error_div_by_zero { } {
+ expr { 1 / 0 }
+}
+
+throw_arith_error_div_by_zero
+
+fail "script did not abort"
diff --git a/testsuite/runtest.main/error/testsuite/error.test/error-undef.exp b/testsuite/runtest.main/error/testsuite/error.test/error-undef.exp
new file mode 100644
index 0000000..fa59f4a
--- /dev/null
+++ b/testsuite/runtest.main/error/testsuite/error.test/error-undef.exp
@@ -0,0 +1,25 @@
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of DejaGnu.
+#
+# DejaGnu is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# DejaGnu is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with DejaGnu; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Invoke an undefined command, causing a fatal error.
+
+pass "running error-undef.exp"
+
+bogus_command 1 2 3 4
+
+fail "script did not abort"
diff --git a/testsuite/runtest.main/error/testsuite/error.test/simple.exp b/testsuite/runtest.main/error/testsuite/error.test/simple.exp
new file mode 100644
index 0000000..93a03e7
--- /dev/null
+++ b/testsuite/runtest.main/error/testsuite/error.test/simple.exp
@@ -0,0 +1,21 @@
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of DejaGnu.
+#
+# DejaGnu is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# DejaGnu is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with DejaGnu; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Return a passing result
+
+pass "simple test"