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