Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/tests/SelfTest/UsageTests/Message.tests.cpp
diff options
context:
space:
mode:
authorLeitwolf112026-10-25 13:57:03 +0300
committerLeitwolf112026-10-25 13:57:03 +0300
commit45f8c539e86099cb80ecf29b0bf2b3340e141001 (patch)
treecf7f28b76fb2994a3750ecdd127b5738f4d56ad1 /tests/SelfTest/UsageTests/Message.tests.cpp
parentd2e3e074bb2e1b8ffd9fc990d0b87667ea602f58 (diff)
downloadcatch3-45f8c539e86099cb80ecf29b0bf2b3340e141001.tar.gz
Read and write JSON with yyjson and JUnit XML with pugixml
The runner's hand-written JSON parser and writer, and its XML escaping, are replaced by two established MIT libraries, vendored in third_party/: yyjson 0.13.0 and pugixml 1.16. JsonValue and the JUnit model stay as they are. Both are compiled into Catch3's own translation units, so a project that links its own yyjson or pugixml is not affected: - src/Progmasoft/Runner/Yyjson.inl includes yyjson.c into Json.cpp with yyjson_api defined as static, so no yyjson symbol leaves that file. - src/Progmasoft/PugiXml.inl includes pugixml header-only into XmlWriter.cpp with its namespace renamed to Progmasoft_Catch3_Pugi. - Both are read as system headers, outside the warnings Catch3 builds with; they are .inl files, which the header install rules leave out. JSON keeps its behaviour: strings are bytes and come back as written (invalid UTF-8 is allowed both ways), non-finite numbers are written as null, documents nested deeper than 256 levels are refused while they are converted, and whole numbers are written as integers. Fractions are now written as the shortest text that reads back as the same double. JUnit XML stays equivalent; pugixml writes ' and > in attributes as they are, U+FFFD as the character itself and empty elements as <x />. The tests follow. third_party/{yyjson,pugixml} each have BUILD.bazel, CMakeLists.txt, meson.build, xmake.lua and premake5.lua, which only provide the include directory to the library; CMake links them through BUILD_INTERFACE. tools/scripts/updateThirdParty.py pins the version and sha256 of each archive; --check, now a step of the header and license workflow, fails when a vendored file differs from its archive, and --update writes them. Renovate proposes new versions through a regex manager on that table. The amalgamation now has a third file, catch_amalgamated_third_party.hpp, with both wrappers and the libraries inlined; catch_amalgamated.cpp includes it once. The documents and the release notes say so.
Diffstat (limited to 'tests/SelfTest/UsageTests/Message.tests.cpp')
0 files changed, 0 insertions, 0 deletions