diff options
| author | Martin Hořeňovský | 2026-07-28 22:08:55 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2026-08-08 00:05:18 +0200 |
| commit | 4cde12851773b32fc5a0171f262e4281c8e28b01 (patch) | |
| tree | cdd11d3c9c86a2a6c9ba15fdfe69fd9555ecf850 /tests | |
| parent | 0b4d7a5a1696dbdfb23fccad8c50db9dc9a417ea (diff) | |
| download | catch3-4cde12851773b32fc5a0171f262e4281c8e28b01.tar.gz | |
JSONReporter considers verbosity when listing tests
* Quiet verbosity provides just the test names
* Normal verbosity adds tags
* High verbosity add the source location of the tests
Listing tests with the quiet verbosity results in about 1/4 of the
previous output, which leads to measurably faster execution of
`catch_discover_tests` when it does not need tags for labels.
(If it does need tags, the output is about 1/2 of previous).
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/CMakeLists.txt | 38 | ||||
| -rw-r--r-- | tests/SelfTest/Baselines/compact.sw.approved.txt | 6 | ||||
| -rw-r--r-- | tests/SelfTest/Baselines/compact.sw.multi.approved.txt | 6 | ||||
| -rw-r--r-- | tests/SelfTest/Baselines/console.sw.approved.txt | 6 | ||||
| -rw-r--r-- | tests/SelfTest/Baselines/console.sw.multi.approved.txt | 6 | ||||
| -rw-r--r-- | tests/SelfTest/Baselines/tap.sw.approved.txt | 2 | ||||
| -rw-r--r-- | tests/SelfTest/Baselines/tap.sw.multi.approved.txt | 2 | ||||
| -rw-r--r-- | tests/SelfTest/Baselines/xml.sw.approved.txt | 6 | ||||
| -rw-r--r-- | tests/SelfTest/Baselines/xml.sw.multi.approved.txt | 6 |
9 files changed, 46 insertions, 32 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index eba8c22b..573c38e7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -208,6 +208,21 @@ set_tests_properties(List::Tests::XmlOutput PROPERTIES FAIL_REGULAR_EXPRESSION "[0-9]+ test cases" ) +add_test(NAME List::Tests::Json::Normal COMMAND $<TARGET_FILE:SelfTest> --list-tests -r json) +set_tests_properties(List::Tests::Json::Normal PROPERTIES + PASS_REGULAR_EXPRESSION "\"tags\": \\[" + FAIL_REGULAR_EXPRESSION "\"source-location\": {" +) +add_test(NAME List::Tests::Json::Quiet COMMAND $<TARGET_FILE:SelfTest> --list-tests -r json::verbosity=quiet) +set_tests_properties(List::Tests::Json::Quiet PROPERTIES + PASS_REGULAR_EXPRESSION "\"name\": \"" + FAIL_REGULAR_EXPRESSION "\"tags\": \\[" +) +add_test(NAME List::Tests::Json::High COMMAND $<TARGET_FILE:SelfTest> --list-tests -r json::verbosity=high) +set_tests_properties(List::Tests::Json::High PROPERTIES + PASS_REGULAR_EXPRESSION "\"source-location\": {" +) + add_test(NAME List::Tags::Output COMMAND $<TARGET_FILE:SelfTest> --list-tags) set_tests_properties(List::Tags::Output PROPERTIES PASS_REGULAR_EXPRESSION "[0-9]+ tags" @@ -218,6 +233,11 @@ set_tests_properties(List::Tags::XmlOutput PROPERTIES PASS_REGULAR_EXPRESSION "<Count>18</Count>" FAIL_REGULAR_EXPRESSION "[0-9]+ tags" ) +add_test(NAME List::Tags::JsonOutput COMMAND $<TARGET_FILE:SelfTest> --list-tags -r json) +set_tests_properties(List::Tags::JsonOutput PROPERTIES + PASS_REGULAR_EXPRESSION "\"count\": 18" + FAIL_REGULAR_EXPRESSION "[0-9]+ tags" +) add_test(NAME List::Reporters::Output COMMAND $<TARGET_FILE:SelfTest> --list-reporters) set_tests_properties(List::Reporters::Output PROPERTIES PASS_REGULAR_EXPRESSION "Available reporters:") @@ -227,6 +247,12 @@ set_tests_properties(List::Reporters::XmlOutput PROPERTIES PASS_REGULAR_EXPRESSION "<Name>compact</Name>" FAIL_REGULAR_EXPRESSION "Available reporters:" ) +add_test(NAME List::Reporters::JsonOutput COMMAND $<TARGET_FILE:SelfTest> --list-reporters -r json) +set_tests_properties(List::Reporters::JsonOutput PROPERTIES + PASS_REGULAR_EXPRESSION "\"name\": \"compact\"" + FAIL_REGULAR_EXPRESSION "Available reporters:" +) + add_test(NAME List::Listeners::Output COMMAND @@ -251,6 +277,18 @@ set_tests_properties(List::Listeners::XmlOutput PASS_REGULAR_EXPRESSION "<RegisteredListeners>" FAIL_REGULAR_EXPRESSION "Registered listeners:" ) +add_test(NAME List::Listeners::JsonOutput + COMMAND + $<TARGET_FILE:SelfTest> + --list-listeners + --reporter json +) +set_tests_properties(List::Listeners::JsonOutput + PROPERTIES + PASS_REGULAR_EXPRESSION "\"listeners\": \\[" + FAIL_REGULAR_EXPRESSION "Registered listeners:" +) + add_test(NAME NoAssertions COMMAND $<TARGET_FILE:SelfTest> -w NoAssertions "An empty test with no assertions") set_tests_properties(NoAssertions PROPERTIES PASS_REGULAR_EXPRESSION "No assertions in test case") diff --git a/tests/SelfTest/Baselines/compact.sw.approved.txt b/tests/SelfTest/Baselines/compact.sw.approved.txt index 94898c37..673c9dd7 100644 --- a/tests/SelfTest/Baselines/compact.sw.approved.txt +++ b/tests/SelfTest/Baselines/compact.sw.approved.txt @@ -1740,11 +1740,7 @@ Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fa "name": "fake test name", "tags": [ "fakeTestTag" - ], - "source-location": { - "filename": "fake-file.cpp", - "line": 123456789 - } + ] } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON' Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false diff --git a/tests/SelfTest/Baselines/compact.sw.multi.approved.txt b/tests/SelfTest/Baselines/compact.sw.multi.approved.txt index 2d268b2f..73195967 100644 --- a/tests/SelfTest/Baselines/compact.sw.multi.approved.txt +++ b/tests/SelfTest/Baselines/compact.sw.multi.approved.txt @@ -1738,11 +1738,7 @@ Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fa "name": "fake test name", "tags": [ "fakeTestTag" - ], - "source-location": { - "filename": "fake-file.cpp", - "line": 123456789 - } + ] } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON' Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false diff --git a/tests/SelfTest/Baselines/console.sw.approved.txt b/tests/SelfTest/Baselines/console.sw.approved.txt index 9d8fa88f..6ec67e3f 100644 --- a/tests/SelfTest/Baselines/console.sw.approved.txt +++ b/tests/SelfTest/Baselines/console.sw.approved.txt @@ -11323,11 +11323,7 @@ with expansion: "name": "fake test name", "tags": [ "fakeTestTag" - ], - "source-location": { - "filename": "fake-file.cpp", - "line": 123456789 - } + ] } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with message: diff --git a/tests/SelfTest/Baselines/console.sw.multi.approved.txt b/tests/SelfTest/Baselines/console.sw.multi.approved.txt index fcdf5f9f..9af23aa5 100644 --- a/tests/SelfTest/Baselines/console.sw.multi.approved.txt +++ b/tests/SelfTest/Baselines/console.sw.multi.approved.txt @@ -11321,11 +11321,7 @@ with expansion: "name": "fake test name", "tags": [ "fakeTestTag" - ], - "source-location": { - "filename": "fake-file.cpp", - "line": 123456789 - } + ] } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with message: diff --git a/tests/SelfTest/Baselines/tap.sw.approved.txt b/tests/SelfTest/Baselines/tap.sw.approved.txt index 657b86ff..69476eef 100644 --- a/tests/SelfTest/Baselines/tap.sw.approved.txt +++ b/tests/SelfTest/Baselines/tap.sw.approved.txt @@ -2775,7 +2775,7 @@ ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "{ # Reporter's write listings to provided stream ok {test-number} - !(factories.empty()) for: !false # Reporter's write listings to provided stream -ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{ "version": 2, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tests": [ { "name": "fake test name", "tags": [ "fakeTestTag" ], "source-location": { "filename": "fake-file.cpp", "line": 123456789 } } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON' +ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{ "version": 2, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tests": [ { "name": "fake test name", "tags": [ "fakeTestTag" ] } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON' # Reporter's write listings to provided stream ok {test-number} - !(factories.empty()) for: !false # Reporter's write listings to provided stream diff --git a/tests/SelfTest/Baselines/tap.sw.multi.approved.txt b/tests/SelfTest/Baselines/tap.sw.multi.approved.txt index 5626093a..01b8a422 100644 --- a/tests/SelfTest/Baselines/tap.sw.multi.approved.txt +++ b/tests/SelfTest/Baselines/tap.sw.multi.approved.txt @@ -2773,7 +2773,7 @@ ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "{ # Reporter's write listings to provided stream ok {test-number} - !(factories.empty()) for: !false # Reporter's write listings to provided stream -ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{ "version": 2, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tests": [ { "name": "fake test name", "tags": [ "fakeTestTag" ], "source-location": { "filename": "fake-file.cpp", "line": 123456789 } } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON' +ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{ "version": 2, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tests": [ { "name": "fake test name", "tags": [ "fakeTestTag" ] } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON' # Reporter's write listings to provided stream ok {test-number} - !(factories.empty()) for: !false # Reporter's write listings to provided stream diff --git a/tests/SelfTest/Baselines/xml.sw.approved.txt b/tests/SelfTest/Baselines/xml.sw.approved.txt index 42b41eca..d48496b9 100644 --- a/tests/SelfTest/Baselines/xml.sw.approved.txt +++ b/tests/SelfTest/Baselines/xml.sw.approved.txt @@ -13503,11 +13503,7 @@ Approx( 0.98999999999999999 ) "name": "fake test name", "tags": [ "fakeTestTag" - ], - "source-location": { - "filename": "fake-file.cpp", - "line": 123456789 - } + ] } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) </Expanded> diff --git a/tests/SelfTest/Baselines/xml.sw.multi.approved.txt b/tests/SelfTest/Baselines/xml.sw.multi.approved.txt index 3d265d40..db82d34d 100644 --- a/tests/SelfTest/Baselines/xml.sw.multi.approved.txt +++ b/tests/SelfTest/Baselines/xml.sw.multi.approved.txt @@ -13503,11 +13503,7 @@ Approx( 0.98999999999999999 ) "name": "fake test name", "tags": [ "fakeTestTag" - ], - "source-location": { - "filename": "fake-file.cpp", - "line": 123456789 - } + ] } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) </Expanded> |