Message ID | 160635886967.28413.180075874214780604.malonedeb@chaenomeles.canonical.com |
---|---|
State | New |
Headers | show |
Series | [Bug,1905651,NEW] Tests cannot call g_error | expand |
An alternative is of course to allow g_error to be called. One might restrict tests to not call it, but it might be impractical to impose that on all code that goes into a test. One will need to find a way to get glib to not call G_BREAKPOINT for this case. if (debugger_present && breakpoint) G_BREAKPOINT (); else g_abort (); https://gitlab.gnome.org/GNOME/glib/-/blob/master/glib/gmessages.c#L555
I don't know QEMU that well yet, but the following question arises: Why can't QEMU be driven in a way that allows it to see that its controlling parent has died -> causing QEMU to terminate as well. That way the test doesn't need to care how it dies (e.g., we don't want a segfault to hang testing; and nor do we, I think, want to install signal handlers for every possible signal).
diff --git a/tests/qtest/e1000e-test.c b/tests/qtest/e1000e-test.c index fc226fdfeb..e83ace1b5c 100644 --- a/tests/qtest/e1000e-test.c +++ b/tests/qtest/e1000e-test.c @@ -87,6 +87,9 @@ static void e1000e_send_verify(QE1000E *d, int *test_sockets, QGuestAllocator *a /* Wait for TX WB interrupt */ e1000e_wait_isr(d, E1000E_TX0_MSG_ID); + g_message("Test g_error hang ..."); + g_error("Pretend something timed out"); + /* Check DD bit */ g_assert_cmphex(le32_to_cpu(descr.upper.data) & dsta_dd, ==, dsta_dd);