From 275a180246c9d0ae3f6f74cc629c3bac4c63fd31 Mon Sep 17 00:00:00 2001 From: ayeteadoe Date: Sun, 11 May 2025 12:05:02 -0700 Subject: [PATCH] LibTest: Remove unused CrashTest infrastructure Now that all EXPECT_CRASH related macros have been replaced in favour of using EXPECT_DEATH related macros, CrashTest is no longer used and can be deleted. --- Libraries/LibTest/CMakeLists.txt | 1 - Libraries/LibTest/CrashTest.cpp | 112 ------------------------------- Libraries/LibTest/CrashTest.h | 45 ------------- 3 files changed, 158 deletions(-) delete mode 100644 Libraries/LibTest/CrashTest.cpp delete mode 100644 Libraries/LibTest/CrashTest.h diff --git a/Libraries/LibTest/CMakeLists.txt b/Libraries/LibTest/CMakeLists.txt index 1cb515666a1..12793f5bffa 100644 --- a/Libraries/LibTest/CMakeLists.txt +++ b/Libraries/LibTest/CMakeLists.txt @@ -6,7 +6,6 @@ add_library(JavaScriptTestRunnerMain OBJECT JavaScriptTestRunnerMain.cpp) set(SOURCES TestSuite.cpp - CrashTest.cpp ) add_library(LibTest ${SOURCES}) diff --git a/Libraries/LibTest/CrashTest.cpp b/Libraries/LibTest/CrashTest.cpp deleted file mode 100644 index 07d1ebde7c4..00000000000 --- a/Libraries/LibTest/CrashTest.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2018-2020, Andreas Kling - * Copyright (c) 2019-2020, Shannon Booth - * Copyright (c) 2021, Brian Gianforcaro - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#include -#include -#include -#include -#include - -#if !defined(AK_OS_MACOS) && !defined(AK_OS_EMSCRIPTEN) && !defined(AK_OS_GNU_HURD) -# include -#endif - -namespace Test { - -Crash::Crash(ByteString test_type, Function crash_function, int crash_signal) - : m_type(move(test_type)) - , m_crash_function(move(crash_function)) - , m_crash_signal(crash_signal) -{ -} - -bool Crash::run(RunType run_type) -{ - outln("\x1B[33mTesting\x1B[0m: \"{}\"", m_type); - - if (run_type == RunType::UsingCurrentProcess) { - return do_report(m_crash_function()); - } else { - // Run the test in a child process so that we do not crash the crash program :^) - pid_t pid = fork(); - if (pid < 0) { - perror("fork"); - VERIFY_NOT_REACHED(); - } else if (pid == 0) { -#if defined(AK_OS_GNU_HURD) - // When we crash, just kill the program, don't dump core. - setenv("CRASHSERVER", "/servers/crash-kill", true); -#elif !defined(AK_OS_MACOS) && !defined(AK_OS_EMSCRIPTEN) - if (prctl(PR_SET_DUMPABLE, 0, 0, 0) < 0) - perror("prctl(PR_SET_DUMPABLE)"); -#endif - exit((int)m_crash_function()); - } - - int status; - waitpid(pid, &status, 0); - if (WIFEXITED(status)) { - return do_report(Failure(WEXITSTATUS(status))); - } - if (WIFSIGNALED(status)) { - int signal = WTERMSIG(status); - VERIFY(signal > 0); - return do_report(signal); - } - VERIFY_NOT_REACHED(); - } -} - -bool Crash::do_report(Report report) -{ - bool pass = false; - if (m_crash_signal == ANY_SIGNAL) { - pass = report.has(); - } else if (m_crash_signal == 0) { - pass = report.has() && report.get() == Failure::DidNotCrash; - } else if (m_crash_signal > 0) { - pass = report.has() && report.get() == m_crash_signal; - } else { - VERIFY_NOT_REACHED(); - } - - if (pass) - out("\x1B[32mPASS\x1B[0m: "); - else - out("\x1B[31mFAIL\x1B[0m: "); - - report.visit( - [&](Failure const& failure) { - switch (failure) { - case Failure::DidNotCrash: - out("Did not crash"); - break; - case Failure::UnexpectedError: - out("Unexpected error"); - break; - default: - VERIFY_NOT_REACHED(); - } - }, - [&](int const& signal) { - out("Terminated with signal {}", signal); - }); - - if (!pass) { - if (m_crash_signal == ANY_SIGNAL) { - out(" while expecting any signal"); - } else if (m_crash_signal > 0) { - out(" while expecting signal {}", m_crash_signal); - } - } - outln(); - - return pass; -} - -} diff --git a/Libraries/LibTest/CrashTest.h b/Libraries/LibTest/CrashTest.h deleted file mode 100644 index b5d94733f0a..00000000000 --- a/Libraries/LibTest/CrashTest.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2018-2020, Andreas Kling - * Copyright (c) 2019-2020, Shannon Booth - * Copyright (c) 2021, Brian Gianforaro - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include -#include -#include -#include - -namespace Test { - -class TEST_API Crash { -public: - enum class RunType { - UsingChildProcess, - UsingCurrentProcess, - }; - - enum class Failure { - DidNotCrash, - UnexpectedError, - }; - - static constexpr int ANY_SIGNAL = -1; - - Crash(ByteString test_type, Function crash_function, int crash_signal = ANY_SIGNAL); - - bool run(RunType run_type = RunType::UsingChildProcess); - -private: - using Report = Variant; - bool do_report(Report report); - - ByteString m_type; - Function m_crash_function; - int m_crash_signal; -}; - -}