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