Skip to content

Commit

Permalink
implement VS2012FixtureResult.hasTrace
Browse files Browse the repository at this point in the history
  • Loading branch information
fschwiet committed Sep 2, 2012
1 parent 1fc1943 commit f32af0d
Show file tree
Hide file tree
Showing 15 changed files with 65 additions and 38 deletions.
2 changes: 1 addition & 1 deletion NJasmine.TestUtil/VerifyTestForVS2012Command.cs
Expand Up @@ -39,7 +39,7 @@ public override int Run(string[] remainingArgs)
var trvContents = File.ReadAllText(TrvOutputFile);
var consoleContents = File.ReadAllText(ConsoleOutputFile);

var fixtureResult = new VS2012FixtureResult(trvContents);
var fixtureResult = new VS2012FixtureResult(TestName, trvContents, consoleContents);

try
{
Expand Down
2 changes: 1 addition & 1 deletion NJasmine.Tests/Export/IFixtureResult.cs
Expand Up @@ -4,7 +4,7 @@ public interface IFixtureResult
{
IFixtureResult succeeds();
IFixtureResult failed();
void containsTrace(string expectedTrace);
void hasTrace(string expectedTrace);
ITestResult hasTest(string name);
ITestResult hasTestWithFullName(string name);
ISuiteResult hasSuite(string name);
Expand Down
38 changes: 22 additions & 16 deletions NJasmine.Tests/Export/NUnitFixtureResult.cs
Expand Up @@ -43,23 +43,9 @@ public IFixtureResult failed()
return this;
}

public void containsTrace(string expectedTrace)
public void hasTrace(string expectedTrace)
{
string resetMarker = "{{<<RESET>>}}";
string tracePattern = @"<<\{\{(.*)}}>>";

var lastReset = _consoleOutput.LastIndexOf(resetMarker);

if (lastReset < 0)
lastReset = 0;
else
lastReset = lastReset + resetMarker.Length;

MatchCollection matches = new Regex(tracePattern).Matches(_consoleOutput, lastReset);

var trace = matches.OfType<Match>().Select(m => m.Groups[1].Value).ToArray();

Assert.That(trace, Is.EquivalentTo(expectedTrace.Split(new [] {'\n', '\r'}, StringSplitOptions.RemoveEmptyEntries)), "Did not find expected trace in " + _testName);
AssertContainsTrace(this._testName, this._consoleOutput, expectedTrace);
}

public ITestResult hasTest(string name)
Expand Down Expand Up @@ -110,5 +96,25 @@ private int GetFailureCount()
{
return (int)_doc.Root.Attribute("failures");
}

public static void AssertContainsTrace(string testName, string consoleOutput, string expectedTrace)
{
string resetMarker = "{{<<RESET>>}}";
string tracePattern = @"<<\{\{(.*)}}>>";

var lastReset = consoleOutput.LastIndexOf(resetMarker);

if (lastReset < 0)
lastReset = 0;
else
lastReset = lastReset + resetMarker.Length;

MatchCollection matches = new Regex(tracePattern).Matches(consoleOutput, lastReset);

var trace = matches.OfType<Match>().Select(m => m.Groups[1].Value).ToArray();

Assert.That(trace, Is.EquivalentTo(expectedTrace.Split(new[] {'\n', '\r'}, StringSplitOptions.RemoveEmptyEntries)),
"Did not find expected trace in " + testName);
}
}
}
6 changes: 3 additions & 3 deletions NJasmine.Tests/Export/NUnitFixtureResultTest.cs
Expand Up @@ -59,7 +59,7 @@ public override void Specify()
}, _expectedFixtureName);
});

