mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-02 03:39:43 -06:00
When there were many cases (two digits or more) the "prettier" would fail to recognize the pretty part leaving the test name unprocessed. The fix made sure the processing would work correctly, irrespective of the case number. Before the fix, for the following input: TypedSuite/1. # TypeParam = int case TypedSuite/10. # TypeParam = char case The output would be: TypedSuite/int.case TypedSuite/10. # TypeParam = char.case Now the output will be: TypedSuite/int.case TypedSuite/char.case
85 lines
3.5 KiB
C++
85 lines
3.5 KiB
C++
#include <iostream>
|
|
#include <string>
|
|
|
|
#define ARRAY_SIZE(a) sizeof(a) / sizeof(*a)
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
// Note: GoogleTest.cmake doesn't actually depend on Google Test as such;
|
|
// it only requires that we produces output in the expected format when
|
|
// invoked with --gtest_list_tests. Thus, we fake that here. This allows us
|
|
// to test the module without actually needing Google Test.
|
|
bool is_filtered =
|
|
argc > 2 && std::string(argv[2]).find("--gtest_filter=") == 0;
|
|
bool is_basic_only =
|
|
is_filtered && std::string(argv[2]).find("basic*") != std::string::npos;
|
|
bool is_typed_only =
|
|
is_filtered && std::string(argv[2]).find("typed*") != std::string::npos;
|
|
|
|
if (argc > 1 && std::string(argv[1]) == "--gtest_list_tests") {
|
|
if (!is_typed_only) {
|
|
const char* basic_suite_names[] = { "basic.", "ns.basic." };
|
|
for (size_t i = 0; i < ARRAY_SIZE(basic_suite_names); i++) {
|
|
std::cout << basic_suite_names[i] << std::endl;
|
|
std::cout << " case_foo" << std::endl;
|
|
std::cout << " case_bar" << std::endl;
|
|
std::cout << " DISABLED_disabled_case" << std::endl;
|
|
std::cout << " DISABLEDnot_really_case" << std::endl;
|
|
}
|
|
}
|
|
if (!is_basic_only && !is_typed_only) {
|
|
std::cout << "DISABLED_disabled." << std::endl;
|
|
std::cout << " case" << std::endl;
|
|
std::cout << "DISABLEDnotreally." << std::endl;
|
|
std::cout << " case" << std::endl;
|
|
}
|
|
if (!is_basic_only) {
|
|
const char* typed_suite_names[] = { "typed", "ns.typed" };
|
|
for (size_t i = 0; i < ARRAY_SIZE(typed_suite_names); i++) {
|
|
std::cout << typed_suite_names[i] << "/0. # TypeParam = short\n";
|
|
std::cout << " case" << std::endl;
|
|
std::cout << typed_suite_names[i] << "/1. # TypeParam = float\n";
|
|
std::cout << " case" << std::endl;
|
|
std::cout << typed_suite_names[i] << "/42. # TypeParam = char\n";
|
|
std::cout << " case" << std::endl;
|
|
}
|
|
}
|
|
if (!is_basic_only && !is_typed_only) {
|
|
const char* value_suite_names[] = { "value", "ns.value" };
|
|
for (size_t i = 0; i < ARRAY_SIZE(value_suite_names); i++) {
|
|
std::cout << value_suite_names[i] << "/test." << std::endl;
|
|
std::cout << " case/0 # GetParam() = 1" << std::endl;
|
|
std::cout << " case/1 # GetParam() = \"foo\"" << std::endl;
|
|
}
|
|
const char* param_suite_names[] = { "param", "ns.param" };
|
|
for (size_t j = 0; j < ARRAY_SIZE(param_suite_names); j++) {
|
|
std::cout << param_suite_names[j] << "/special." << std::endl;
|
|
std::cout << " case/0 # GetParam() = \"semicolon;\"" << std::endl;
|
|
std::cout << " case/1 # GetParam() = \"backslash\\\"" << std::endl;
|
|
std::cout << " case/2 # GetParam() = \"${var}\"" << std::endl;
|
|
std::cout << " case/3 # GetParam() = '['" << std::endl;
|
|
std::cout << " case/4 # GetParam() = \"]]=]\"" << std::endl;
|
|
std::cout << " case/5 # GetParam() = \"__osbtext\"" << std::endl;
|
|
std::cout << " case/6 # GetParam() = \"__csb___text\"" << std::endl;
|
|
std::cout << " case/7 # GetParam() = \"S o m e \"" << std::endl;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
if (argc > 5) {
|
|
// Simple test of EXTRA_ARGS
|
|
if (std::string(argv[3]) == "how" && std::string(argv[4]) == "now" &&
|
|
std::string(argv[5]) == "\"brown\" cow") {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
// Print arguments for debugging, if we didn't get the expected arguments
|
|
for (int i = 1; i < argc; ++i) {
|
|
std::cerr << "arg[" << i << "]: '" << argv[i] << "'\n";
|
|
}
|
|
|
|
return 1;
|
|
}
|