Skip to content

Commit bee333f

Browse files
authored
Merge pull request #262 from csoltenborn/#260_GTEST_SKIP
added preliminary support for new gtest macro GTEST_SKIP()
2 parents bf2bcaf + a725f05 commit bee333f

19 files changed

Lines changed: 580 additions & 70 deletions

GoogleTestAdapter/Core.Tests/TestResults/StandardOutputTestResultParserTests.cs

Lines changed: 119 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,62 @@ public class StandardOutputTestResultParserTests : TestsBase
102102
@"[ PASSED ] 2 test.",
103103
};
104104

105+
/// <summary>
106+
/// <see cref="https://github.com/csoltenborn/GoogleTestAdapter/issues/260"/>
107+
/// </summary>
108+
private string[] ConsoleOutputWithSkippedTest { get; } = @"[==========] Running 3 tests from 1 test suite.
109+
[----------] Global test environment set-up.
110+
[----------] 3 tests from Test
111+
[ RUN ] Test.Succeed
112+
[ OK ] Test.Succeed (0 ms)
113+
[ RUN ] Test.Skip
114+
[ SKIPPED ] Test.Skip (1 ms)
115+
[ RUN ] Test.Fail
116+
C:\...\test.cpp(14): error: Value of: false
117+
Actual: false
118+
Expected: true
119+
[ FAILED ] Test.Fail (0 ms)
120+
[----------] 3 tests from Test (3 ms total)
121+
122+
[----------] Global test environment tear-down
123+
[==========] 3 tests from 1 test suite ran. (6 ms total)
124+
[ PASSED ] 1 test.
125+
[ SKIPPED ] 1 test, listed below:
126+
[ SKIPPED ] Test.Skip
127+
[ FAILED ] 1 test, listed below:
128+
[ FAILED ] Test.Fail
129+
130+
1 FAILED TEST
131+
".Split('\n');
132+
133+
/// <summary>
134+
/// <see cref="https://github.com/csoltenborn/GoogleTestAdapter/issues/260"/>
135+
/// </summary>
136+
private string[] ConsoleOutputWithSkippedTestAsLastTest { get; } = @"[==========] Running 3 tests from 1 test suite.
137+
[----------] Global test environment set-up.
138+
[----------] 3 tests from Test
139+
[ RUN ] Test.Succeed
140+
[ OK ] Test.Succeed (0 ms)
141+
[ RUN ] Test.Fail
142+
C:\...\test.cpp(14): error: Value of: false
143+
Actual: false
144+
Expected: true
145+
[ FAILED ] Test.Fail (0 ms)
146+
[ RUN ] Test.Skip
147+
[ SKIPPED ] Test.Skip (1 ms)
148+
[----------] 3 tests from Test (3 ms total)
149+
150+
[----------] Global test environment tear-down
151+
[==========] 3 tests from 1 test suite ran. (6 ms total)
152+
[ PASSED ] 1 test.
153+
[ SKIPPED ] 1 test, listed below:
154+
[ SKIPPED ] Test.Skip
155+
[ FAILED ] 1 test, listed below:
156+
[ FAILED ] Test.Fail
157+
158+
1 FAILED TEST
159+
".Split('\n');
160+
105161

