diff options
| author | Leitwolf11 | 2026-10-24 10:06:25 +0300 |
|---|---|---|
| committer | Leitwolf11 | 2026-10-24 10:06:25 +0300 |
| commit | e104b694513964d5a84e77f751203cda970d741b (patch) | |
| tree | a7d6e6d5cca1e98702549f02489e3570599ca3b4 /extras/catch_amalgamated.cpp | |
| parent | 15eb534ee493a3388c168709eb79a954e9cb5fcf (diff) | |
| download | catch3-e104b694513964d5a84e77f751203cda970d741b.tar.gz | |
Fix the CI failures of the runner and test its planner, options and analysis
ExtraTests X21 and X27 defined their listeners at namespace scope, which
clang rejects under -Wweak-vtables with -Werror on Linux and macOS; they
are now in anonymous namespaces.
After a fatal signal Catch2 closes the open sections itself, so on POSIX a
crash was reported outside the section it happened in. The scheduler now
ignores section ends that follow a fatal condition.
New unit tests cover the planner (every selection, dependency closure and
cycles, hash and duration shards, incremental runs, learned time limits,
ordering, retries, quarantine and replay), every command-line option and
its errors, and the failure analysis (history classes, signature groups,
crash and hang locations, changed files, replay commands).
Catalog::FromEntries builds a catalog without a test registry so the
planner can be tested on its own.
Diffstat (limited to 'extras/catch_amalgamated.cpp')
| -rw-r--r-- | extras/catch_amalgamated.cpp | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/extras/catch_amalgamated.cpp b/extras/catch_amalgamated.cpp index 506726dc..6521ef84 100644 --- a/extras/catch_amalgamated.cpp +++ b/extras/catch_amalgamated.cpp @@ -7,7 +7,7 @@ // SPDX-License-Identifier: BSL-1.0 // Catch v3.16.1 -// Generated: 2026-10-23 23:12:01.455813 +// Generated: 2026-10-24 10:02:49.316745 // ---------------------------------------------------------- // This file is an amalgamation of multiple different files. // You probably shouldn't edit it directly. @@ -846,18 +846,17 @@ namespace Progmasoft::Catch3::Runner // Copyright (c) 2026 Progmasoft. // SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 - - #include <chrono> #include <cstddef> #include <optional> #include <string> #include <vector> + namespace Catch { class IConfig; -} +} // namespace Catch namespace Progmasoft::Catch3::Runner { @@ -907,6 +906,12 @@ namespace Progmasoft::Catch3::Runner [[nodiscard]] static Expected<Catalog> Load(); + /// A catalog of the given tests, without a registry behind it: the + /// tests cannot run, but they can be planned. Each entry's index + /// becomes its position, and an empty key becomes its name. + [[nodiscard]] static Catalog + FromEntries(std::vector<TestEntry> entries); + [[nodiscard]] const std::vector<TestEntry> & Tests() const noexcept { @@ -9907,6 +9912,27 @@ namespace Progmasoft::Catch3::Runner return catalog; } + Catalog + Catalog::FromEntries(std::vector<TestEntry> entries) + { + Catalog catalog; + Sha256 identity; + for (std::size_t index = 0; index < entries.size(); ++index) + { + TestEntry &entry = entries[index]; + entry.index = index; + if (entry.key.empty()) + { + entry.key = entry.name; + } + identity.Update(entry.key); + identity.Update("\n"); + } + catalog.tests_ = std::move(entries); + catalog.identity_ = identity.HexDigest(); + return catalog; + } + const TestEntry * Catalog::Find(const std::string &keyOrName) const { @@ -18122,8 +18148,11 @@ namespace Progmasoft::Catch3::Runner attempt.sections.push_back(section); } } - else + else if (!running.fatal) { + // After a fatal signal Catch2 closes the open + // sections itself; they stay open here, because the + // crash happened inside them. const auto depth = message["depth"].AsUnsigned(); for (auto section = attempt.sections.rbegin(); section != attempt.sections.rend(); |