diff options
| author | Stefan Boberg <[email protected]> | 2025-11-07 14:49:13 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-11-07 14:49:13 +0100 |
| commit | 24e43a913f29ac3b314354e8ce5175f135bcc64f (patch) | |
| tree | ca442937ceeb63461012b33a4576e9835099f106 /thirdparty/ryml/test/test_suite/test_suite_parts.cpp | |
| parent | get oplog attachments (#622) (diff) | |
| download | zen-24e43a913f29ac3b314354e8ce5175f135bcc64f.tar.xz zen-24e43a913f29ac3b314354e8ce5175f135bcc64f.zip | |
switch to xmake for package management (#611)
This change removes our dependency on vcpkg for package management, in favour of bringing some code in-tree in the `thirdparty` folder as well as using the xmake build-in package management feature. For the latter, all the package definitions are maintained in the zen repo itself, in the `repo` folder.
It should now also be easier to build the project as it will no longer depend on having the right version of vcpkg installed, which has been a common problem for new people coming in to the codebase. Now you should only need xmake to build.
* Bumps xmake requirement on github runners to 2.9.9 to resolve an issue where xmake on Windows invokes cmake with `v144` toolchain which does not exist
* BLAKE3 is now in-tree at `thirdparty/blake3`
* cpr is now in-tree at `thirdparty/cpr`
* cxxopts is now in-tree at `thirdparty/cxxopts`
* fmt is now in-tree at `thirdparty/fmt`
* robin-map is now in-tree at `thirdparty/robin-map`
* ryml is now in-tree at `thirdparty/ryml`
* sol2 is now in-tree at `thirdparty/sol2`
* spdlog is now in-tree at `thirdparty/spdlog`
* utfcpp is now in-tree at `thirdparty/utfcpp`
* xmake package repo definitions is in `repo`
* implemented support for sanitizers. ASAN is supported on windows, TSAN, UBSAN, MSAN etc are supported on Linux/MacOS though I have not yet tested it extensively on MacOS
* the zencore encryption implementation also now supports using mbedTLS which is used on MacOS, though for now we still use openssl on Linux
* crashpad
* bumps libcurl to 8.11.0 (from 8.8.0) which should address a rare build upload bug
Diffstat (limited to 'thirdparty/ryml/test/test_suite/test_suite_parts.cpp')
| -rw-r--r-- | thirdparty/ryml/test/test_suite/test_suite_parts.cpp | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/thirdparty/ryml/test/test_suite/test_suite_parts.cpp b/thirdparty/ryml/test/test_suite/test_suite_parts.cpp new file mode 100644 index 000000000..5caaafeab --- /dev/null +++ b/thirdparty/ryml/test/test_suite/test_suite_parts.cpp @@ -0,0 +1,220 @@ +#include "./test_suite_parts.hpp" + +namespace c4 { +namespace yml { + + +// To see the test case contents, refer to this URL: +// https://github.com/yaml/yaml-test-suite/tree/master/src +constexpr const AllowedFailure allowed_failures[] = { + + // g++-5 does not like creating a csubstr directly from the literal. + // so we use this macro to remove cruft from the code: + #define _(testcase, reason) AllowedFailure{csubstr(testcase), csubstr(reason)} + + //------------------------------------------------------------------------- + // SECTION 1. Known issues, TODO + // + // These tests are temporarily skipped, and cover issues that must be fixed. + + // double quoted scalars + _("G4RS-in_json" , "special characters must be emitted in double quoted style"), + _("G4RS-in_yaml" , "special characters must be emitted in double quoted style"), + _("G4RS-out_yaml" , "special characters must be emitted in double quoted style"), + // other + _("UKK6_01-in_yaml" , "fails to parse double :: in UNK state"), + + + //------------------------------------------------------------------------- + // SECTION 2. Expected errors that fail to materialize. + + // maps + _("236B-error" , "should not accept final scalar in a map"), + _("7MNF-error" , "should not accept final scalar in a map"), + _("62EZ-error" , "should not accept invalid block mapping key on same line as previous key"), + _("9CWY-error" , "should not accept final scalar in a map"), + _("CXX2-error" , "should not accept mapping with anchor on document start line"), + _("DK95_06-error" , "should not accept tab indentation"), + _("GDY7-error" , "should not accept comment that looks like a mapping key"), + _("D49Q-error" , "should not accept multiline single quoted implicit keys"), + _("DK4H-error" , "should not accept implicit key followed by newline"), + _("JY7Z-error" , "should not accept trailing content that looks like a mapping"), + _("SU74-error" , "should not accept anchor and alias as mapping key"), + _("T833-error" , "should not accept flow mapping missing a separating comma"), + _("VJP3_00-error" , "should not accept flow collections over many lines"), + _("Y79Y_006-error", "should not accept tab after ?"), + _("Y79Y_007-error", "should not accept tab after :"), + _("Y79Y_008-error", "should not accept tab after ?"), + _("Y79Y_009-error", "should not accept tab after ?"), + _("ZCZ6-error" , "should not accept invalid mapping in plain single line value"), + // seqs + _("5U3A-error" , "should not accept opening a sequence on same line as map key"), + _("6JTT-error" , "should not accept flow sequence without terminating ]"), + _("9C9N-error" , "should not accept non-indented flow sequence"), + _("9JBA-error" , "should not accept comment after flow seq terminating ]"), + _("9MAG-error" , "should not accept flow sequence with invalid comma at the beginning"), + _("CTN5-error" , "should not accept flow sequence with missing elements"), + _("CVW2-error" , "should not accept flow sequence with comment after ,"), + _("G5U8-error" , "should not accept [-, -]"), + _("KS4U-error" , "should not accept item after end of flow sequence"), + _("P2EQ-error" , "should not accept sequence item on same line as previous item"), + _("YJV2-error" , "should not accept [-]"), + _("Y79Y_003-error", "should not accept leading tabs in seq elmt"), + _("Y79Y_004-error", "should not accept tab after -"), + _("Y79Y_005-error", "should not accept tab after -"), + // block scalars + _("2G84_00-error" , "should not accept the block literal spec"), + _("2G84_01-error" , "should not accept the block literal spec"), + _("5LLU-error" , "should not accept folded scalar with wrong indented line after spaces only"), + _("S4GJ-error" , "should not accept text after block scalar indicator"), + _("S98Z-error" , "should not accept block scalar with more spaces than first content line"), + _("X4QW-error" , "should not accept comment without whitespace after block scalar indicator"), + _("Y79Y_000-error", "should not accept leading tabs in the block scalar"), + // quoted scalars + _("55WF-error" , "should not accept invalid escape in double quoted scalar"), + _("7LBH-error" , "should not accept multiline double quoted implicit keys"), + _("DK95_01-error", "should not accept leading tabs in double quoted multiline scalar"), + _("HRE5-error" , "should not accept double quoted scalar with escaped single quote"), + _("JKF3-error" , "should not accept multiline unindented double quoted scalar"), + _("QB6E-error" , "should not accept indented multiline quoted scalar"), + _("RXY3-error" , "should not accept document-end marker in single quoted string"), + _("SU5Z-error" , "should not accept comment without whitespace after double quoted scalar"), + // plain scalars + _("8XDJ-error" , "should not accept comment in multiline scalar"), + _("CML9-error" , "should not accept comment inside flow scalar"), + // documents/streams + _("3HFZ-error" , "should not accept scalar after ..."), + _("5TRB-error" , "should not accept document-end marker in double quoted string"), + _("9MMA-error" , "should not accept empty doc after %YAML directive"), + _("9MQT_01-error", "should not accept scalars after ..."), + _("B63P-error" , "should not accept directive without doc"), + _("EB22-error" , "should not accept missing document-end marker before directive"), + _("H7TQ-error" , "should not accept extra words after directive"), + _("MUS6_00-error", "should not accept #... at the end of %YAML directive"), + _("MUS6_01-error", "should not accept #... at the end of %YAML directive"), + _("N782-error" , "should not accept document markers in flow style"), + _("RHX7-error" , "should not accept directive without document end marker"), + _("SF5V-error" , "should not accept duplicate YAML directive"), + // anchors + _("4EJS-error" , "should not accept double anchor for scalar"), + _("4JVG-error" , "should not accept double anchor for scalar"), + _("SY6V-error" , "should not accept anchor before sequence entry on same line"), + // tags + _("9HCY-error" , "should not accept tag directive in non-doc scope"), + _("BU8L-error" , "should not accept node properties spread over multiple lines"), + _("LHL4-error" , "should not accept tag"), + _("U99R-error" , "should not accept comma in a tag"), + _("QLJ7-error" , "tag directives should apply only to the next doc (?)"), + + + //------------------------------------------------------------------------- + // SECTION 3. Deliberate ryml limitations. + // + // These tests are skipped because they cover parts of YAML that + // are deliberately not implemented by ryml. + + #ifndef RYML_WITH_TAB_TOKENS // -<tab> or :<tab> are supported only when the above macro is defined + _("A2M4-in_yaml-events" , "tabs tokens"), + _("6BCT-in_yaml" , "tabs tokens"), + _("J3BT-in_yaml-events" , "tabs tokens"), + _("Y79Y_010-in_yaml-events", "tabs tokens"), + #endif + // container keys are not supported + _("4FJ6-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("4FJ6-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("6BFJ-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("6BFJ-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("6PBE-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("6PBE-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("6PBE-emit_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("9MMW-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("9MMW-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("KK5P-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("KK5P-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("KZN9-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("KZN9-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("LX3P-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("LX3P-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("M2N8_00-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("M2N8_00-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("M2N8_01-in_yaml-events" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("M2N8_01-out_yaml-events", "only scalar keys allowed (keys cannot be maps or seqs)"), + _("M5DY-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("M5DY-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("Q9WF-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("Q9WF-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("RZP5-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("RZP5-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("SBG9-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("SBG9-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("V9D5-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("V9D5-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("X38W-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("X38W-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("XW4D-in_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + _("XW4D-out_yaml" , "only scalar keys allowed (keys cannot be maps or seqs)"), + // anchors with : are not supported + _("2SXE-in_yaml-events" , "weird characters in anchors, anchors must not end with :"), + // malformed json in the test spec + _("35KP-in_json" , "malformed JSON from multiple documents"), + _("5TYM-in_json" , "malformed JSON from multiple documents"), + _("6XDY-in_json" , "malformed JSON from multiple documents"), + _("6WLZ-in_json" , "malformed JSON from multiple documents"), + _("6ZKB-in_json" , "malformed JSON from multiple documents"), + _("7Z25-in_json" , "malformed JSON from multiple documents"), + _("9DXL-in_json" , "malformed JSON from multiple documents"), + _("9KAX-in_json" , "malformed JSON from multiple documents"), + _("9WXW-in_json" , "malformed JSON from multiple documents"), + _("JHB9-in_json" , "malformed JSON from multiple documents"), + _("KSS4-in_json" , "malformed JSON from multiple documents"), + _("L383-in_json" , "malformed JSON from multiple documents"), + _("M7A3-in_json" , "malformed JSON from multiple documents"), + _("RZT7-in_json" , "malformed JSON from multiple documents"), + _("U9NS-in_json" , "malformed JSON from multiple documents"), + _("W4TN-in_json" , "malformed JSON from multiple documents"), + // malformed test spec? + _("4ABK-out_yaml-events" , "out-yaml contains null, while in-yaml and events contain empty scalars"), + _("4WA9-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("652Z-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("6CA3-emit_yaml" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("6FWR-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("6WPF-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("9TFX-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("B3HG-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("DK95_00-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("DK95_02-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("DK95_03-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("DK95_04-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("DK95_05-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("DK95_06-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("DK95_07-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("DK95_08-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("EX5H-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("EXG3-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("L24T_00-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("L24T_01-emit_yaml-events", "out-yaml test spec is missing a --- document token, which is required in the events"), + _("M6YH-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("Q8AD-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("T26H-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("T4YY-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("T5N4-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + _("VJP3_01-out_yaml-events" , "out-yaml test spec is missing a --- document token, which is required in the events"), + + #undef _ +}; + + +cspan<AllowedFailure> g_allowed_failures = allowed_failures; + +AllowedFailure is_failure_expected(csubstr casename) +{ + RYML_CHECK(casename.not_empty()); + for(AllowedFailure const& af : g_allowed_failures) + if(af.test_name == casename || casename.begins_with(af.test_name)) + return af; + return {}; +} + + +} // namespace c4 +} // namespace yml |