mirror of
https://github.com/google/googletest.git
synced 2024-12-27 18:31:21 +08:00
Merge pull request #2751 from calumr:quiet-flag
PiperOrigin-RevId: 309958629
This commit is contained in:
commit
e589a33717
@ -2261,6 +2261,12 @@ disable colors, or let googletest decide. When the value is `auto`, googletest
|
||||
will use colors if and only if the output goes to a terminal and (on non-Windows
|
||||
platforms) the `TERM` environment variable is set to `xterm` or `xterm-color`.
|
||||
|
||||
#### Suppressing test passes
|
||||
|
||||
By default, googletest prints 1 line of output for each test, indicating if it
|
||||
passed or failed. To show only test failures, run the test program with
|
||||
`--gtest_brief=1`, or set the GTEST_BRIEF environment variable to `1`.
|
||||
|
||||
#### Suppressing the Elapsed Time
|
||||
|
||||
By default, googletest prints the time it takes to run each test. To disable
|
||||
|
@ -121,6 +121,9 @@ GTEST_DECLARE_bool_(list_tests);
|
||||
// in addition to its normal textual output.
|
||||
GTEST_DECLARE_string_(output);
|
||||
|
||||
// This flags control whether Google Test prints only test failures.
|
||||
GTEST_DECLARE_bool_(brief);
|
||||
|
||||
// This flags control whether Google Test prints the elapsed time for each
|
||||
// test.
|
||||
GTEST_DECLARE_bool_(print_time);
|
||||
|
@ -88,6 +88,7 @@ const char kFailFast[] = "fail_fast";
|
||||
const char kFilterFlag[] = "filter";
|
||||
const char kListTestsFlag[] = "list_tests";
|
||||
const char kOutputFlag[] = "output";
|
||||
const char kBriefFlag[] = "brief";
|
||||
const char kPrintTimeFlag[] = "print_time";
|
||||
const char kPrintUTF8Flag[] = "print_utf8";
|
||||
const char kRandomSeedFlag[] = "random_seed";
|
||||
@ -170,6 +171,7 @@ class GTestFlagSaver {
|
||||
internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
|
||||
list_tests_ = GTEST_FLAG(list_tests);
|
||||
output_ = GTEST_FLAG(output);
|
||||
brief_ = GTEST_FLAG(brief);
|
||||
print_time_ = GTEST_FLAG(print_time);
|
||||
print_utf8_ = GTEST_FLAG(print_utf8);
|
||||
random_seed_ = GTEST_FLAG(random_seed);
|
||||
@ -193,6 +195,7 @@ class GTestFlagSaver {
|
||||
GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
|
||||
GTEST_FLAG(list_tests) = list_tests_;
|
||||
GTEST_FLAG(output) = output_;
|
||||
GTEST_FLAG(brief) = brief_;
|
||||
GTEST_FLAG(print_time) = print_time_;
|
||||
GTEST_FLAG(print_utf8) = print_utf8_;
|
||||
GTEST_FLAG(random_seed) = random_seed_;
|
||||
@ -216,6 +219,7 @@ class GTestFlagSaver {
|
||||
std::string internal_run_death_test_;
|
||||
bool list_tests_;
|
||||
std::string output_;
|
||||
bool brief_;
|
||||
bool print_time_;
|
||||
bool print_utf8_;
|
||||
int32_t random_seed_;
|
||||
|
@ -289,6 +289,10 @@ GTEST_DEFINE_string_(
|
||||
"executable's name and, if necessary, made unique by adding "
|
||||
"digits.");
|
||||
|
||||
GTEST_DEFINE_bool_(
|
||||
brief, internal::BoolFromGTestEnv("brief", false),
|
||||
"True if only test failures should be displayed in text output.");
|
||||
|
||||
GTEST_DEFINE_bool_(print_time, internal::BoolFromGTestEnv("print_time", true),
|
||||
"True if and only if " GTEST_NAME_
|
||||
" should display elapsed time in text output.");
|
||||
@ -3640,6 +3644,110 @@ void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
|
||||
|
||||
// End PrettyUnitTestResultPrinter
|
||||
|
||||
// This class implements the TestEventListener interface.
|
||||
//
|
||||
// Class BriefUnitTestResultPrinter is copyable.
|
||||
class BriefUnitTestResultPrinter : public TestEventListener {
|
||||
public:
|
||||
BriefUnitTestResultPrinter() {}
|
||||
static void PrintTestName(const char* test_suite, const char* test) {
|
||||
printf("%s.%s", test_suite, test);
|
||||
}
|
||||
|
||||
// The following methods override what's in the TestEventListener class.
|
||||
void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
|
||||
void OnTestIterationStart(const UnitTest& /*unit_test*/,
|
||||
int /*iteration*/) override {}
|
||||
void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override {}
|
||||
void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
|
||||
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
|
||||
void OnTestCaseStart(const TestCase& /*test_case*/) override {}
|
||||
#else
|
||||
void OnTestSuiteStart(const TestSuite& /*test_suite*/) override {}
|
||||
#endif // OnTestCaseStart
|
||||
|
||||
void OnTestStart(const TestInfo& /*test_info*/) override {}
|
||||
|
||||
void OnTestPartResult(const TestPartResult& result) override;
|
||||
void OnTestEnd(const TestInfo& test_info) override;
|
||||
#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
|
||||
void OnTestCaseEnd(const TestCase& /*test_case*/) override {}
|
||||
#else
|
||||
void OnTestSuiteEnd(const TestSuite& /*test_suite*/) override {}
|
||||
#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
|
||||
|
||||
void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override {}
|
||||
void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
|
||||
void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
|
||||
void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
|
||||
};
|
||||
|
||||
// Called after an assertion failure.
|
||||
void BriefUnitTestResultPrinter::OnTestPartResult(
|
||||
const TestPartResult& result) {
|
||||
switch (result.type()) {
|
||||
// If the test part succeeded, we don't need to do anything.
|
||||
case TestPartResult::kSuccess:
|
||||
return;
|
||||
default:
|
||||
// Print failure message from the assertion
|
||||
// (e.g. expected this and got that).
|
||||
PrintTestPartResult(result);
|
||||
fflush(stdout);
|
||||
}
|
||||
}
|
||||
|
||||
void BriefUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
|
||||
if (test_info.result()->Failed()) {
|
||||
ColoredPrintf(GTestColor::kRed, "[ FAILED ] ");
|
||||
PrintTestName(test_info.test_suite_name(), test_info.name());
|
||||
PrintFullTestCommentIfPresent(test_info);
|
||||
|
||||
if (GTEST_FLAG(print_time)) {
|
||||
printf(" (%s ms)\n",
|
||||
internal::StreamableToString(test_info.result()->elapsed_time())
|
||||
.c_str());
|
||||
} else {
|
||||
printf("\n");
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
}
|
||||
|
||||
void BriefUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
|
||||
int /*iteration*/) {
|
||||
ColoredPrintf(GTestColor::kGreen, "[==========] ");
|
||||
printf("%s from %s ran.",
|
||||
FormatTestCount(unit_test.test_to_run_count()).c_str(),
|
||||
FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
|
||||
if (GTEST_FLAG(print_time)) {
|
||||
printf(" (%s ms total)",
|
||||
internal::StreamableToString(unit_test.elapsed_time()).c_str());
|
||||
}
|
||||
printf("\n");
|
||||
ColoredPrintf(GTestColor::kGreen, "[ PASSED ] ");
|
||||
printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
|
||||
|
||||
const int skipped_test_count = unit_test.skipped_test_count();
|
||||
if (skipped_test_count > 0) {
|
||||
ColoredPrintf(GTestColor::kGreen, "[ SKIPPED ] ");
|
||||
printf("%s.\n", FormatTestCount(skipped_test_count).c_str());
|
||||
}
|
||||
|
||||
int num_disabled = unit_test.reportable_disabled_test_count();
|
||||
if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
|
||||
if (unit_test.Passed()) {
|
||||
printf("\n"); // Add a spacer if no FAILURE banner is displayed.
|
||||
}
|
||||
ColoredPrintf(GTestColor::kYellow, " YOU HAVE %d DISABLED %s\n\n",
|
||||
num_disabled, num_disabled == 1 ? "TEST" : "TESTS");
|
||||
}
|
||||
// Ensure that Google Test output is printed before, e.g., heapchecker output.
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
// End BriefUnitTestResultPrinter
|
||||
|
||||
// class TestEventRepeater
|
||||
//
|
||||
// This class forwards events to other event listeners.
|
||||
@ -5390,6 +5498,10 @@ void UnitTestImpl::PostFlagParsingInit() {
|
||||
// to shut down the default XML output before invoking RUN_ALL_TESTS.
|
||||
ConfigureXmlOutput();
|
||||
|
||||
if (GTEST_FLAG(brief)) {
|
||||
listeners()->SetDefaultResultPrinter(new BriefUnitTestResultPrinter);
|
||||
}
|
||||
|
||||
#if GTEST_CAN_STREAM_RESULTS_
|
||||
// Configures listeners for streaming test results to the specified server.
|
||||
ConfigureStreamingOutput();
|
||||
@ -6141,69 +6253,96 @@ static void PrintColorEncoded(const char* str) {
|
||||
}
|
||||
|
||||
static const char kColorEncodedHelpMessage[] =
|
||||
"This program contains tests written using " GTEST_NAME_ ". You can use the\n"
|
||||
"following command line flags to control its behavior:\n"
|
||||
"\n"
|
||||
"Test Selection:\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n"
|
||||
" List the names of all tests instead of running them. The name of\n"
|
||||
" TEST(Foo, Bar) is \"Foo.Bar\".\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS"
|
||||
"This program contains tests written using " GTEST_NAME_
|
||||
". You can use the\n"
|
||||
"following command line flags to control its behavior:\n"
|
||||
"\n"
|
||||
"Test Selection:\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"list_tests@D\n"
|
||||
" List the names of all tests instead of running them. The name of\n"
|
||||
" TEST(Foo, Bar) is \"Foo.Bar\".\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"filter=@YPOSTIVE_PATTERNS"
|
||||
"[@G-@YNEGATIVE_PATTERNS]@D\n"
|
||||
" Run only the tests whose name matches one of the positive patterns but\n"
|
||||
" none of the negative patterns. '?' matches any single character; '*'\n"
|
||||
" matches any substring; ':' separates two patterns.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n"
|
||||
" Run all disabled tests too.\n"
|
||||
"\n"
|
||||
"Test Execution:\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n"
|
||||
" Run the tests repeatedly; use a negative count to repeat forever.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n"
|
||||
" Randomize tests' orders on every iteration.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n"
|
||||
" Random number seed to use for shuffling test orders (between 1 and\n"
|
||||
" 99999, or 0 to use a seed based on the current time).\n"
|
||||
"\n"
|
||||
"Test Output:\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
|
||||
" Enable/disable colored output. The default is @Gauto@D.\n"
|
||||
" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n"
|
||||
" Don't print the elapsed time of each test.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "output=@Y(@Gjson@Y|@Gxml@Y)[@G:@YDIRECTORY_PATH@G"
|
||||
GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n"
|
||||
" Generate a JSON or XML report in the given directory or with the given\n"
|
||||
" file name. @YFILE_PATH@D defaults to @Gtest_detail.xml@D.\n"
|
||||
" Run only the tests whose name matches one of the positive patterns "
|
||||
"but\n"
|
||||
" none of the negative patterns. '?' matches any single character; "
|
||||
"'*'\n"
|
||||
" matches any substring; ':' separates two patterns.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"also_run_disabled_tests@D\n"
|
||||
" Run all disabled tests too.\n"
|
||||
"\n"
|
||||
"Test Execution:\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"repeat=@Y[COUNT]@D\n"
|
||||
" Run the tests repeatedly; use a negative count to repeat forever.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"shuffle@D\n"
|
||||
" Randomize tests' orders on every iteration.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"random_seed=@Y[NUMBER]@D\n"
|
||||
" Random number seed to use for shuffling test orders (between 1 and\n"
|
||||
" 99999, or 0 to use a seed based on the current time).\n"
|
||||
"\n"
|
||||
"Test Output:\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
|
||||
" Enable/disable colored output. The default is @Gauto@D.\n"
|
||||
" -@G-" GTEST_FLAG_PREFIX_
|
||||
"brief=1@D\n"
|
||||
" Only print test failures.\n"
|
||||
" -@G-" GTEST_FLAG_PREFIX_
|
||||
"print_time=0@D\n"
|
||||
" Don't print the elapsed time of each test.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"output=@Y(@Gjson@Y|@Gxml@Y)[@G:@YDIRECTORY_PATH@G" GTEST_PATH_SEP_
|
||||
"@Y|@G:@YFILE_PATH]@D\n"
|
||||
" Generate a JSON or XML report in the given directory or with the "
|
||||
"given\n"
|
||||
" file name. @YFILE_PATH@D defaults to @Gtest_detail.xml@D.\n"
|
||||
# if GTEST_CAN_STREAM_RESULTS_
|
||||
" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n"
|
||||
" Stream test results to the given server.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"stream_result_to=@YHOST@G:@YPORT@D\n"
|
||||
" Stream test results to the given server.\n"
|
||||
# endif // GTEST_CAN_STREAM_RESULTS_
|
||||
"\n"
|
||||
"Assertion Behavior:\n"
|
||||
"\n"
|
||||
"Assertion Behavior:\n"
|
||||
# if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
|
||||
" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
|
||||
" Set the default death test style.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
|
||||
" Set the default death test style.\n"
|
||||
# endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
|
||||
" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n"
|
||||
" Turn assertion failures into debugger break-points.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n"
|
||||
" Turn assertion failures into C++ exceptions for use by an external\n"
|
||||
" test framework.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n"
|
||||
" Do not report exceptions as test failures. Instead, allow them\n"
|
||||
" to crash the program or throw a pop-up (on Windows).\n"
|
||||
"\n"
|
||||
"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set "
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"break_on_failure@D\n"
|
||||
" Turn assertion failures into debugger break-points.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"throw_on_failure@D\n"
|
||||
" Turn assertion failures into C++ exceptions for use by an external\n"
|
||||
" test framework.\n"
|
||||
" @G--" GTEST_FLAG_PREFIX_
|
||||
"catch_exceptions=0@D\n"
|
||||
" Do not report exceptions as test failures. Instead, allow them\n"
|
||||
" to crash the program or throw a pop-up (on Windows).\n"
|
||||
"\n"
|
||||
"Except for @G--" GTEST_FLAG_PREFIX_
|
||||
"list_tests@D, you can alternatively set "
|
||||
"the corresponding\n"
|
||||
"environment variable of a flag (all letters in upper-case). For example, to\n"
|
||||
"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_
|
||||
"environment variable of a flag (all letters in upper-case). For example, "
|
||||
"to\n"
|
||||
"disable colored text output, you can either specify "
|
||||
"@G--" GTEST_FLAG_PREFIX_
|
||||
"color=no@D or set\n"
|
||||
"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n"
|
||||
"\n"
|
||||
"For more information, please read the " GTEST_NAME_ " documentation at\n"
|
||||
"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n"
|
||||
"(not one in your own code or tests), please report it to\n"
|
||||
"@G<" GTEST_DEV_EMAIL_ ">@D.\n";
|
||||
"the @G" GTEST_FLAG_PREFIX_UPPER_
|
||||
"COLOR@D environment variable to @Gno@D.\n"
|
||||
"\n"
|
||||
"For more information, please read the " GTEST_NAME_
|
||||
" documentation at\n"
|
||||
"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_
|
||||
"\n"
|
||||
"(not one in your own code or tests), please report it to\n"
|
||||
"@G<" GTEST_DEV_EMAIL_ ">@D.\n";
|
||||
|
||||
static bool ParseGoogleTestFlag(const char* const arg) {
|
||||
return ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
|
||||
@ -6223,6 +6362,7 @@ static bool ParseGoogleTestFlag(const char* const arg) {
|
||||
>EST_FLAG(internal_run_death_test)) ||
|
||||
ParseBoolFlag(arg, kListTestsFlag, >EST_FLAG(list_tests)) ||
|
||||
ParseStringFlag(arg, kOutputFlag, >EST_FLAG(output)) ||
|
||||
ParseBoolFlag(arg, kBriefFlag, >EST_FLAG(brief)) ||
|
||||
ParseBoolFlag(arg, kPrintTimeFlag, >EST_FLAG(print_time)) ||
|
||||
ParseBoolFlag(arg, kPrintUTF8Flag, >EST_FLAG(print_utf8)) ||
|
||||
ParseInt32Flag(arg, kRandomSeedFlag, >EST_FLAG(random_seed)) ||
|
||||
|
@ -90,6 +90,7 @@ class GTestEnvVarTest(gtest_test_utils.TestCase):
|
||||
TestFlag('filter', 'FooTest.Bar', '*')
|
||||
SetEnvVar('XML_OUTPUT_FILE', None) # For 'output' test
|
||||
TestFlag('output', 'xml:tmp/foo.xml', '')
|
||||
TestFlag('brief', '1', '0')
|
||||
TestFlag('print_time', '0', '1')
|
||||
TestFlag('repeat', '999', '1')
|
||||
TestFlag('throw_on_failure', '1', '0')
|
||||
|
@ -87,6 +87,11 @@ void PrintFlag(const char* flag) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(flag, "brief") == 0) {
|
||||
cout << GTEST_FLAG(brief);
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(flag, "print_time") == 0) {
|
||||
cout << GTEST_FLAG(print_time);
|
||||
return;
|
||||
|
@ -68,6 +68,7 @@ HELP_REGEX = re.compile(
|
||||
FLAG_PREFIX + r'shuffle.*' +
|
||||
FLAG_PREFIX + r'random_seed=.*' +
|
||||
FLAG_PREFIX + r'color=.*' +
|
||||
FLAG_PREFIX + r'brief.*' +
|
||||
FLAG_PREFIX + r'print_time.*' +
|
||||
FLAG_PREFIX + r'output=.*' +
|
||||
FLAG_PREFIX + r'break_on_failure.*' +
|
||||
|
@ -45,7 +45,7 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) {
|
||||
testing::GTEST_FLAG(filter) != "unknown" ||
|
||||
testing::GTEST_FLAG(list_tests) ||
|
||||
testing::GTEST_FLAG(output) != "unknown" ||
|
||||
testing::GTEST_FLAG(print_time) ||
|
||||
testing::GTEST_FLAG(brief) || testing::GTEST_FLAG(print_time) ||
|
||||
testing::GTEST_FLAG(random_seed) ||
|
||||
testing::GTEST_FLAG(repeat) > 0 ||
|
||||
testing::GTEST_FLAG(show_internal_stack_frames) ||
|
||||
@ -207,6 +207,7 @@ using testing::GTEST_FLAG(fail_fast);
|
||||
using testing::GTEST_FLAG(filter);
|
||||
using testing::GTEST_FLAG(list_tests);
|
||||
using testing::GTEST_FLAG(output);
|
||||
using testing::GTEST_FLAG(brief);
|
||||
using testing::GTEST_FLAG(print_time);
|
||||
using testing::GTEST_FLAG(random_seed);
|
||||
using testing::GTEST_FLAG(repeat);
|
||||
@ -1604,6 +1605,7 @@ class GTestFlagSaverTest : public Test {
|
||||
GTEST_FLAG(filter) = "";
|
||||
GTEST_FLAG(list_tests) = false;
|
||||
GTEST_FLAG(output) = "";
|
||||
GTEST_FLAG(brief) = false;
|
||||
GTEST_FLAG(print_time) = true;
|
||||
GTEST_FLAG(random_seed) = 0;
|
||||
GTEST_FLAG(repeat) = 1;
|
||||
@ -1632,6 +1634,7 @@ class GTestFlagSaverTest : public Test {
|
||||
EXPECT_STREQ("", GTEST_FLAG(filter).c_str());
|
||||
EXPECT_FALSE(GTEST_FLAG(list_tests));
|
||||
EXPECT_STREQ("", GTEST_FLAG(output).c_str());
|
||||
EXPECT_FALSE(GTEST_FLAG(brief));
|
||||
EXPECT_TRUE(GTEST_FLAG(print_time));
|
||||
EXPECT_EQ(0, GTEST_FLAG(random_seed));
|
||||
EXPECT_EQ(1, GTEST_FLAG(repeat));
|
||||
@ -1649,6 +1652,7 @@ class GTestFlagSaverTest : public Test {
|
||||
GTEST_FLAG(filter) = "abc";
|
||||
GTEST_FLAG(list_tests) = true;
|
||||
GTEST_FLAG(output) = "xml:foo.xml";
|
||||
GTEST_FLAG(brief) = true;
|
||||
GTEST_FLAG(print_time) = false;
|
||||
GTEST_FLAG(random_seed) = 1;
|
||||
GTEST_FLAG(repeat) = 100;
|
||||
@ -5509,6 +5513,7 @@ struct Flags {
|
||||
filter(""),
|
||||
list_tests(false),
|
||||
output(""),
|
||||
brief(false),
|
||||
print_time(true),
|
||||
random_seed(0),
|
||||
repeat(1),
|
||||
@ -5583,6 +5588,14 @@ struct Flags {
|
||||
return flags;
|
||||
}
|
||||
|
||||
// Creates a Flags struct where the gtest_brief flag has the given
|
||||
// value.
|
||||
static Flags Brief(bool brief) {
|
||||
Flags flags;
|
||||
flags.brief = brief;
|
||||
return flags;
|
||||
}
|
||||
|
||||
// Creates a Flags struct where the gtest_print_time flag has the given
|
||||
// value.
|
||||
static Flags PrintTime(bool print_time) {
|
||||
@ -5648,6 +5661,7 @@ struct Flags {
|
||||
const char* filter;
|
||||
bool list_tests;
|
||||
const char* output;
|
||||
bool brief;
|
||||
bool print_time;
|
||||
int32_t random_seed;
|
||||
int32_t repeat;
|
||||
@ -5670,6 +5684,7 @@ class ParseFlagsTest : public Test {
|
||||
GTEST_FLAG(filter) = "";
|
||||
GTEST_FLAG(list_tests) = false;
|
||||
GTEST_FLAG(output) = "";
|
||||
GTEST_FLAG(brief) = false;
|
||||
GTEST_FLAG(print_time) = true;
|
||||
GTEST_FLAG(random_seed) = 0;
|
||||
GTEST_FLAG(repeat) = 1;
|
||||
@ -5701,6 +5716,7 @@ class ParseFlagsTest : public Test {
|
||||
EXPECT_STREQ(expected.filter, GTEST_FLAG(filter).c_str());
|
||||
EXPECT_EQ(expected.list_tests, GTEST_FLAG(list_tests));
|
||||
EXPECT_STREQ(expected.output, GTEST_FLAG(output).c_str());
|
||||
EXPECT_EQ(expected.brief, GTEST_FLAG(brief));
|
||||
EXPECT_EQ(expected.print_time, GTEST_FLAG(print_time));
|
||||
EXPECT_EQ(expected.random_seed, GTEST_FLAG(random_seed));
|
||||
EXPECT_EQ(expected.repeat, GTEST_FLAG(repeat));
|
||||
@ -5992,6 +6008,33 @@ TEST_F(ParseFlagsTest, OutputXmlDirectory) {
|
||||
Flags::Output("xml:directory/path/"), false);
|
||||
}
|
||||
|
||||
// Tests having a --gtest_brief flag
|
||||
TEST_F(ParseFlagsTest, BriefFlag) {
|
||||
const char* argv[] = {"foo.exe", "--gtest_brief", nullptr};
|
||||
|
||||
const char* argv2[] = {"foo.exe", nullptr};
|
||||
|
||||
GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Brief(true), false);
|
||||
}
|
||||
|
||||
// Tests having a --gtest_brief flag with a "true" value
|
||||
TEST_F(ParseFlagsTest, BriefFlagTrue) {
|
||||
const char* argv[] = {"foo.exe", "--gtest_brief=1", nullptr};
|
||||
|
||||
const char* argv2[] = {"foo.exe", nullptr};
|
||||
|
||||
GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Brief(true), false);
|
||||
}
|
||||
|
||||
// Tests having a --gtest_brief flag with a "false" value
|
||||
TEST_F(ParseFlagsTest, BriefFlagFalse) {
|
||||
const char* argv[] = {"foo.exe", "--gtest_brief=0", nullptr};
|
||||
|
||||
const char* argv2[] = {"foo.exe", nullptr};
|
||||
|
||||
GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Brief(false), false);
|
||||
}
|
||||
|
||||
// Tests having a --gtest_print_time flag
|
||||
TEST_F(ParseFlagsTest, PrintTimeFlag) {
|
||||
const char* argv[] = {"foo.exe", "--gtest_print_time", nullptr};
|
||||
|
Loading…
x
Reference in New Issue
Block a user