From 736e5860207154ce01d79629813f181611468321 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 1 Aug 2011 17:59:09 +0930 Subject: [PATCH] failtest: fix silent exit when top-level return FAIL_PROBE We were missing failed tests: if the top-level returns FAIL_PROBE, we would exit; this should only apply to children. --- ccan/failtest/failtest.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/ccan/failtest/failtest.c b/ccan/failtest/failtest.c index d9a0849d..91420dc6 100644 --- a/ccan/failtest/failtest.c +++ b/ccan/failtest/failtest.c @@ -362,7 +362,7 @@ static bool should_fail(struct failtest_call *call) struct saved_file *files; /* Are we probing? */ - if (probe_count && --probe_count == 0) + if (probe_count && --probe_count == 0 && control_fd != -1) failtest_cleanup(true, 0); if (call == &unrecorded_call) @@ -412,17 +412,22 @@ static bool should_fail(struct failtest_call *call) switch (failtest_hook(history, history_num)) { case FAIL_OK: break; + case FAIL_PROBE: + /* Already down probe path? Stop now. */ + if (!probe_count) { + /* FIXME: We should run *parent* and + * run probe until calls match up again. */ + probe_count = 3; + break; + } else { + /* Child should give up now. */ + if (control_fd != -1) + failtest_cleanup(true, 0); + /* Parent, don't fail again. */ + } case FAIL_DONT_FAIL: call->fail = false; return false; - case FAIL_PROBE: - /* Already down probe path? Stop now. */ - if (probe_count) - failtest_cleanup(true, 0); - /* FIXME: We should run *parent* and run probe until - * calls match up again. */ - probe_count = 3; - break; default: abort(); } -- 2.39.2