mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
LibTest: Change #define-d constants into constexpr and a runtime flag
MAX_GENERATED_VALUES_PER_TEST is now the --randomized_runs flag: $ ./Build/lagom/bin/TestGenerator --randomized_runs 1000 It's sometimes useful to try larger numbers for it instead of the default of 100. MAX_GEN_ATTEMPTS_PER_VALUE is now a constexpr. It's not usually needed to tweak this value; we can recompile with a different value on the rare occasion.
This commit is contained in:
parent
ed60a032a8
commit
4fc1daa69f
Notes:
sideshowbarker
2024-07-17 18:06:52 +09:00
Author: https://github.com/Janiczek Commit: https://github.com/SerenityOS/serenity/commit/4fc1daa69f Pull-request: https://github.com/SerenityOS/serenity/pull/21617 Reviewed-by: https://github.com/ADKaster ✅
4 changed files with 23 additions and 18 deletions
|
@ -30,6 +30,8 @@ void set_randomness_source(Randomized::RandomnessSource);
|
|||
bool is_reporting_enabled();
|
||||
void enable_reporting();
|
||||
void disable_reporting();
|
||||
|
||||
u64 randomized_runs();
|
||||
}
|
||||
|
||||
#define EXPECT_EQ(a, b) \
|
||||
|
|
|
@ -7,22 +7,13 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <LibTest/Macros.h> // intentionally first -- we redefine VERIFY and friends in here
|
||||
#include <LibTest/Randomized/RandomnessSource.h>
|
||||
#include <LibTest/Randomized/Shrink.h>
|
||||
|
||||
#include <AK/DeprecatedString.h>
|
||||
#include <AK/Function.h>
|
||||
#include <AK/NonnullRefPtr.h>
|
||||
#include <AK/RefCounted.h>
|
||||
|
||||
#ifndef MAX_GENERATED_VALUES_PER_TEST
|
||||
# define MAX_GENERATED_VALUES_PER_TEST 100
|
||||
#endif
|
||||
|
||||
#ifndef MAX_GEN_ATTEMPTS_PER_VALUE
|
||||
# define MAX_GEN_ATTEMPTS_PER_VALUE 15
|
||||
#endif
|
||||
#include <LibTest/Macros.h>
|
||||
#include <LibTest/Randomized/RandomnessSource.h>
|
||||
#include <LibTest/Randomized/Shrink.h>
|
||||
|
||||
namespace Test {
|
||||
|
||||
|
@ -54,8 +45,12 @@ public:
|
|||
static NonnullRefPtr<TestCase> randomized(DeprecatedString const& name, TestFunction&& test_function)
|
||||
{
|
||||
using namespace Randomized;
|
||||
|
||||
constexpr u8 MAX_GEN_ATTEMPTS_PER_VALUE = 15;
|
||||
|
||||
TestFunction test_case_function = [test_function = move(test_function)]() {
|
||||
for (u32 i = 0; i < MAX_GENERATED_VALUES_PER_TEST; ++i) {
|
||||
u64 max_randomized_runs = randomized_runs();
|
||||
for (u64 i = 0; i < max_randomized_runs; ++i) {
|
||||
bool generated_successfully = false;
|
||||
u8 gen_attempt;
|
||||
for (gen_attempt = 0; gen_attempt < MAX_GEN_ATTEMPTS_PER_VALUE && !generated_successfully; ++gen_attempt) {
|
||||
|
@ -100,7 +95,7 @@ public:
|
|||
return;
|
||||
}
|
||||
}
|
||||
// MAX_GENERATED_VALUES_PER_TEST values generated, all passed the test.
|
||||
// All randomized_runs() values generated + passed the test.
|
||||
};
|
||||
return make_ref_counted<TestCase>(name, move(test_case_function), false);
|
||||
}
|
||||
|
|
|
@ -5,10 +5,9 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibTest/Macros.h> // intentionally first -- we redefine VERIFY and friends in here
|
||||
|
||||
#include <AK/Function.h>
|
||||
#include <LibCore/ArgsParser.h>
|
||||
#include <LibTest/Macros.h>
|
||||
#include <LibTest/TestResult.h>
|
||||
#include <LibTest/TestSuite.h>
|
||||
#include <math.h>
|
||||
|
@ -64,6 +63,12 @@ Randomized::RandomnessSource& randomness_source()
|
|||
return TestSuite::the().randomness_source();
|
||||
}
|
||||
|
||||
// Declared in Macros.h
|
||||
u64 randomized_runs()
|
||||
{
|
||||
return TestSuite::the().randomized_runs();
|
||||
}
|
||||
|
||||
// Declared in TestCase.h
|
||||
void add_test_case_to_suite(NonnullRefPtr<TestCase> const& test_case)
|
||||
{
|
||||
|
@ -126,6 +131,7 @@ int TestSuite::main(DeprecatedString const& suite_name, Span<StringView> argumen
|
|||
args_parser.add_option(do_tests_only, "Only run tests.", "tests", 0);
|
||||
args_parser.add_option(do_benchmarks_only, "Only run benchmarks.", "bench", 0);
|
||||
args_parser.add_option(m_benchmark_repetitions, "Number of times to repeat each benchmark (default 1)", "benchmark_repetitions", 0, "N");
|
||||
args_parser.add_option(m_randomized_runs, "Number of times to run each RANDOMIZED_TEST_CASE (default 100)", "randomized_runs", 0, "RUNS");
|
||||
args_parser.add_option(do_list_cases, "List available test cases.", "list", 0);
|
||||
args_parser.add_positional_argument(search_string, "Only run matching cases.", "pattern", Core::ArgsParser::Required::No);
|
||||
args_parser.parse(arguments);
|
||||
|
|
|
@ -7,11 +7,10 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <LibTest/Macros.h> // intentionally first -- we redefine VERIFY and friends in here
|
||||
|
||||
#include <AK/DeprecatedString.h>
|
||||
#include <AK/Function.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <LibTest/Macros.h>
|
||||
#include <LibTest/Randomized/RandomnessSource.h>
|
||||
#include <LibTest/TestCase.h>
|
||||
#include <LibTest/TestResult.h>
|
||||
|
@ -61,6 +60,8 @@ public:
|
|||
void enable_reporting() { m_reporting_enabled = true; }
|
||||
void disable_reporting() { m_reporting_enabled = false; }
|
||||
|
||||
u64 randomized_runs() { return m_randomized_runs; }
|
||||
|
||||
private:
|
||||
static TestSuite* s_global;
|
||||
Vector<NonnullRefPtr<TestCase>> m_cases;
|
||||
|
@ -68,6 +69,7 @@ private:
|
|||
u64 m_benchtime = 0;
|
||||
DeprecatedString m_suite_name;
|
||||
u64 m_benchmark_repetitions = 1;
|
||||
u64 m_randomized_runs = 100;
|
||||
Function<void()> m_setup;
|
||||
TestResult m_current_test_result = TestResult::NotRun;
|
||||
Randomized::RandomnessSource m_randomness_source = Randomized::RandomnessSource::live();
|
||||
|
|
Loading…
Reference in a new issue