diff --git a/Userland/Libraries/LibTest/JavaScriptTestRunner.h b/Userland/Libraries/LibTest/JavaScriptTestRunner.h index 62f5d681438..07fcf31f96f 100644 --- a/Userland/Libraries/LibTest/JavaScriptTestRunner.h +++ b/Userland/Libraries/LibTest/JavaScriptTestRunner.h @@ -181,11 +181,16 @@ inline void TestRunnerGlobalObject::initialize_global_object() } } -inline void cleanup_and_exit() +inline void cleanup() { // Clear the taskbar progress. if (TestRunner::the() && TestRunner::the()->is_printing_progress()) warn("\033]9;-1;\033\\"); +} + +inline void cleanup_and_exit() +{ + cleanup(); exit(1); } diff --git a/Userland/Libraries/LibTest/JavaScriptTestRunnerMain.cpp b/Userland/Libraries/LibTest/JavaScriptTestRunnerMain.cpp index 5e9889d4ca0..64d3c19e0bf 100644 --- a/Userland/Libraries/LibTest/JavaScriptTestRunnerMain.cpp +++ b/Userland/Libraries/LibTest/JavaScriptTestRunnerMain.cpp @@ -32,7 +32,17 @@ static StringView g_program_name { "test-js"sv }; static void handle_sigabrt(int) { dbgln("{}: SIGABRT received, cleaning up.", g_program_name); - cleanup_and_exit(); + cleanup(); + struct sigaction act; + memset(&act, 0, sizeof(act)); + act.sa_flags = SA_NOCLDWAIT; + act.sa_handler = SIG_DFL; + int rc = sigaction(SIGABRT, &act, nullptr); + if (rc < 0) { + perror("sigaction"); + exit(1); + } + abort(); } int main(int argc, char** argv)