From: Simon Marchi <simon.marchi@ericsson.com>
To: Pedro Alves <palves@redhat.com>, <dejagnu@gnu.org>,
gdb-patches <gdb-patches@sourceware.org>
Subject: Re: How to abort a test?
Date: Thu, 14 Jan 2016 17:13:00 -0000 [thread overview]
Message-ID: <5697D721.1000305@ericsson.com> (raw)
In-Reply-To: <5697CC09.8010306@redhat.com>
On 16-01-14 11:25 AM, Pedro Alves wrote:
>> The test will be aborted, runtest will output a detailed error, but the test will still
>> pass. Intuitively, I would think that a test that throws an error should automatically
>> be failed or unresolved, since something unexpected happened.
>
> IIUC, you wouldn't want pass/fail to even be reached, so I don't understand
> what test would you want to fail.
I think unresolved would be appropriate in that case, since it's not the program under test
failed, but the test, or its setup/environment.
According to the Dejagnu doc, unresolved: "... usually means the test did not execute as
expected, and a human being must go over results to determine if it passed or failed (and
to improve the test case). ". I think that applies here.
So when there is an uncaught exception coming from the test, Dejagnu could issue a:
unresolved "Uncaught error from test " # needs a better message
The important part is that the runtest command returns a failure return code, so that
automated builds or scripts consider the run as failed. To me, a test that ends with
an exception is not a test that ran successfully.
>>
>> The only option I see right now would be to fix the whole return chain and add proper
>> error handling everywhere, to exit early when an error happens. However, that means
>> changing tens (hundreds?) of callsites through the testsuite, which is why I'm
>> looking for alternative solutions first.
>
> Test usually return early if running to main fails (if ![runto_main]), so maybe it
> won't be that many places. Maybe some judiciously placed "return -code return"
> hacks saves you a good chunk. I don't have any other idea.
Many tests use gdb_run_cmd directly without checking the result:
gdb/testsuite $ grep -rin '^gdb_run_cmd$' gdb.* | wc -l
73
So they would need to be changed:
-gdb_run_cmd
+if ![gdb_run_cmd] {
+ fail "Failed to run"
+}
> For the particular case of gdbserver not being present in the target,
> probably the easiest would be to check that earlier, likely before
> runtest, even. Not ideal, since the testsuite can mix native and gdbserver
> tests, for instance, but...
And it's a bit hard to check in the case of a remote target, given that it's runtest
that knows how to "compute" the remote hostname, username, expected gdbserver path,
etc, from the --target_board.
Simon
next prev parent reply other threads:[~2016-01-14 17:13 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-12 22:51 Simon Marchi
2016-01-14 16:25 ` Pedro Alves
2016-01-14 17:13 ` Simon Marchi [this message]
2016-01-14 17:28 ` Pedro Alves
2016-01-14 19:43 ` Simon Marchi
2016-01-14 19:48 ` Pedro Alves
2016-01-15 16:35 ` Simon Marchi
2016-01-15 20:22 ` Ben Elliston
2016-01-17 8:27 ` Joel Brobecker
2016-01-18 16:43 ` Simon Marchi
2016-01-21 10:42 ` Joel Brobecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5697D721.1000305@ericsson.com \
--to=simon.marchi@ericsson.com \
--cc=dejagnu@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=palves@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox