1 /** 2 Copyright: Copyright (c) 2018, Joakim Brännström. All rights reserved. 3 License: MPL-2 4 Author: Joakim Brännström (joakim.brannstrom@gmx.com) 5 6 This Source Code Form is subject to the terms of the Mozilla Public License, 7 v.2.0. If a copy of the MPL was not distributed with this file, You can obtain 8 one at http://mozilla.org/MPL/2.0/. 9 10 #SPC-track_gtest 11 */ 12 module dextool.plugin.mutate.backend.test_mutant.gtest_post_analyze; 13 14 import std.exception : collectException; 15 import std.range : isInputRange, isOutputRange; 16 import logger = std.experimental.logger; 17 18 import dextool.plugin.mutate.backend.test_mutant.interface_ : TestCaseReport, 19 GatherTestCase; 20 import dextool.plugin.mutate.backend.type : TestCase; 21 import dextool.type : AbsolutePath; 22 23 /** Parse input for google test cases. 24 Params: 25 r = range that is chunked by line 26 sink = an output that accepts values of type TestCase via `put`. 27 reldir = file paths are adjusted to be relative to this parameter. 28 */ 29 struct GtestParser { 30 import std.regex : ctRegex, matchFirst, matchAll; 31 32 private { 33 // example: [==========] Running 34 enum re_delim = ctRegex!(`.*?\[=*\]`); 35 // example: [ RUN ] PassingTest.PassingTest1 36 // example: +ull)m[ RUN ] ADeathTest.ShouldRunFirst 37 enum re_run_block = ctRegex!(`.*?\[\s*RUN\s*\]\s*(?P<tc>[a-zA-Z0-9_./]*)`); 38 // example: [ FAILED ] NonfatalFailureTest.EscapesStringOperands 39 enum re_failed_block = ctRegex!(`.*?\[\s*FAILED\s*\]\s*(?P<tc>[a-zA-Z0-9_./]*)`); 40 41 AbsolutePath reldir; 42 StateData data; 43 } 44 45 this(AbsolutePath reldir) @safe pure nothrow @nogc { 46 this.reldir = reldir; 47 } 48 49 void process(T)(T line, TestCaseReport report) { 50 auto run_block_match = matchAll(line, re_run_block); 51 auto failed_block_match = matchAll(line, re_failed_block); 52 auto delim_match = matchFirst(line, re_delim); 53 data.hasRunBlock = !run_block_match.empty; 54 data.hasFailedBlock = !failed_block_match.empty; 55 data.hasDelim = !delim_match.empty; 56 57 if (data.hasDelim) { 58 final switch (data.delim) { 59 case DelimState.unknown: 60 data.delim = DelimState.start; 61 break; 62 case DelimState.start: 63 data.delim = DelimState.stop; 64 break; 65 case DelimState.stop: 66 data.delim = DelimState.start; 67 break; 68 } 69 } 70 71 if (data.hasRunBlock) { 72 // force it to a start so failed messages can be found 73 data.delim = DelimState.start; 74 75 foreach (m; run_block_match) { 76 report.reportFound(TestCase(m["tc"].idup)); 77 } 78 } 79 80 if (data.hasFailedBlock && data.delim == DelimState.start) { 81 foreach (m; failed_block_match) { 82 if (m["tc"].length == 0) 83 continue; 84 report.reportFailed(TestCase(m["tc"].idup, data.fail_msg_file)); 85 // the best we can do for now is for the first failed test case. 86 // May improve in the future. 87 data.fail_msg_file = null; 88 } 89 } 90 } 91 } 92 93 version (unittest) { 94 } else { 95 private: 96 } 97 98 // Determine what type of delimiter that where last found. 99 enum DelimState { 100 unknown, 101 start, 102 stop, 103 } 104 105 struct StateData { 106 DelimState delim; 107 108 string fail_msg_file; 109 110 /// The line contains a [======] block. 111 bool hasDelim; 112 /// The line contains a [ RUN ] block. 113 bool hasRunBlock; 114 /// the line contains a [ FAILED ] block. 115 bool hasFailedBlock; 116 /// the line contains a [ OK ] block. 117 bool hasOkBlock; 118 } 119 120 version (unittest) { 121 import std.algorithm : each, sort; 122 import std.array : array; 123 import std.file : getcwd; 124 import dextool.type : FileName; 125 import unit_threaded : shouldEqual, shouldBeIn; 126 } 127 128 @("shall report the failed test case") 129 unittest { 130 auto app = new GatherTestCase; 131 auto reldir = AbsolutePath(FileName(getcwd)); 132 133 auto parser = GtestParser(reldir); 134 testData1.each!(a => parser.process(a, app)); 135 136 shouldEqual(app.failed.byKey.array, [TestCase("MessageTest.DefaultConstructor")]); 137 } 138 139 @("shall report the found test cases") 140 unittest { 141 auto app = new GatherTestCase; 142 auto reldir = AbsolutePath(FileName(getcwd)); 143 144 auto parser = GtestParser(reldir); 145 testData3.each!(a => parser.process(a, app)); 146 147 shouldEqual(app.foundAsArray.sort, [TestCase("Comp.A", ""), 148 TestCase("Comp.B", ""), TestCase("Comp.C", ""), TestCase("Comp.D", 149 ""), TestCase("Comp.E/a", ""), TestCase("Comp.E/b", ""),]); 150 } 151 152 @("shall report the failed test cases") 153 unittest { 154 auto app = new GatherTestCase; 155 auto reldir = AbsolutePath(FileName(getcwd)); 156 157 auto parser = GtestParser(reldir); 158 testData4.each!(a => parser.process(a, app)); 159 160 shouldEqual(app.failedAsArray.sort, [TestCase("Foo.A", ""), 161 TestCase("Foo.B", ""), TestCase("Foo.C", ""), TestCase("Foo.D", 162 ""), TestCase("Foo.E", ""),]); 163 } 164 165 @("shall report the failed test cases") 166 unittest { 167 auto app = new GatherTestCase; 168 auto reldir = AbsolutePath(FileName(getcwd)); 169 170 auto parser = GtestParser(reldir); 171 testData5.each!(a => parser.process(a, app)); 172 173 shouldEqual(app.failedAsArray.sort, [TestCase("FooTest.ShouldFail")]); 174 } 175 176 @("shall report the failed test cases even though there are junk in the output") 177 unittest { 178 auto app = new GatherTestCase; 179 auto reldir = AbsolutePath(FileName(getcwd)); 180 181 auto parser = GtestParser(reldir); 182 testData2.each!(a => parser.process(a, app)); 183 184 // dfmt off 185 auto expected = [ 186 TestCase(`AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber`), 187 TestCase(`ExpectFailureTest.ExpectFatalFailureOnAllThreads`), 188 TestCase(`ExpectFailureTest.ExpectFatalFailure`), 189 TestCase(`ExpectFailureTest.ExpectNonFatalFailureOnAllThreads`), 190 TestCase(`ExpectFailureTest.ExpectNonFatalFailure`), 191 TestCase(`ExpectFatalFailureTest.FailsWhenStatementReturns`), 192 TestCase(`ExpectFatalFailureTest.FailsWhenStatementThrows`), 193 TestCase(`ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures`), 194 TestCase(`ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure`), 195 TestCase(`ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure`), 196 TestCase(`ExpectNonfatalFailureTest.FailsWhenStatementReturns`), 197 TestCase(`ExpectNonfatalFailureTest.FailsWhenStatementThrows`), 198 TestCase(`ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures`), 199 TestCase(`ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure`), 200 TestCase(`ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure`), 201 TestCase(`MixedUpTestCaseTest.ThisShouldFailToo`), 202 TestCase(`MixedUpTestCaseTest.ThisShouldFail`), 203 TestCase(`MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail`), 204 TestCase(`TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail`), 205 TestCase(`TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail`), 206 TestCase(`ExpectFailureWithThreadsTest.ExpectFatalFailure`), 207 TestCase(`ExpectFailureWithThreadsTest.ExpectNonFatalFailure`), 208 TestCase(`FatalFailureInFixtureConstructorTest.FailureInConstructor`), 209 TestCase(`FatalFailureInSetUpTest.FailureInSetUp`), 210 TestCase(`FatalFailureTest.FatalFailureInNestedSubroutine`), 211 TestCase(`FatalFailureTest.FatalFailureInSubroutine`), 212 TestCase(`FatalFailureTest.NonfatalFailureInSubroutine`), 213 TestCase(`LoggingTest.InterleavingLoggingAndAssertions`), 214 TestCase(`NonFatalFailureInFixtureConstructorTest.FailureInConstructor`), 215 TestCase(`NonFatalFailureInSetUpTest.FailureInSetUp`), 216 TestCase(`NonfatalFailureTest.DiffForLongStrings`), 217 TestCase(`NonfatalFailureTest.EscapesStringOperands`), 218 TestCase(`PrintingFailingParams/FailingParamTest.Fails/0`), 219 TestCase(`PrintingStrings/ParamTest.Failure/a`), 220 TestCase(`SCOPED_TRACETest.CanBeNested`), 221 TestCase(`SCOPED_TRACETest.CanBeRepeated`), 222 TestCase(`SCOPED_TRACETest.ObeysScopes`), 223 TestCase(`SCOPED_TRACETest.WorksConcurrently`), 224 TestCase(`SCOPED_TRACETest.WorksInLoop`), 225 TestCase(`SCOPED_TRACETest.WorksInSubroutine`), 226 TestCase(`ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread`), 227 TestCase(`TypedTest/0.Failure`), 228 TestCase(`Unsigned/TypedTestP/0.Failure`), 229 TestCase(`Unsigned/TypedTestP/1.Failure`), 230 ]; 231 // dfmt on 232 233 foreach (v; expected) { 234 v.shouldBeIn(app.failed); 235 } 236 237 shouldEqual(app.failed.length, expected.length); 238 } 239 240 version (unittest) { 241 // dfmt off 242 string[] testData1() { 243 // dfmt off 244 return [ 245 "Running main() from gtest_main.cc", 246 "[==========] Running 17 tests from 1 test case.", 247 "[----------] Global test environment set-up.", 248 "[----------] 17 tests from MessageTest", 249 "[ RUN ] MessageTest.DefaultConstructor", 250 "./googletest/test/gtest-message_test.cc:48: Failure", 251 "Expected equality of these values:", 252 " true", 253 " false", 254 "[ FAILED ] MessageTest.DefaultConstructor (0 ms)", 255 "[ RUN ] MessageTest.CopyConstructor", 256 "[ OK ] MessageTest.CopyConstructor (0 ms)", 257 "[ RUN ] MessageTest.ConstructsFromCString", 258 "[ OK ] MessageTest.ConstructsFromCString (0 ms)", 259 "[----------] 3 tests from MessageTest (0 ms total)", 260 "", 261 "[----------] Global test environment tear-down", 262 "[==========] 3 tests from 1 test case ran. (0 ms total)", 263 "[ PASSED ] 2 tests.", 264 "[ FAILED ] 1 test, listed below:", 265 "[ FAILED ] MessageTest.DefaultConstructor", 266 "", 267 " 1 FAILED TEST", 268 ]; 269 // dfmt on 270 } 271 272 // Example data from the "wild" that should still parse 273 string[] testData2() { 274 // dfmt off 275 return [ 276 `-[==========] Running 66 tests from 29 test cases.`, 277 `-[----------] Global test environment set-up.`, 278 `+ull)m[==========] Running 66 tests from 29 test cases.`, 279 `+ull)m[----------] Global test environment set-up.`, 280 ` FooEnvironment::SetUp() called.`, 281 ` BarEnvironment::SetUp() called.`, 282 `-[----------] 1 test from ADeathTest`, 283 `-[ RUN ] ADeathTest.ShouldRunFirst`, 284 `-[ OK ] ADeathTest.ShouldRunFirst`, 285 `-[----------] 1 test from ATypedDeathTest/0, where TypeParam = int`, 286 `-[ RUN ] ATypedDeathTest/0.ShouldRunFirst`, 287 `-[ OK ] ATypedDeathTest/0.ShouldRunFirst`, 288 `-[----------] 1 test from ATypedDeathTest/1, where TypeParam = double`, 289 `-[ RUN ] ATypedDeathTest/1.ShouldRunFirst`, 290 `-[ OK ] ATypedDeathTest/1.ShouldRunFirst`, 291 `-[----------] 1 test from My/ATypeParamDeathTest/0, where TypeParam = int`, 292 `-[ RUN ] My/ATypeParamDeathTest/0.ShouldRunFirst`, 293 `-[ OK ] My/ATypeParamDeathTest/0.ShouldRunFirst`, 294 `-[----------] 1 test from My/ATypeParamDeathTest/1, where TypeParam = double`, 295 `-[ RUN ] My/ATypeParamDeathTest/1.ShouldRunFirst`, 296 `-[ OK ] My/ATypeParamDeathTest/1.ShouldRunFirst`, 297 `-[----------] 2 tests from PassingTest`, 298 `-[ RUN ] PassingTest.PassingTest1`, 299 `-[ OK ] PassingTest.PassingTest1`, 300 `-[ RUN ] PassingTest.PassingTest2`, 301 `-[ OK ] PassingTest.PassingTest2`, 302 `-[----------] 2 tests from NonfatalFailureTest`, 303 `-[ RUN ] NonfatalFailureTest.EscapesStringOperands`, 304 `+ull)m[----------] 1 test from ADeathTest`, 305 `+ull)m[ RUN ] ADeathTest.ShouldRunFirst`, 306 `+ull)m[ OK ] ADeathTest.ShouldRunFirst`, 307 `+ull)m[----------] 1 test from ATypedDeathTest/0, where TypeParam = int`, 308 `+ull)m[ RUN ] ATypedDeathTest/0.ShouldRunFirst`, 309 `+ull)m[ OK ] ATypedDeathTest/0.ShouldRunFirst`, 310 `+ull)m[----------] 1 test from ATypedDeathTest/1, where TypeParam = double`, 311 `+ull)m[ RUN ] ATypedDeathTest/1.ShouldRunFirst`, 312 `+ull)m[ OK ] ATypedDeathTest/1.ShouldRunFirst`, 313 `+ull)m[----------] 1 test from My/ATypeParamDeathTest/0, where TypeParam = int`, 314 `+ull)m[ RUN ] My/ATypeParamDeathTest/0.ShouldRunFirst`, 315 `+ull)m[ OK ] My/ATypeParamDeathTest/0.ShouldRunFirst`, 316 `+ull)m[----------] 1 test from My/ATypeParamDeathTest/1, where TypeParam = double`, 317 `+ull)m[ RUN ] My/ATypeParamDeathTest/1.ShouldRunFirst`, 318 `+ull)m[ OK ] My/ATypeParamDeathTest/1.ShouldRunFirst`, 319 `+ull)m[----------] 2 tests from PassingTest`, 320 `+ull)m[ RUN ] PassingTest.PassingTest1`, 321 `+ull)m[ OK ] PassingTest.PassingTest1`, 322 `+ull)m[ RUN ] PassingTest.PassingTest2`, 323 `+ull)m[ OK ] PassingTest.PassingTest2`, 324 `+ull)m[----------] 2 tests from NonfatalFailureTest`, 325 `+ull)m[ RUN ] NonfatalFailureTest.EscapesStringOperands`, 326 ` gtest_output_test_.cc:#: Failure`, 327 ` Expected equality of these values:`, 328 ` kGoldenString`, 329 `@@ -47,7 +47,7 @@`, 330 ``, 331 ` actual`, 332 ` Which is: "actual \"string\""`, 333 ` [ FAILED ] NonfatalFailureTest.EscapesStringOperands`, 334 `-[ RUN ] NonfatalFailureTest.DiffForLongStrings`, 335 `+ull)m[ RUN ] NonfatalFailureTest.DiffForLongStrings`, 336 ` gtest_output_test_.cc:#: Failure`, 337 ` Expected equality of these values:`, 338 ` golden_str`, 339 `@@ -59,8 +59,8 @@`, 340 ``, 341 ` Line 2`, 342 ``, 343 ` [ FAILED ] NonfatalFailureTest.DiffForLongStrings`, 344 `-[----------] 3 tests from FatalFailureTest`, 345 `-[ RUN ] FatalFailureTest.FatalFailureInSubroutine`, 346 `+ull)m[----------] 3 tests from FatalFailureTest`, 347 `+ull)m[ RUN ] FatalFailureTest.FatalFailureInSubroutine`, 348 ` (expecting a failure that x should be 1)`, 349 ` gtest_output_test_.cc:#: Failure`, 350 ` Expected equality of these values:`, 351 `@@ -68,7 +68,7 @@`, 352 ``, 353 ` x`, 354 ` Which is: 2`, 355 ` [ FAILED ] FatalFailureTest.FatalFailureInSubroutine`, 356 `-[ RUN ] FatalFailureTest.FatalFailureInNestedSubroutine`, 357 `+ull)m[ RUN ] FatalFailureTest.FatalFailureInNestedSubroutine`, 358 ` (expecting a failure that x should be 1)`, 359 ` gtest_output_test_.cc:#: Failure`, 360 ` Expected equality of these values:`, 361 `@@ -76,15 +76,15 @@`, 362 ``, 363 ` x`, 364 ` Which is: 2`, 365 ` [ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine`, 366 `-[ RUN ] FatalFailureTest.NonfatalFailureInSubroutine`, 367 `+ull)m[ RUN ] FatalFailureTest.NonfatalFailureInSubroutine`, 368 ` (expecting a failure on false)`, 369 ` gtest_output_test_.cc:#: Failure`, 370 ` Value of: false`, 371 ` Actual: false`, 372 ` Expected: true`, 373 ` [ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine`, 374 `-[----------] 1 test from LoggingTest`, 375 `-[ RUN ] LoggingTest.InterleavingLoggingAndAssertions`, 376 `+ull)m[----------] 1 test from LoggingTest`, 377 `+ull)m[ RUN ] LoggingTest.InterleavingLoggingAndAssertions`, 378 ` (expecting 2 failures on (3) >= (a[i]))`, 379 ` i == 0`, 380 ` i == 1`, 381 `@@ -95,8 +95,8 @@`, 382 ``, 383 ` gtest_output_test_.cc:#: Failure`, 384 ` Expected: (3) >= (a[i]), actual: 3 vs 6`, 385 ` [ FAILED ] LoggingTest.InterleavingLoggingAndAssertions`, 386 `-[----------] 6 tests from SCOPED_TRACETest`, 387 `-[ RUN ] SCOPED_TRACETest.ObeysScopes`, 388 `+ull)m[----------] 6 tests from SCOPED_TRACETest`, 389 `+ull)m[ RUN ] SCOPED_TRACETest.ObeysScopes`, 390 ` (expected to fail)`, 391 ` gtest_output_test_.cc:#: Failure`, 392 ` Failed`, 393 `@@ -110,7 +110,7 @@`, 394 ``, 395 ` Failed`, 396 ` This failure is expected, and shouldn't have a trace.`, 397 ` [ FAILED ] SCOPED_TRACETest.ObeysScopes`, 398 `-[ RUN ] SCOPED_TRACETest.WorksInLoop`, 399 `+ull)m[ RUN ] SCOPED_TRACETest.WorksInLoop`, 400 ` (expected to fail)`, 401 ` gtest_output_test_.cc:#: Failure`, 402 ` Expected equality of these values:`, 403 `@@ -127,7 +127,7 @@`, 404 ``, 405 ` Google Test trace:`, 406 ` gtest_output_test_.cc:#: i = 2`, 407 ` [ FAILED ] SCOPED_TRACETest.WorksInLoop`, 408 `-[ RUN ] SCOPED_TRACETest.WorksInSubroutine`, 409 `+ull)m[ RUN ] SCOPED_TRACETest.WorksInSubroutine`, 410 ` (expected to fail)`, 411 ` gtest_output_test_.cc:#: Failure`, 412 ` Expected equality of these values:`, 413 `@@ -144,7 +144,7 @@`, 414 ``, 415 ` Google Test trace:`, 416 ` gtest_output_test_.cc:#: n = 2`, 417 ` [ FAILED ] SCOPED_TRACETest.WorksInSubroutine`, 418 `-[ RUN ] SCOPED_TRACETest.CanBeNested`, 419 `+ull)m[ RUN ] SCOPED_TRACETest.CanBeNested`, 420 ` (expected to fail)`, 421 ` gtest_output_test_.cc:#: Failure`, 422 ` Expected equality of these values:`, 423 `@@ -155,7 +155,7 @@`, 424 ``, 425 ` gtest_output_test_.cc:#: n = 2`, 426 ` gtest_output_test_.cc:#:`, 427 ` [ FAILED ] SCOPED_TRACETest.CanBeNested`, 428 `-[ RUN ] SCOPED_TRACETest.CanBeRepeated`, 429 `+ull)m[ RUN ] SCOPED_TRACETest.CanBeRepeated`, 430 ` (expected to fail)`, 431 ` gtest_output_test_.cc:#: Failure`, 432 ` Failed`, 433 `@@ -183,7 +183,7 @@`, 434 ``, 435 ` gtest_output_test_.cc:#: B`, 436 ` gtest_output_test_.cc:#: A`, 437 ` [ FAILED ] SCOPED_TRACETest.CanBeRepeated`, 438 `-[ RUN ] SCOPED_TRACETest.WorksConcurrently`, 439 `+ull)m[ RUN ] SCOPED_TRACETest.WorksConcurrently`, 440 ` (expecting 6 failures)`, 441 ` gtest_output_test_.cc:#: Failure`, 442 ` Failed`, 443 `@@ -212,8 +212,8 @@`, 444 ``, 445 ` Failed`, 446 ` Expected failure #6 (in thread A, no trace alive).`, 447 ` [ FAILED ] SCOPED_TRACETest.WorksConcurrently`, 448 `-[----------] 1 test from NonFatalFailureInFixtureConstructorTest`, 449 `-[ RUN ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor`, 450 `+ull)m[----------] 1 test from NonFatalFailureInFixtureConstructorTest`, 451 `+ull)m[ RUN ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor`, 452 ` (expecting 5 failures)`, 453 ` gtest_output_test_.cc:#: Failure`, 454 ` Failed`, 455 `@@ -231,8 +231,8 @@`, 456 ``, 457 ` Failed`, 458 ` Expected failure #5, in the test fixture d'tor.`, 459 ` [ FAILED ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor`, 460 `-[----------] 1 test from FatalFailureInFixtureConstructorTest`, 461 `-[ RUN ] FatalFailureInFixtureConstructorTest.FailureInConstructor`, 462 `+ull)m[----------] 1 test from FatalFailureInFixtureConstructorTest`, 463 `+ull)m[ RUN ] FatalFailureInFixtureConstructorTest.FailureInConstructor`, 464 ` (expecting 2 failures)`, 465 ` gtest_output_test_.cc:#: Failure`, 466 ` Failed`, 467 `@@ -241,8 +241,8 @@`, 468 ``, 469 ` Failed`, 470 ` Expected failure #2, in the test fixture d'tor.`, 471 ` [ FAILED ] FatalFailureInFixtureConstructorTest.FailureInConstructor`, 472 `-[----------] 1 test from NonFatalFailureInSetUpTest`, 473 `-[ RUN ] NonFatalFailureInSetUpTest.FailureInSetUp`, 474 `+ull)m[----------] 1 test from NonFatalFailureInSetUpTest`, 475 `+ull)m[ RUN ] NonFatalFailureInSetUpTest.FailureInSetUp`, 476 ` (expecting 4 failures)`, 477 ` gtest_output_test_.cc:#: Failure`, 478 ` Failed`, 479 `@@ -257,8 +257,8 @@`, 480 ``, 481 ` Failed`, 482 ` Expected failure #4, in the test fixture d'tor.`, 483 ` [ FAILED ] NonFatalFailureInSetUpTest.FailureInSetUp`, 484 `-[----------] 1 test from FatalFailureInSetUpTest`, 485 `-[ RUN ] FatalFailureInSetUpTest.FailureInSetUp`, 486 `+ull)m[----------] 1 test from FatalFailureInSetUpTest`, 487 `+ull)m[ RUN ] FatalFailureInSetUpTest.FailureInSetUp`, 488 ` (expecting 3 failures)`, 489 ` gtest_output_test_.cc:#: Failure`, 490 ` Failed`, 491 `@@ -270,18 +270,18 @@`, 492 ``, 493 ` Failed`, 494 ` Expected failure #3, in the test fixture d'tor.`, 495 ` [ FAILED ] FatalFailureInSetUpTest.FailureInSetUp`, 496 `-[----------] 1 test from AddFailureAtTest`, 497 `-[ RUN ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber`, 498 `+ull)m[----------] 1 test from AddFailureAtTest`, 499 `+ull)m[ RUN ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber`, 500 ` foo.cc:42: Failure`, 501 ` Failed`, 502 ` Expected failure in foo.cc`, 503 ` [ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber`, 504 `-[----------] 4 tests from MixedUpTestCaseTest`, 505 `-[ RUN ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo`, 506 `-[ OK ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo`, 507 `-[ RUN ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo`, 508 `-[ OK ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo`, 509 `-[ RUN ] MixedUpTestCaseTest.ThisShouldFail`, 510 `+ull)m[----------] 4 tests from MixedUpTestCaseTest`, 511 `+ull)m[ RUN ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo`, 512 `+ull)m[ OK ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo`, 513 `+ull)m[ RUN ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo`, 514 `+ull)m[ OK ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo`, 515 `+ull)m[ RUN ] MixedUpTestCaseTest.ThisShouldFail`, 516 ` gtest.cc:#: Failure`, 517 ` Failed`, 518 ` All tests in the same test case must use the same test fixture`, 519 `@@ -292,7 +292,7 @@`, 520 ``, 521 ` units and have the same name. You should probably rename one`, 522 ` of the classes to put the tests into different test cases.`, 523 ` [ FAILED ] MixedUpTestCaseTest.ThisShouldFail`, 524 `-[ RUN ] MixedUpTestCaseTest.ThisShouldFailToo`, 525 `+ull)m[ RUN ] MixedUpTestCaseTest.ThisShouldFailToo`, 526 ` gtest.cc:#: Failure`, 527 ` Failed`, 528 ` All tests in the same test case must use the same test fixture`, 529 `@@ -303,10 +303,10 @@`, 530 ``, 531 ` units and have the same name. You should probably rename one`, 532 ` of the classes to put the tests into different test cases.`, 533 ` [ FAILED ] MixedUpTestCaseTest.ThisShouldFailToo`, 534 `-[----------] 2 tests from MixedUpTestCaseWithSameTestNameTest`, 535 `-[ RUN ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail`, 536 `-[ OK ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail`, 537 `-[ RUN ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail`, 538 `+ull)m[----------] 2 tests from MixedUpTestCaseWithSameTestNameTest`, 539 `+ull)m[ RUN ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail`, 540 `+ull)m[ OK ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail`, 541 `+ull)m[ RUN ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail`, 542 ` gtest.cc:#: Failure`, 543 ` Failed`, 544 ` All tests in the same test case must use the same test fixture`, 545 `@@ -317,10 +317,10 @@`, 546 ``, 547 ` units and have the same name. You should probably rename one`, 548 ` of the classes to put the tests into different test cases.`, 549 ` [ FAILED ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail`, 550 `-[----------] 2 tests from TEST_F_before_TEST_in_same_test_case`, 551 `-[ RUN ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F`, 552 `-[ OK ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F`, 553 `-[ RUN ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail`, 554 `+ull)m[----------] 2 tests from TEST_F_before_TEST_in_same_test_case`, 555 `+ull)m[ RUN ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F`, 556 `+ull)m[ OK ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F`, 557 `+ull)m[ RUN ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail`, 558 ` gtest.cc:#: Failure`, 559 ` Failed`, 560 ` All tests in the same test case must use the same test fixture`, 561 `@@ -331,10 +331,10 @@`, 562 ``, 563 ` want to change the TEST to TEST_F or move it to another test`, 564 ` case.`, 565 ` [ FAILED ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail`, 566 `-[----------] 2 tests from TEST_before_TEST_F_in_same_test_case`, 567 `-[ RUN ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST`, 568 `-[ OK ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST`, 569 `-[ RUN ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail`, 570 `+ull)m[----------] 2 tests from TEST_before_TEST_F_in_same_test_case`, 571 `+ull)m[ RUN ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST`, 572 `+ull)m[ OK ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST`, 573 `+ull)m[ RUN ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail`, 574 ` gtest.cc:#: Failure`, 575 ` Failed`, 576 ` All tests in the same test case must use the same test fixture`, 577 `@@ -345,20 +345,20 @@`, 578 ``, 579 ` want to change the TEST to TEST_F or move it to another test`, 580 ` case.`, 581 ` [ FAILED ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail`, 582 `-[----------] 8 tests from ExpectNonfatalFailureTest`, 583 `-[ RUN ] ExpectNonfatalFailureTest.CanReferenceGlobalVariables`, 584 `-[ OK ] ExpectNonfatalFailureTest.CanReferenceGlobalVariables`, 585 `-[ RUN ] ExpectNonfatalFailureTest.CanReferenceLocalVariables`, 586 `-[ OK ] ExpectNonfatalFailureTest.CanReferenceLocalVariables`, 587 `-[ RUN ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure`, 588 `-[ OK ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure`, 589 `-[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure`, 590 `+ull)m[----------] 8 tests from ExpectNonfatalFailureTest`, 591 `+ull)m[ RUN ] ExpectNonfatalFailureTest.CanReferenceGlobalVariables`, 592 `+ull)m[ OK ] ExpectNonfatalFailureTest.CanReferenceGlobalVariables`, 593 `+ull)m[ RUN ] ExpectNonfatalFailureTest.CanReferenceLocalVariables`, 594 `+ull)m[ OK ] ExpectNonfatalFailureTest.CanReferenceLocalVariables`, 595 `+ull)m[ RUN ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure`, 596 `+ull)m[ OK ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure`, 597 `+ull)m[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure`, 598 ` (expecting a failure)`, 599 ` gtest.cc:#: Failure`, 600 ` Expected: 1 non-fatal failure`, 601 ` Actual: 0 failures`, 602 ` [ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure`, 603 `-[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures`, 604 `+ull)m[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures`, 605 ` (expecting a failure)`, 606 ` gtest.cc:#: Failure`, 607 ` Expected: 1 non-fatal failure`, 608 `@@ -372,7 +372,7 @@`, 609 ``, 610 ` Expected non-fatal failure 2.`, 611 ``, 612 ` [ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures`, 613 `-[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure`, 614 `+ull)m[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure`, 615 ` (expecting a failure)`, 616 ` gtest.cc:#: Failure`, 617 ` Expected: 1 non-fatal failure`, 618 `@@ -382,32 +382,32 @@`, 619 ``, 620 ` Expected fatal failure.`, 621 ``, 622 ` [ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure`, 623 `-[ RUN ] ExpectNonfatalFailureTest.FailsWhenStatementReturns`, 624 `+ull)m[ RUN ] ExpectNonfatalFailureTest.FailsWhenStatementReturns`, 625 ` (expecting a failure)`, 626 ` gtest.cc:#: Failure`, 627 ` Expected: 1 non-fatal failure`, 628 ` Actual: 0 failures`, 629 ` [ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementReturns`, 630 `-[ RUN ] ExpectNonfatalFailureTest.FailsWhenStatementThrows`, 631 `+ull)m[ RUN ] ExpectNonfatalFailureTest.FailsWhenStatementThrows`, 632 ` (expecting a failure)`, 633 ` gtest.cc:#: Failure`, 634 ` Expected: 1 non-fatal failure`, 635 ` Actual: 0 failures`, 636 ` [ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementThrows`, 637 `-[----------] 8 tests from ExpectFatalFailureTest`, 638 `-[ RUN ] ExpectFatalFailureTest.CanReferenceGlobalVariables`, 639 `-[ OK ] ExpectFatalFailureTest.CanReferenceGlobalVariables`, 640 `-[ RUN ] ExpectFatalFailureTest.CanReferenceLocalStaticVariables`, 641 `-[ OK ] ExpectFatalFailureTest.CanReferenceLocalStaticVariables`, 642 `-[ RUN ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure`, 643 `-[ OK ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure`, 644 `-[ RUN ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure`, 645 `+ull)m[----------] 8 tests from ExpectFatalFailureTest`, 646 `+ull)m[ RUN ] ExpectFatalFailureTest.CanReferenceGlobalVariables`, 647 `+ull)m[ OK ] ExpectFatalFailureTest.CanReferenceGlobalVariables`, 648 `+ull)m[ RUN ] ExpectFatalFailureTest.CanReferenceLocalStaticVariables`, 649 `+ull)m[ OK ] ExpectFatalFailureTest.CanReferenceLocalStaticVariables`, 650 `+ull)m[ RUN ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure`, 651 `+ull)m[ OK ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure`, 652 `+ull)m[ RUN ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure`, 653 ` (expecting a failure)`, 654 ` gtest.cc:#: Failure`, 655 ` Expected: 1 fatal failure`, 656 ` Actual: 0 failures`, 657 ` [ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure`, 658 `-[ RUN ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures`, 659 `+ull)m[ RUN ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures`, 660 ` (expecting a failure)`, 661 ` gtest.cc:#: Failure`, 662 ` Expected: 1 fatal failure`, 663 `@@ -421,7 +421,7 @@`, 664 ``, 665 ` Expected fatal failure.`, 666 ``, 667 ` [ FAILED ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures`, 668 `-[ RUN ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure`, 669 `+ull)m[ RUN ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure`, 670 ` (expecting a failure)`, 671 ` gtest.cc:#: Failure`, 672 ` Expected: 1 fatal failure`, 673 `@@ -431,22 +431,22 @@`, 674 ``, 675 ` Expected non-fatal failure.`, 676 ``, 677 ` [ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure`, 678 `-[ RUN ] ExpectFatalFailureTest.FailsWhenStatementReturns`, 679 `+ull)m[ RUN ] ExpectFatalFailureTest.FailsWhenStatementReturns`, 680 ` (expecting a failure)`, 681 ` gtest.cc:#: Failure`, 682 ` Expected: 1 fatal failure`, 683 ` Actual: 0 failures`, 684 ` [ FAILED ] ExpectFatalFailureTest.FailsWhenStatementReturns`, 685 `-[ RUN ] ExpectFatalFailureTest.FailsWhenStatementThrows`, 686 `+ull)m[ RUN ] ExpectFatalFailureTest.FailsWhenStatementThrows`, 687 ` (expecting a failure)`, 688 ` gtest.cc:#: Failure`, 689 ` Expected: 1 fatal failure`, 690 ` Actual: 0 failures`, 691 ` [ FAILED ] ExpectFatalFailureTest.FailsWhenStatementThrows`, 692 `-[----------] 2 tests from TypedTest/0, where TypeParam = int`, 693 `-[ RUN ] TypedTest/0.Success`, 694 `-[ OK ] TypedTest/0.Success`, 695 `-[ RUN ] TypedTest/0.Failure`, 696 `+ull)m[----------] 2 tests from TypedTest/0, where TypeParam = int`, 697 `+ull)m[ RUN ] TypedTest/0.Success`, 698 `+ull)m[ OK ] TypedTest/0.Success`, 699 `+ull)m[ RUN ] TypedTest/0.Failure`, 700 ` gtest_output_test_.cc:#: Failure`, 701 ` Expected equality of these values:`, 702 ` 1`, 703 `@@ -454,10 +454,10 @@`, 704 ``, 705 ` Which is: 0`, 706 ` Expected failure`, 707 ` [ FAILED ] TypedTest/0.Failure, where TypeParam = int`, 708 `-[----------] 2 tests from Unsigned/TypedTestP/0, where TypeParam = unsigned char`, 709 `-[ RUN ] Unsigned/TypedTestP/0.Success`, 710 `-[ OK ] Unsigned/TypedTestP/0.Success`, 711 `-[ RUN ] Unsigned/TypedTestP/0.Failure`, 712 `+ull)m[----------] 2 tests from Unsigned/TypedTestP/0, where TypeParam = unsigned char`, 713 `+ull)m[ RUN ] Unsigned/TypedTestP/0.Success`, 714 `+ull)m[ OK ] Unsigned/TypedTestP/0.Success`, 715 `+ull)m[ RUN ] Unsigned/TypedTestP/0.Failure`, 716 ` gtest_output_test_.cc:#: Failure`, 717 ` Expected equality of these values:`, 718 ` 1U`, 719 `@@ -466,10 +466,10 @@`, 720 ``, 721 ` Which is: '\0'`, 722 ` Expected failure`, 723 ` [ FAILED ] Unsigned/TypedTestP/0.Failure, where TypeParam = unsigned char`, 724 `-[----------] 2 tests from Unsigned/TypedTestP/1, where TypeParam = unsigned`, 725 `-[ RUN ] Unsigned/TypedTestP/1.Success`, 726 `-[ OK ] Unsigned/TypedTestP/1.Success`, 727 `-[ RUN ] Unsigned/TypedTestP/1.Failure`, 728 `+ull)m[----------] 2 tests from Unsigned/TypedTestP/1, where TypeParam = unsigned`, 729 `+ull)m[ RUN ] Unsigned/TypedTestP/1.Success`, 730 `+ull)m[ OK ] Unsigned/TypedTestP/1.Success`, 731 `+ull)m[ RUN ] Unsigned/TypedTestP/1.Failure`, 732 ` gtest_output_test_.cc:#: Failure`, 733 ` Expected equality of these values:`, 734 ` 1U`, 735 `@@ -478,8 +478,8 @@`, 736 ``, 737 ` Which is: 0`, 738 ` Expected failure`, 739 ` [ FAILED ] Unsigned/TypedTestP/1.Failure, where TypeParam = unsigned`, 740 `-[----------] 4 tests from ExpectFailureTest`, 741 `-[ RUN ] ExpectFailureTest.ExpectFatalFailure`, 742 `+ull)m[----------] 4 tests from ExpectFailureTest`, 743 `+ull)m[ RUN ] ExpectFailureTest.ExpectFatalFailure`, 744 ` (expecting 1 failure)`, 745 ` gtest.cc:#: Failure`, 746 ` Expected: 1 fatal failure`, 747 `@@ -504,7 +504,7 @@`, 748 ``, 749 ` Expected fatal failure.`, 750 ``, 751 ` [ FAILED ] ExpectFailureTest.ExpectFatalFailure`, 752 `-[ RUN ] ExpectFailureTest.ExpectNonFatalFailure`, 753 `+ull)m[ RUN ] ExpectFailureTest.ExpectNonFatalFailure`, 754 ` (expecting 1 failure)`, 755 ` gtest.cc:#: Failure`, 756 ` Expected: 1 non-fatal failure`, 757 `@@ -529,7 +529,7 @@`, 758 ``, 759 ` Expected non-fatal failure.`, 760 ``, 761 ` [ FAILED ] ExpectFailureTest.ExpectNonFatalFailure`, 762 `-[ RUN ] ExpectFailureTest.ExpectFatalFailureOnAllThreads`, 763 `+ull)m[ RUN ] ExpectFailureTest.ExpectFatalFailureOnAllThreads`, 764 ` (expecting 1 failure)`, 765 ` gtest.cc:#: Failure`, 766 ` Expected: 1 fatal failure`, 767 `@@ -554,7 +554,7 @@`, 768 ``, 769 ` Expected fatal failure.`, 770 ``, 771 ` [ FAILED ] ExpectFailureTest.ExpectFatalFailureOnAllThreads`, 772 `-[ RUN ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads`, 773 `+ull)m[ RUN ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads`, 774 ` (expecting 1 failure)`, 775 ` gtest.cc:#: Failure`, 776 ` Expected: 1 non-fatal failure`, 777 `@@ -579,8 +579,8 @@`, 778 ``, 779 ` Expected non-fatal failure.`, 780 ``, 781 ` [ FAILED ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads`, 782 `-[----------] 2 tests from ExpectFailureWithThreadsTest`, 783 `-[ RUN ] ExpectFailureWithThreadsTest.ExpectFatalFailure`, 784 `+ull)m[----------] 2 tests from ExpectFailureWithThreadsTest`, 785 `+ull)m[ RUN ] ExpectFailureWithThreadsTest.ExpectFatalFailure`, 786 ` (expecting 2 failures)`, 787 ` gtest_output_test_.cc:#: Failure`, 788 ` Failed`, 789 `@@ -589,7 +589,7 @@`, 790 ``, 791 ` Expected: 1 fatal failure`, 792 ` Actual: 0 failures`, 793 ` [ FAILED ] ExpectFailureWithThreadsTest.ExpectFatalFailure`, 794 `-[ RUN ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure`, 795 `+ull)m[ RUN ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure`, 796 ` (expecting 2 failures)`, 797 ` gtest_output_test_.cc:#: Failure`, 798 ` Failed`, 799 `@@ -598,8 +598,8 @@`, 800 ``, 801 ` Expected: 1 non-fatal failure`, 802 ` Actual: 0 failures`, 803 ` [ FAILED ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure`, 804 `-[----------] 1 test from ScopedFakeTestPartResultReporterTest`, 805 `-[ RUN ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread`, 806 `+ull)m[----------] 1 test from ScopedFakeTestPartResultReporterTest`, 807 `+ull)m[ RUN ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread`, 808 ` (expecting 2 failures)`, 809 ` gtest_output_test_.cc:#: Failure`, 810 ` Failed`, 811 `@@ -608,18 +608,18 @@`, 812 ``, 813 ` Failed`, 814 ` Expected non-fatal failure.`, 815 ` [ FAILED ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread`, 816 `-[----------] 1 test from PrintingFailingParams/FailingParamTest`, 817 `-[ RUN ] PrintingFailingParams/FailingParamTest.Fails/0`, 818 `+ull)m[----------] 1 test from PrintingFailingParams/FailingParamTest`, 819 `+ull)m[ RUN ] PrintingFailingParams/FailingParamTest.Fails/0`, 820 ` gtest_output_test_.cc:#: Failure`, 821 ` Expected equality of these values:`, 822 ` 1`, 823 ` GetParam()`, 824 ` Which is: 2`, 825 ` [ FAILED ] PrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2`, 826 `-[----------] 2 tests from PrintingStrings/ParamTest`, 827 `-[ RUN ] PrintingStrings/ParamTest.Success/a`, 828 `-[ OK ] PrintingStrings/ParamTest.Success/a`, 829 `-[ RUN ] PrintingStrings/ParamTest.Failure/a`, 830 `+ull)m[----------] 2 tests from PrintingStrings/ParamTest`, 831 `+ull)m[ RUN ] PrintingStrings/ParamTest.Success/a`, 832 `+ull)m[ OK ] PrintingStrings/ParamTest.Success/a`, 833 `+ull)m[ RUN ] PrintingStrings/ParamTest.Failure/a`, 834 ` gtest_output_test_.cc:#: Failure`, 835 ` Expected equality of these values:`, 836 ` "b"`, 837 `@@ -627,7 +627,7 @@`, 838 ``, 839 ` Which is: "a"`, 840 ` Expected failure`, 841 ` [ FAILED ] PrintingStrings/ParamTest.Failure/a, where GetParam() = "a"`, 842 `-[----------] Global test environment tear-down`, 843 `+ull)m[----------] Global test environment tear-down`, 844 ` BarEnvironment::TearDown() called.`, 845 ` gtest_output_test_.cc:#: Failure`, 846 ` Failed`, 847 `@@ -636,8 +636,8 @@`, 848 ``, 849 ` gtest_output_test_.cc:#: Failure`, 850 ` Failed`, 851 ` Expected fatal failure.`, 852 `+ull)m[==========] 66 tests from 29 test cases ran.`, 853 `+ull)m[ PASSED ] 22 tests.`, 854 ` [ FAILED ] 44 tests, listed below:`, 855 ` [ FAILED ] NonfatalFailureTest.EscapesStringOperands`, 856 ` [ FAILED ] NonfatalFailureTest.DiffForLongStrings`, 857 ]; 858 // dfmt on 859 } 860 861 string[] testData3() { 862 // this contains a little fuzzy data that the parser should be able to 863 // handle. this is what typically can happen when running tets from via 864 // a makefile. 865 // dfmt off 866 return [ 867 `Running main() from gtest_main.cc`, 868 `[==========] Running 4 tests from 1 test case.`, 869 `[----------] Global test environment set-up.`, 870 `[----------] 4 tests from MessageTest`, 871 `[ RUN ] Comp.A`, 872 `[ OK ] Comp.A (0 ms)`, 873 `[ RUN ] Comp.B`, 874 `[ OK ] Comp.B (0 ms) [ RUN ] Comp.C`, 875 `[ OK ] Comp.C (0 ms)`, 876 `[ RUN ] Comp.D`, 877 `[ OK ] Comp.D (0 ms)`, 878 `[ RUN ] Comp.E/a[ OK ] Comp.E/a (0 ms)[ RUN ] Comp.E/b[ OK ] Comp.E/b (0 ms)`, 879 `[----------] 4 tests from Comp (0 ms total)`, 880 ``, 881 `[----------] Global test environment tear-down`, 882 `[==========] 4 tests from 1 test case ran. (0 ms total)`, 883 `[ PASSED ] 4 tests.`, 884 ]; 885 // dfmt on 886 } 887 888 string[] testData4() { 889 // dfmt off 890 return [ 891 "Running main() from gtest_main.cc", 892 "[==========] Running 17 tests from 1 test case.", 893 "[----------] Global test environment set-up.", 894 "[----------] 17 tests from MessageTest", 895 "[ RUN ] Foo.A", 896 "[ FAILED ] Foo.A (0 ms)[ RUN ] Foo.B[ FAILED ] Foo.B (0 ms)[ RUN ] Foo.C[ FAILED ] Foo.C (0 ms)", 897 "[ RUN ] Foo.D[ FAILED ] Foo.D (0 ms)[ RUN ] Foo.E", 898 "[ FAILED ] Foo.E (0 ms)", 899 "[----------] 3 tests from MessageTest (0 ms total)", 900 ]; 901 // dfmt on 902 } 903 904 string[] testData5() { 905 // dfmt off 906 return [ 907 "35: [==========] Running 13 tests from 3 test cases.", 908 "35: [----------] Global test environment set-up.", 909 "35: [----------] 1 test from BarDeathTest", 910 "35: [ RUN ] BarDeathTest.ThreadSafeAndFast", 911 "35: [ OK ] BarDeathTest.ThreadSafeAndFast (436 ms)", 912 "35: [----------] 1 test from BarDeathTest (436 ms total)", 913 "35: [----------] 10 tests from MyParamSequence/MyParamTest", 914 "35: [ RUN ] MyParamSequence/MyParamTest.ShouldPass/0", 915 "35: [ OK ] MyParamSequence/MyParamTest.ShouldPass/0 (0 ms)", 916 "35: [ RUN ] MyParamSequence/MyParamTest.ShouldPass/1", 917 "35: [ OK ] MyParamSequence/MyParamTest.ShouldPass/1 (0 ms)", 918 "35: [----------] 2 tests from MyParamSequence/MyParamTest (0 ms total)", 919 "35: ", 920 "35: [----------] 2 tests from FooTest", 921 "35: [ RUN ] FooTest.ShouldFail", 922 "35: /home/joker/src/cpp/googletest/googletest/test/gtest_repeat_test.cc:96: Failure", 923 "35: Expected equality of these values:", 924 "35: 0", 925 "35: 1", 926 "35: Expected failure.", 927 "35: [ FAILED ] FooTest.ShouldFail (0 ms)", 928 "35: [ RUN ] FooTest.ShouldPass", 929 "35: [ OK ] FooTest.ShouldPass (0 ms)", 930 "35: [----------] 2 tests from FooTest (0 ms total)", 931 "35: [----------] Global test environment tear-down", 932 "35: [==========] 13 tests from 3 test cases ran. (436 ms total)", 933 "35: [ PASSED ] 12 tests.", 934 "35: [ FAILED ] 1 test, listed below:", 935 "35: [ FAILED ] FooTest.ShouldFail", 936 ]; 937 // dfmt on 938 } 939 }