diff options
author | Tom de Vries <tdevries@suse.de> | 2020-06-12 09:13:17 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2020-06-12 09:13:17 +0200 |
commit | 26783bce15adc0316f9167a216519cebcf1ccac3 (patch) | |
tree | 65cf0274d276e64edf61bc0e87005dca3e9d0ad1 /gdb | |
parent | 453c733fcf74893b5907f935283976c11cd46ad5 (diff) | |
download | gdb-26783bce15adc0316f9167a216519cebcf1ccac3.zip gdb-26783bce15adc0316f9167a216519cebcf1ccac3.tar.gz gdb-26783bce15adc0316f9167a216519cebcf1ccac3.tar.bz2 |
[gdb/testsuite] Don't abort testrun for invalid command in test-case
Say we add a call to foobar at the end of a test-case, and run the
test-suite. We'll run into a dejagnu error:
...
ERROR: (DejaGnu) proc "foobar" does not exist.
...
and the test-suite run is aborted.
It's reasonable that the test-case is aborted, but it's not reasonable that
the testsuite run is aborted.
Problems in one test-case should not leak into other test-cases, and they
generally don't. The exception is the "invalid command name" problem due to
an override of ::unknown in dejagnu's framework.exp.
Fix this by reverting dejagnu's ::unknown override for the duration of each
test-case, using the gdb_init/gdb_finish hooks.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2020-06-12 Tom de Vries <tdevries@suse.de>
PR testsuite/26110
* lib/gdb.exp (gdb_init): Revert dejagnu's override of ::unknown.
(gdb_finish): Reinstall dejagnu's override of ::unknown.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 18 |
2 files changed, 23 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 0523f7c..ff834b7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-06-12 Tom de Vries <tdevries@suse.de> + + PR testsuite/26110 + * lib/gdb.exp (gdb_init): Revert dejagnu's override of ::unknown. + (gdb_finish): Reinstall dejagnu's override of ::unknown. + 2020-06-11 Tom Tromey <tom@tromey.com> PR gdb/18318: diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 51f8a05..64e667c 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -5193,7 +5193,19 @@ proc gdb_init { test_file_name } { global gdb_instances set gdb_instances 0 - return [default_gdb_init $test_file_name] + set res [default_gdb_init $test_file_name] + + # Dejagnu overrides proc unknown. The dejagnu version may trigger in a + # test-case but abort the entire test run. To fix this, we install a + # local version here, which reverts dejagnu's override, and restore + # dejagnu's version in gdb_finish. + rename ::unknown ::dejagnu_unknown + proc unknown { args } { + # Dejagnu saves the original version in ::tcl_unknown, use it. + return [uplevel 1 ::tcl_unknown $args] + } + + return $res } proc gdb_finish { } { @@ -5201,6 +5213,10 @@ proc gdb_finish { } { global gdb_prompt global cleanfiles + # Restore dejagnu's version of proc unknown. + rename ::unknown "" + rename ::dejagnu_unknown ::unknown + # Exit first, so that the files are no longer in use. gdb_exit |