diff options
author | Jacob Bachmeyer <jcb62281+dev@gmail.com> | 2020-07-06 21:08:36 -0500 |
---|---|---|
committer | Jacob Bachmeyer <jcb62281+dev@gmail.com> | 2020-07-06 21:08:36 -0500 |
commit | 9dac619a001d495a517ec0807b0529be5e3d62e6 (patch) | |
tree | 0cbf29b877bf6fc4c7e5d84bf520a28c1f7b5697 /testsuite | |
parent | 4348c51f4e587974e1da5a32cd8cf1e0097ff8fd (diff) | |
parent | 61dc0cafad8845b3c668940ed2e574bd503d410f (diff) | |
download | dejagnu-9dac619a001d495a517ec0807b0529be5e3d62e6.zip dejagnu-9dac619a001d495a517ec0807b0529be5e3d62e6.tar.gz dejagnu-9dac619a001d495a517ec0807b0529be5e3d62e6.tar.bz2 |
Merge branch 'PR41918'
Conflicts:
ChangeLog
Diffstat (limited to 'testsuite')
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" |