describe("containsTrace", delegate
describe("hasTrace", delegate
{
var originalXml = "<xml></xml>";

Expand Down Expand Up @@ -102,7 +102,7 @@ public override void Specify()

it("allows tests with the expected trace", delegate
{
new NUnitFixtureResult(_expectedFixtureName, originalXml, originalConsole).containsTrace(@"
new NUnitFixtureResult(_expectedFixtureName, originalXml, originalConsole).hasTrace(@"
BEFORE ALL
first test
SECOND BEFORE ALL
Expand All @@ -124,7 +124,7 @@ AFTER ALL

var exception = Assert.Throws(ExpectedAssertionType, delegate
{
sut.containsTrace(@"
sut.hasTrace(@"
ONE
TWO
THREE
Expand Down
15 changes: 10 additions & 5 deletions NJasmine.Tests/Export/VS2012FixtureResult.cs
Expand Up @@ -8,11 +8,15 @@ namespace NJasmineTests.Export
{
public class VS2012FixtureResult : IFixtureResult
{
public XDocument _trxResults;
private readonly string _testName;
private readonly string _consoleOutput;
public XDocument _trxXDocument;

public VS2012FixtureResult(string trxXmlContents)
public VS2012FixtureResult(string testName, string trxFileContents, string consoleOutput)
{
_trxResults = XDocument.Parse(trxXmlContents);
_testName = testName;
_consoleOutput = consoleOutput;
_trxXDocument = XDocument.Parse(trxFileContents);
}

public IFixtureResult succeeds()
Expand Down Expand Up @@ -41,8 +45,9 @@ public IFixtureResult failed()
return this;
}

public void containsTrace(string expectedTrace)
public void hasTrace(string expectedTrace)
{
NUnitFixtureResult.AssertContainsTrace(_testName, _consoleOutput, expectedTrace);
}

public ITestResult hasTest(string name)
Expand Down Expand Up @@ -73,7 +78,7 @@ class ResultSummaryCounts

private ResultSummaryCounts GetResultSummaryCounts()
{
var resultSummary = _trxResults.Descendants("ResultSummary").Single().Descendants("Counters").Single();
var resultSummary = _trxXDocument.Descendants("ResultSummary").Single().Descendants("Counters").Single();

var counts = new ResultSummaryCounts()
{
Expand Down
22 changes: 19 additions & 3 deletions NJasmine.Tests/Export/VS2012FixtureResultTest.cs
Expand Up @@ -19,7 +19,7 @@ public override void Specify()
<Counters total='1' executed='1' passed='1' failed='0' error='0' timeout='0' aborted='0' inconclusive='0' passedButRunAborted='0' notRunnable='0' notExecuted='0' disconnected='0' warning='0' completed='0' inProgress='0' pending='0' />
</ResultSummary>
</TestRun>";
var results = arrange(() => new VS2012FixtureResult(result));
var results = arrange(() => new VS2012FixtureResult(null, result, null));
then("verification of succeeds() passes", () => results.succeeds());
then("verification of failed() fails", () => Assert.Throws<Exception>(() => results.failed()));
Expand All @@ -34,7 +34,7 @@ public override void Specify()
</ResultSummary>
</TestRun>";
var results = arrange(() => new VS2012FixtureResult(result));
var results = arrange(() => new VS2012FixtureResult(null, result, null));
then("verification of succeeds() fails", () => Assert.Throws<Exception>(() => results.succeeds()));
then("verification of failed() succeeds", () => results.failed());
Expand All @@ -49,11 +49,27 @@ public override void Specify()
</ResultSummary>
</TestRun>";
var results = arrange(() => new VS2012FixtureResult(result));
var results = arrange(() => new VS2012FixtureResult(null, result, null));
then("verification of succeeds() fails", () => Assert.Throws<Exception>(() => results.succeeds()));
then("verification of failed() fails", () => Assert.Throws<Exception>(() => results.failed()));
});

given("console output that has trace expressions", () =>
{
var result = @"<?xml version='1.0' encoding='UTF-8'?><TestRun></TestRun>";
var consoleResult = @"Microsoft (R) Test Execution Command Line Tool Version 11.0.50727.1
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test discovery, please wait...
<<{{test started, before include of a}}>>
<<{{after include of a}}>>";
var results = arrange(() => new VS2012FixtureResult("testName", result, consoleResult));
then("succeed when checking for existing trace statements", () => results.hasTrace("test started, before include of a\nafter include of a"));
then("fail when checking for non-existing trace statements", () => Assert.Throws<AssertionException>(() => results.hasTrace("zippity bop")));
});
}
}
}
Expand Up @@ -84,7 +84,7 @@ public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.succeeds();

fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
creating some_observable_A
creating some_observable_B
creating some_observable_C
Expand Down
Expand Up @@ -75,7 +75,7 @@ public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.succeeds();

fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
creating some_observable_A
creating some_observable_B
creating some_observable_C
Expand Down
2 changes: 1 addition & 1 deletion NJasmine.Tests/Specs/imports_NUnit_fixture.cs
Expand Up @@ -92,7 +92,7 @@ public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.succeeds();

fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
test started, before include of a
FixtureSetup some_Nunit_fixture_a
after include of a
Expand Down
Expand Up @@ -24,7 +24,7 @@ public override void Specify()
public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.succeeds();
fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
First setup
First test
First cleanup
Expand Down
Expand Up @@ -53,7 +53,7 @@ public override void Specify()
public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.succeeds();
fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
one
two
three
Expand Down
Expand Up @@ -44,7 +44,7 @@ public override void Specify()
public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.failed();
fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
failure_in_setup_doesnt_prevent_cleanup_in_same_scope
failure_in_setup_doesnt_prevent_cleanup");
}
Expand Down
Expand Up @@ -36,7 +36,7 @@ public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.failed();

fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
failure_in_test_doesnt_prevent_cleanup_in_same_scope
failure_in_test_doesnt_prevent_cleanup");
}
Expand Down
Expand Up @@ -93,7 +93,7 @@ public override void Specify()
public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.succeeds();
fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
BEFORE ALL
first test
SECOND BEFORE ALL
Expand Down
2 changes: 1 addition & 1 deletion NJasmine.Tests/Specs/supports_nunit_setup_by_namespace.cs
Expand Up @@ -35,7 +35,7 @@ public void Verify_NJasmine_implementation(IFixtureResult fixtureResult)
{
fixtureResult.succeeds();

fixtureResult.containsTrace(@"
fixtureResult.hasTrace(@"
running test 1
running test 2
TearDown NamespaceSetupB
Expand Down

0 comments on commit f32af0d

Please sign in to comment.