diff --git a/src/test/test-execute.c b/src/test/test-execute.c index a27de296a4..7f8ea2be98 100644 --- a/src/test/test-execute.c +++ b/src/test/test-execute.c @@ -33,6 +33,12 @@ static bool can_unshare; typedef void (*test_function_t)(Manager *m); +static int cld_dumped_to_killed(int code) { + /* Depending on the system, seccomp version, … some signals might result in dumping, others in plain + * killing. Let's ignore the difference here, and map both cases to CLD_KILLED */ + return code == CLD_DUMPED ? CLD_KILLED : code; +} + static void check(const char *func, Manager *m, Unit *unit, int status_expected, int code_expected) { Service *service = NULL; usec_t ts; @@ -63,7 +69,7 @@ static void check(const char *func, Manager *m, Unit *unit, int status_expected, } exec_status_dump(&service->main_exec_status, stdout, "\t"); - if (service->main_exec_status.code != code_expected) { + if (cld_dumped_to_killed(service->main_exec_status.code) != cld_dumped_to_killed(code_expected)) { log_error("%s: %s: exit code %d, expected %d", func, unit->id, service->main_exec_status.code, code_expected);