106162
private List<string> CrashesImmediately { get; set; }
107163
private List<string> CrashesAfterErrorMsg { get; set; }
@@ -139,7 +195,7 @@ public override void SetUp()
139195
[TestCategory(Unit)]
140196
public void GetTestResults_CompleteOutput_ParsedCorrectly()
141197
{
142-
List<TestResult> results = ComputeTestResults(Complete);
198+
var results = ComputeTestResults(Complete);
143199

144200
results.Should().HaveCount(3);
145201

@@ -165,7 +221,7 @@ public void GetTestResults_CompleteOutput_ParsedCorrectly()
165221
[TestCategory(Unit)]
166222
public void GetTestResults_OutputWithImmediateCrash_CorrectResultHasCrashText()
167223
{
168-
List<TestResult> results = ComputeTestResults(CrashesImmediately);
224+
var results = ComputeTestResults(CrashesImmediately);
169225

170226
results.Should().HaveCount(2);
171227

@@ -186,7 +242,7 @@ public void GetTestResults_OutputWithImmediateCrash_CorrectResultHasCrashText()
186242
[TestCategory(Unit)]
187243
public void GetTestResults_OutputWithCrashAfterErrorMessage_CorrectResultHasCrashText()
188244
{
189-
List<TestResult> results = ComputeTestResults(CrashesAfterErrorMsg);
245+
var results = ComputeTestResults(CrashesAfterErrorMsg);
190246

191247
results.Should().HaveCount(3);
192248

@@ -212,7 +268,7 @@ public void GetTestResults_OutputWithCrashAfterErrorMessage_CorrectResultHasCras
212268
[TestCategory(Unit)]
213269
public void GetTestResults_OutputWithInvalidDurationUnit_DefaultDurationIsUsedAndWarningIsProduced()
214270
{
215-
List<TestResult> results = ComputeTestResults(WrongDurationUnit);
271+
var results = ComputeTestResults(WrongDurationUnit);
216272

217273
results.Should().ContainSingle();
218274
results[0].TestCase.FullyQualifiedName.Should().Be("TestMath.AddFails");
@@ -231,7 +287,7 @@ public void GetTestResults_OutputWithThousandsSeparatorInDuration_ParsedCorrectl
231287
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
232288
try
233289
{
234-
List<TestResult> results = ComputeTestResults(ThousandsSeparatorInDuration);
290+
var results = ComputeTestResults(ThousandsSeparatorInDuration);
235291

236292
results.Should().ContainSingle();
237293
results[0].TestCase.FullyQualifiedName.Should().Be("TestMath.AddFails");
@@ -247,7 +303,7 @@ public void GetTestResults_OutputWithThousandsSeparatorInDuration_ParsedCorrectl
247303
[TestCategory(Unit)]
248304
public void GetTestResults_OutputWithConsoleOutput_ConsoleOutputIsIgnored()
249305
{
250-
List<TestResult> results = ComputeTestResults(PassingTestProducesConsoleOutput);
306+
var results = ComputeTestResults(PassingTestProducesConsoleOutput);
251307

252308
results.Should().ContainSingle();
253309
results[0].TestCase.FullyQualifiedName.Should().Be("TestMath.AddPasses");
@@ -276,6 +332,62 @@ public void GetTestResults_OutputWithPrefixingTest_BothTestsAreFound()
276332
XmlTestResultParserTests.AssertTestResultIsPassed(results[1]);
277333
}
278334

335+
[TestMethod]
336+
[TestCategory(Unit)]
337+
public void GetTestResults_OutputWithSkippedTest_AllResultsAreFound()
338+
{
339+
var cases = new List<TestCase>
340+
{
341+
TestDataCreator.ToTestCase("Test.Succeed", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
342+
TestDataCreator.ToTestCase("Test.Skip", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
343+
TestDataCreator.ToTestCase("Test.Fail", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
344+
};
345+
346+
var results = new StandardOutputTestResultParser(cases, ConsoleOutputWithSkippedTest, TestEnvironment.Logger).GetTestResults();
347+
348+
results.Should().HaveCount(3);
349+
350+
var result = results[0];
351+
result.TestCase.FullyQualifiedName.Should().Be("Test.Succeed");
352+
XmlTestResultParserTests.AssertTestResultIsPassed(result);
353+
354+
result = results[1];
355+
result.TestCase.FullyQualifiedName.Should().Be("Test.Skip");
356+
XmlTestResultParserTests.AssertTestResultIsSkipped(result);
357+
358+
result = results[2];
359+
result.TestCase.FullyQualifiedName.Should().Be("Test.Fail");
360+
XmlTestResultParserTests.AssertTestResultIsFailure(result);
361+
}
362+
363+
[TestMethod]
364+
[TestCategory(Unit)]
365+
public void GetTestResults_OutputWithSkippedTestAsLastTest_AllResultsAreFound()
366+
{
367+
var cases = new List<TestCase>
368+
{
369+
TestDataCreator.ToTestCase("Test.Succeed", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
370+
TestDataCreator.ToTestCase("Test.Skip", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
371+
TestDataCreator.ToTestCase("Test.Fail", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
372+
};
373+
374+
var results = new StandardOutputTestResultParser(cases, ConsoleOutputWithSkippedTestAsLastTest, TestEnvironment.Logger).GetTestResults();
375+
376+
results.Should().HaveCount(3);
377+
378+
var result = results[0];
379+
result.TestCase.FullyQualifiedName.Should().Be("Test.Succeed");
380+
XmlTestResultParserTests.AssertTestResultIsPassed(result);
381+
382+
result = results[1];
383+
result.TestCase.FullyQualifiedName.Should().Be("Test.Fail");
384+
XmlTestResultParserTests.AssertTestResultIsFailure(result);
385+
386+
result = results[2];
387+
result.TestCase.FullyQualifiedName.Should().Be("Test.Skip");
388+
XmlTestResultParserTests.AssertTestResultIsSkipped(result);
389+
}
390+
279391
[TestMethod]
280392
[TestCategory(Unit)]
281393
public void OutputHandling_OutputManyLinesWithNewlines_IsParsedCorrectly()
@@ -357,7 +469,7 @@ private IList<TestResult> GetTestResultsFromCompleteOutputFile()
357469
}
358470

359471

360-
private List<TestResult> ComputeTestResults(List<string> consoleOutput)
472+
private IList<TestResult> ComputeTestResults(List<string> consoleOutput)
361473
{
362474
var cases = new List<TestCase>
363475
{

GoogleTestAdapter/Core.Tests/TestResults/StreamingStandardOutputTestResultParserTests.cs

Lines changed: 122 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,62 @@ public class StreamingStandardOutputTestResultParserTests : TestsBase
113113
@"[ PASSED ] 2 test.",
114114
};
115115

116+
/// <summary>
117+
/// <see cref="https://github.com/csoltenborn/GoogleTestAdapter/issues/260"/>
118+
/// </summary>
119+
private string[] ConsoleOutputWithSkippedTest { get; } = @"[==========] Running 3 tests from 1 test suite.
120+
[----------] Global test environment set-up.
121+
[----------] 3 tests from Test
122+
[ RUN ] Test.Succeed
123+
[ OK ] Test.Succeed (0 ms)
124+
[ RUN ] Test.Skip
125+
[ SKIPPED ] Test.Skip (1 ms)
126+
[ RUN ] Test.Fail
127+
C:\...\test.cpp(14): error: Value of: false
128+
Actual: false
129+
Expected: true
130+
[ FAILED ] Test.Fail (0 ms)
131+
[----------] 3 tests from Test (3 ms total)
132+
133+
[----------] Global test environment tear-down
134+
[==========] 3 tests from 1 test suite ran. (6 ms total)
135+
[ PASSED ] 1 test.
136+
[ SKIPPED ] 1 test, listed below:
137+
[ SKIPPED ] Test.Skip
138+
[ FAILED ] 1 test, listed below:
139+
[ FAILED ] Test.Fail
140+
141+
1 FAILED TEST
142+
".Split('\n');
143+
144+
/// <summary>
145+
/// <see cref="https://github.com/csoltenborn/GoogleTestAdapter/issues/260"/>
146+
/// </summary>
147+
private string[] ConsoleOutputWithSkippedTestAsLastTest { get; } = @"[==========] Running 3 tests from 1 test suite.
148+
[----------] Global test environment set-up.
149+
[----------] 3 tests from Test
150+
[ RUN ] Test.Succeed
151+
[ OK ] Test.Succeed (0 ms)
152+
[ RUN ] Test.Fail
153+
C:\...\test.cpp(14): error: Value of: false
154+
Actual: false
155+
Expected: true
156+
[ FAILED ] Test.Fail (0 ms)
157+
[ RUN ] Test.Skip
158+
[ SKIPPED ] Test.Skip (1 ms)
159+
[----------] 3 tests from Test (3 ms total)
160+
161+
[----------] Global test environment tear-down
162+
[==========] 3 tests from 1 test suite ran. (6 ms total)
163+
[ PASSED ] 1 test.
164+
[ SKIPPED ] 1 test, listed below:
165+
[ SKIPPED ] Test.Skip
166+
[ FAILED ] 1 test, listed below:
167+
[ FAILED ] Test.Fail
168+
169+
1 FAILED TEST
170+
".Split('\n');
171+
116172

117173
private List<string> CrashesImmediately { get; set; }
118174
private List<string> CrashesAfterErrorMsg { get; set; }
@@ -312,8 +368,10 @@ public void GetTestResults_OutputWithPrefixingTest_BothTestsAreFound()
312368
@"c:\users\chris\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1tests\source.cpp")
313369
};
314370

315-
var results = new StandardOutputTestResultParser(cases, ConsoleOutputWithPrefixingTest, TestEnvironment.Logger)
316-
.GetTestResults();
371+
var parser = new StreamingStandardOutputTestResultParser(cases, TestEnvironment.Logger, MockFrameworkReporter.Object);
372+
ConsoleOutputWithPrefixingTest.ToList().ForEach(parser.ReportLine);
373+
parser.Flush();
374+
var results = parser.TestResults;
317375

318376
results.Should().HaveCount(2);
319377
results[0].TestCase.FullyQualifiedName.Should().Be("Test.AB");
@@ -322,6 +380,68 @@ public void GetTestResults_OutputWithPrefixingTest_BothTestsAreFound()
322380
XmlTestResultParserTests.AssertTestResultIsPassed(results[1]);
323381
}
324382

383+
[TestMethod]
384+
[TestCategory(Unit)]
385+
public void GetTestResults_OutputWithSkippedTest_AllResultsAreFound()
386+
{
387+
var cases = new List<TestCase>
388+
{
389+
TestDataCreator.ToTestCase("Test.Succeed", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
390+
TestDataCreator.ToTestCase("Test.Skip", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
391+
TestDataCreator.ToTestCase("Test.Fail", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
392+
};
393+
394+
var parser = new StreamingStandardOutputTestResultParser(cases, TestEnvironment.Logger, MockFrameworkReporter.Object);
395+
ConsoleOutputWithSkippedTest.ToList().ForEach(parser.ReportLine);
396+
parser.Flush();
397+
var results = parser.TestResults;
398+
399+
results.Should().HaveCount(3);
400+
401+
var result = results[0];
402+
result.TestCase.FullyQualifiedName.Should().Be("Test.Succeed");
403+
XmlTestResultParserTests.AssertTestResultIsPassed(result);
404+
405+
result = results[1];
406+
result.TestCase.FullyQualifiedName.Should().Be("Test.Skip");
407+
XmlTestResultParserTests.AssertTestResultIsSkipped(result);
408+
409+
result = results[2];
410+
result.TestCase.FullyQualifiedName.Should().Be("Test.Fail");
411+
XmlTestResultParserTests.AssertTestResultIsFailure(result);
412+
}
413+
414+
[TestMethod]
415+
[TestCategory(Unit)]
416+
public void GetTestResults_OutputWithSkippedTestAsLastTest_AllResultsAreFound()
417+
{
418+
var cases = new List<TestCase>
419+
{
420+
TestDataCreator.ToTestCase("Test.Succeed", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
421+
TestDataCreator.ToTestCase("Test.Skip", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
422+
TestDataCreator.ToTestCase("Test.Fail", TestDataCreator.DummyExecutable, @"c:\somepath\source.cpp"),
423+
};
424+
425+
var parser = new StreamingStandardOutputTestResultParser(cases, TestEnvironment.Logger, MockFrameworkReporter.Object);
426+
ConsoleOutputWithSkippedTestAsLastTest.ToList().ForEach(parser.ReportLine);
427+
parser.Flush();
428+
var results = parser.TestResults;
429+
430+
results.Should().HaveCount(3);
431+
432+
var result = results[0];
433+
result.TestCase.FullyQualifiedName.Should().Be("Test.Succeed");
434+
XmlTestResultParserTests.AssertTestResultIsPassed(result);
435+
436+
result = results[1];
437+
result.TestCase.FullyQualifiedName.Should().Be("Test.Fail");
438+
XmlTestResultParserTests.AssertTestResultIsFailure(result);
439+
440+
result = results[2];
441+
result.TestCase.FullyQualifiedName.Should().Be("Test.Skip");
442+
XmlTestResultParserTests.AssertTestResultIsSkipped(result);
443+
}
444+
325445
[TestMethod]
326446
[TestCategory(Unit)]
327447
public void OutputHandling_OutputManyLinesWithNewlines_IsParsedCorrectly()

0 commit comments

Comments
 (0)