GoogleTest: Fix regression with value parameters in discovered tests

Google Test returns parameter values for parametrized tests in two ways:

* As part of the test name - if a name_generator has been provided in
  the test this will be the generated string, otherwise gtest will just
  number all tests

* In a separate field of the json (or the text output) - this seems to
  be a byte representation of the input data if the input data cannot be
  converted to a string.

If the cmake parameter `NO_PRETTY_VALUES` to `gtest_discover_tests` has
not been set, the auto-generated test index - i.e. if no `name_generator
has been specified - is supposed to be replaced by the value parameter
from category 2 above. However, since commit 1cdceae8e3 (GoogleTest:
Parse discovered test list from JSON output if supported, 2025-05-02,
v4.2.0-rc1~533^2~2), the logic has been broken, in that the test suffix
is always replaced even though a name_generator has been configured.

Fix this by checking if the last part of the test name is an integer and
only then replace it.

Fixes: #27846
This commit is contained in:
Ottmar Zittlau
2026-06-07 13:09:40 +02:00
committed by Brad King
parent 6d9ccb598a
commit c51be9dfe9
6 changed files with 90 additions and 87 deletions

View File

@@ -59,9 +59,12 @@ macro(write_test_to_file)
endif()
if (NOT current_test_value_param STREQUAL "" AND NOT arg_NO_PRETTY_VALUES)
# Remove value param name, if any, from test name
string(REGEX REPLACE "^(.+)/.+$" "\\1" pretty_test_name "${pretty_test_name}")
set(pretty_test_name "${pretty_test_name}/${current_test_value_param}")
# If the test name contains a value parameter name (part of the string after last slash), and this
# name is an integer which indicates that it's the default name generated by googletest, replace it by
# the value parameter name provided separately
if("${pretty_test_name}" MATCHES "^(.*)/[0-9]+$")
set(pretty_test_name "${CMAKE_MATCH_1}/${current_test_value_param}")
endif()
endif()
if(NOT current_test_type_param STREQUAL "")

View File

@@ -11,13 +11,13 @@ Test project .*/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change
Test +#[0-9]+: prefix/typed\.case<float>
Test +#[0-9]+: prefix/typed\.case<char>
Test +#[0-9]+: prefix/typed\.case<int>
Test +#[0-9]+: both_suite\.test/VALUE<TYPE>
Test +#[0-9]+: both_suite\.case/VALUE<TYPE>
Test +#[0-9]+: both\.test/VALUE<TYPE>
Test +#[0-9]+: both\.case/VALUE<TYPE>
Test +#[0-9]+: ns\.both\.test/VALUE<TYPE>
Test +#[0-9]+: ns\.both\.case/VALUE<TYPE>
Test +#[0-9]+: prefix/both\.test/VALUE<TYPE>
Test +#[0-9]+: prefix/both\.case/VALUE<TYPE>
Test +#[0-9]+: both_suite\.test<TYPE>
Test +#[0-9]+: both_suite\.case/test<TYPE>
Test +#[0-9]+: both\.test<TYPE>
Test +#[0-9]+: both\.case/test<TYPE>
Test +#[0-9]+: ns\.both\.test<TYPE>
Test +#[0-9]+: ns\.both\.case/test<TYPE>
Test +#[0-9]+: prefix/both\.test<TYPE>
Test +#[0-9]+: prefix/both\.case/test<TYPE>
Total Tests: [0-9]+

View File

@@ -47,20 +47,20 @@ Test project .*
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/1!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:value/test\.case/"foo"!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/"foo"!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:value/test\.case/'c'!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/'c'!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:value/test\.case/named!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/named!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.value/test\.case/1!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/1!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.value/test\.case/"foo"!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/"foo"!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.value/test\.case/'c'!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/'c'!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.value/test\.case/named!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/named!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/value/test\.case/1!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/value/test\.case/1!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/value/test\.case/"foo"!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/value/test\.case/"foo"!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/value/test\.case/'c'!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/value/test\.case/'c'!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/value/test\.case/named!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/value/test\.case/named!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:param/special\.case/"semicolon;"!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"semicolon;"!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:param/special\.case/"backslash\\"!1
@@ -109,22 +109,22 @@ Test project .*
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/param/special\.case/"__csb___text"!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/param/special\.case/"S o m e "!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/param/special\.case/"S o m e "!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.test/VALUE<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.test/VALUE<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.case/VALUE<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.case/VALUE<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.test/VALUE<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.test/VALUE<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.case/VALUE<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.case/VALUE<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.test/VALUE<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.test/VALUE<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.case/VALUE<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.case/VALUE<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.test/VALUE<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.test/VALUE<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.case/VALUE<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.case/VALUE<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.test<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.test<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.case/test<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.case/test<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.test<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.test<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.case/test<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.case/test<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.test<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.test<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.case/test<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.case/test<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.test<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.test<TYPE>!1 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.case/test<TYPE>!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.case/test<TYPE>!1 .+ +Passed +[0-9\.]+ sec
100% tests passed, 0 tests failed out of [0-9]+

View File

@@ -47,20 +47,20 @@ Test project .*
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/1!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:value/test\.case/"foo"!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/"foo"!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:value/test\.case/'c'!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/'c'!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:value/test\.case/named!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/named!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.value/test\.case/1!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/1!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.value/test\.case/"foo"!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/"foo"!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.value/test\.case/'c'!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/'c'!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.value/test\.case/named!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.value/test\.case/named!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/value/test\.case/1!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/value/test\.case/1!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/value/test\.case/"foo"!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/value/test\.case/"foo"!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/value/test\.case/'c'!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/value/test\.case/'c'!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/value/test\.case/named!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/value/test\.case/named!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:param/special\.case/"semicolon;"!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:param/special\.case/"semicolon;"!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:param/special\.case/"backslash\\"!2
@@ -109,22 +109,22 @@ Test project .*
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/param/special\.case/"__csb___text"!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/param/special\.case/"S o m e "!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/param/special\.case/"S o m e "!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.test/VALUE<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.test/VALUE<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.case/VALUE<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.case/VALUE<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.test/VALUE<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.test/VALUE<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.case/VALUE<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.case/VALUE<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.test/VALUE<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.test/VALUE<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.case/VALUE<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.case/VALUE<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.test/VALUE<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.test/VALUE<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.case/VALUE<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.case/VALUE<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.test<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.test<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.case/test<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.case/test<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.test<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.test<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.case/test<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.case/test<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.test<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.test<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.case/test<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.case/test<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.test<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.test<TYPE>!2 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.case/test<TYPE>!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.case/test<TYPE>!2 .+ +Passed +[0-9\.]+ sec
100% tests passed, 0 tests failed out of [0-9]+

View File

@@ -23,22 +23,22 @@ Test project .*
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/typed\.case<char>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/typed\.case<int>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/typed\.case<int>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.test/VALUE<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.test/VALUE<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.case/VALUE<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.case/VALUE<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.test/VALUE<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.test/VALUE<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.case/VALUE<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.case/VALUE<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.test/VALUE<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.test/VALUE<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.case/VALUE<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.case/VALUE<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.test/VALUE<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.test/VALUE<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.case/VALUE<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.case/VALUE<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.test<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.test<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.case/test<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.case/test<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.test<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.test<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.case/test<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.case/test<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.test<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.test<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.case/test<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.case/test<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.test<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.test<TYPE>!4 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.case/test<TYPE>!4
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.case/test<TYPE>!4 .+ +Passed +[0-9\.]+ sec
100% tests passed, 0 tests failed out of [0-9]+

View File

@@ -23,22 +23,22 @@ Test project .*
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/typed\.case<42>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/typed\.case<named>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/typed\.case<named>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.test/VALUE!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.test/VALUE!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.case/VALUE!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.case/VALUE!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.test/VALUE<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.test/VALUE<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.case/VALUE<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.case/VALUE<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.test/VALUE<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.test/VALUE<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.case/VALUE<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.case/VALUE<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.test/VALUE<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.test/VALUE<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.case/VALUE<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.case/VALUE<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.test!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.test!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both_suite\.case/test!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both_suite\.case/test!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.test<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.test<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:both\.case/test<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:both\.case/test<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.test<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.test<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:ns\.both\.case/test<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.both\.case/test<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.test<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.test<suite>!6 .+ +Passed +[0-9\.]+ sec
*Start +[0-9]+: TEST:prefix/both\.case/test<suite>!6
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:prefix/both\.case/test<suite>!6 .+ +Passed +[0-9\.]+ sec
100% tests passed, 0 tests failed out of [0-9]+