Skip to content

Commit

Permalink
UX improvement: list of failed tests.
Browse files Browse the repository at this point in the history
The test runner now returns a list of any tests that failed.
  • Loading branch information
nicrowe00 committed Feb 9, 2024
1 parent b3e1a81 commit 077d31c
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
18 changes: 16 additions & 2 deletions Turkey/TestOutputFormat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ public class TestOutputFormats
{
public class NewOutput : TestOutput
{
private List<string> failedTests = new List<string>();

public async override Task AtStartupAsync(){
Console.WriteLine("Running tests:");
}
public async override Task AfterParsingTestAsync(string name, bool enabled)
{
var nameText = string.Format("{0,-60}", name);
Expand All @@ -31,7 +36,7 @@ public async override Task AfterRunningTestAsync(string name, TestResult result,
switch (result)
{
case TestResult.Passed: resultOutput = "PASS"; break;
case TestResult.Failed: resultOutput = "FAIL"; break;
case TestResult.Failed: resultOutput = "FAIL"; failedTests.Add($"{string.Format("{0,-60}", name)}[{resultOutput}]\t({elapsedTime})"); break;
case TestResult.Skipped: resultOutput = "SKIP"; break;
}
Console.WriteLine($"[{resultOutput}]\t({elapsedTime})");
Expand All @@ -41,7 +46,7 @@ public async override Task AfterRunningTestAsync(string name, TestResult result,
switch (result)
{
case TestResult.Passed: resultOutput = "\u001b[32mPASS\u001b[0m"; break;
case TestResult.Failed: resultOutput = "\u001b[31mFAIL\u001b[0m"; break;
case TestResult.Failed: resultOutput = "\u001b[31mFAIL\u001b[0m"; failedTests.Add($"{string.Format("{0,-60}", name)}[{resultOutput}]\t({elapsedTime})"); break;
case TestResult.Skipped: resultOutput = "SKIP"; break;
}
Console.WriteLine($"[{resultOutput}]\t({elapsedTime})");
Expand All @@ -50,6 +55,15 @@ public async override Task AfterRunningTestAsync(string name, TestResult result,

public async override Task AfterRunningAllTestsAsync(TestResults results)
{
Console.WriteLine();
if (results.Failed > 0){
Console.WriteLine("The following tests failed: ");
foreach (var test in failedTests)
{
Console.WriteLine(test);
}
Console.WriteLine();
}
Console.WriteLine($"Total: {results.Total} Passed: {results.Passed} Failed: {results.Failed}");
}
}
Expand Down
3 changes: 2 additions & 1 deletion Turkey/TestRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ public TestRunner(SystemUnderTest system, DirectoryInfo root, bool verboseOutput

public async Task<TestResults> ScanAndRunAsync(List<TestOutput> outputs, string logDir, TimeSpan defaultTimeout)
{

await outputs.ForEachAsync(output => output.AtStartupAsync());

TestResults results = new TestResults();
Expand Down Expand Up @@ -148,7 +149,7 @@ public async Task<TestResults> ScanAndRunAsync(List<TestOutput> outputs, string
}

await outputs.ForEachAsync(output => output.AfterRunningTestAsync(testName, testResult, testLog, testTimeWatch.Elapsed));
}
}

await outputs.ForEachAsync(output => output.AfterRunningAllTestsAsync(results));

Expand Down

0 comments on commit 077d31c

Please sign in to comment.