Skip to content

Commit bc71e6d

Browse files
committed
Add WriteHeader method; Refactor tests
1 parent eb2c1a3 commit bc71e6d

File tree

3 files changed

+60
-69
lines changed

3 files changed

+60
-69
lines changed

src/NUnitCommon/nunit.common.tests/TextDisplay/ResultReporterTests.cs

+36-42
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,26 @@ namespace NUnit.TextDisplay
1515
public class ResultReporterTests
1616
{
1717
private XmlNode _result;
18-
private StringBuilder _report;
18+
19+
private StringBuilder _reportBuilder;
20+
private ExtendedTextWrapper _writer;
21+
22+
private string ReportOutput => _reportBuilder.ToString();
23+
24+
private List<string> ReportLines
25+
{
26+
get
27+
{
28+
var rdr = new StringReader(ReportOutput);
29+
30+
string? line;
31+
var lines = new List<string>();
32+
while ((line = rdr.ReadLine()) is not null)
33+
lines.Add(line);
34+
35+
return lines;
36+
}
37+
}
1938

2039
[OneTimeSetUp]
2140
public void CreateResult()
@@ -44,19 +63,19 @@ public void CreateResult()
4463
}
4564

4665
[SetUp]
47-
public void CreateReporter()
66+
public void SetUp()
4867
{
49-
_report = new StringBuilder();
50-
var writer = new ExtendedTextWrapper(new StringWriter(_report));
68+
_reportBuilder = new StringBuilder();
69+
_writer = new ExtendedTextWrapper(new StringWriter(_reportBuilder));
5170
}
5271

72+
[TearDown]
73+
public void TearDown() => _writer.Dispose();
74+
5375
[Test]
5476
public void ReportSequenceTest()
5577
{
56-
var sb = new StringBuilder();
57-
var writer = new ExtendedTextWrapper(new StringWriter(sb));
58-
ResultReporter.ReportResults(new ResultSummary(_result), writer);
59-
var report = sb.ToString();
78+
ResultReporter.ReportResults(new ResultSummary(_result), _writer);
6079

6180
var reportSequence = new[]
6281
{
@@ -69,7 +88,7 @@ public void ReportSequenceTest()
6988

7089
foreach (string title in reportSequence)
7190
{
72-
var index = report.IndexOf(title);
91+
var index = ReportOutput.IndexOf(title);
7392
Assert.That(index > 0, "Report not found: " + title);
7493
Assert.That(index > last, "Report out of sequence: " + title);
7594
last = index;
@@ -94,11 +113,8 @@ public void SummaryReportTest()
94113
};
95114
#pragma warning restore SA1137 // Elements should have the same indentation
96115

97-
var report = new StringBuilder();
98-
var writer = new ExtendedTextWrapper(new StringWriter(report));
99-
ResultReporter.WriteSummaryReport(_result, new ResultSummary(_result), writer);
100-
var lines = GetReportLines(report.ToString());
101-
Assert.That(lines, Is.EqualTo(expected));
116+
ResultReporter.WriteSummaryReport(new ResultSummary(_result), _writer);
117+
Assert.That(ReportLines, Is.EqualTo(expected));
102118
}
103119

104120
[Test]
@@ -123,14 +139,10 @@ public void ErrorsFailuresAndWarningsReportTest()
123139
"No suitable constructor was found"
124140
};
125141

126-
var sb = new StringBuilder();
127-
var writer = new ExtendedTextWrapper(new StringWriter(sb));
128-
ResultReporter.WriteErrorsFailuresAndWarningsReport(_result, writer);
129-
130-
var report = sb.ToString();
142+
ResultReporter.WriteErrorsFailuresAndWarningsReport(_result, _writer);
131143

132144
foreach (var item in expected)
133-
Assert.That(report.Contains(item));
145+
Assert.That(ReportOutput.Contains(item));
134146
}
135147

136148
[Test]
@@ -162,11 +174,8 @@ public void TestsNotRunTest()
162174
string.Empty
163175
};
164176

165-
var report = new StringBuilder();
166-
var writer = new ExtendedTextWrapper(new StringWriter(report));
167-
ResultReporter.WriteNotRunReport(_result, writer);
168-
var lines = GetReportLines(report.ToString());
169-
Assert.That(lines, Is.EqualTo(expected));
177+
ResultReporter.WriteNotRunReport(_result, _writer);
178+
Assert.That(ReportLines, Is.EqualTo(expected));
170179
}
171180

172181
[Test, Explicit("Displays failure behavior")]
@@ -186,28 +195,13 @@ public void TestParameterSettingsWrittenCorrectly()
186195
" 2 -> |c|"
187196
};
188197

189-
var report = new StringBuilder();
190-
var writer = new ExtendedTextWrapper(new StringWriter(report));
191-
ResultReporter.WriteRunSettingsReport(_result, writer);
192-
var lines = GetReportLines(report.ToString());
193-
Assert.That(lines, Is.SupersetOf(expected));
198+
ResultReporter.WriteRunSettingsReport(_result, _writer);
199+
Assert.That(ReportLines, Is.SupersetOf(expected));
194200
}
195201

196202
private static TestEngineResult AddMetadata(TestEngineResult input)
197203
{
198204
return input.Aggregate("test-run start-time=\"2015-10-19 02:12:28Z\" end-time=\"2015-10-19 02:12:29Z\" duration=\"0.348616\"", string.Empty, string.Empty, string.Empty);
199205
}
200-
201-
private static List<string> GetReportLines(string report)
202-
{
203-
var rdr = new StringReader(report.ToString());
204-
205-
string? line;
206-
var lines = new List<string>();
207-
while ((line = rdr.ReadLine()) is not null)
208-
lines.Add(line);
209-
210-
return lines;
211-
}
212206
}
213207
}

src/NUnitCommon/nunit.common/TextDisplay/ResultReporter.cs

+21-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,30 @@
11
// Copyright (c) Charlie Poole, Rob Prouse and Contributors. MIT License - see LICENSE.txt
22

33
using System;
4+
using System.Diagnostics;
45
using System.Globalization;
6+
using System.Reflection;
57
using System.Xml;
68

79
namespace NUnit.TextDisplay
810
{
911
public static class ResultReporter
1012
{
13+
public static void WriteHeader(ExtendedTextWriter writer)
14+
{
15+
Assembly entryAssembly = Assembly.GetEntryAssembly() ?? Assembly.GetExecutingAssembly();
16+
var versionBlock = FileVersionInfo.GetVersionInfo(entryAssembly.ManifestModule.FullyQualifiedName);
17+
18+
var header = $"{versionBlock.ProductName} {versionBlock.ProductVersion}";
19+
20+
var configurationAttributes = entryAssembly.GetCustomAttribute<AssemblyConfigurationAttribute>();
21+
22+
writer.WriteLine(ColorStyle.Header, header);
23+
writer.WriteLine(ColorStyle.SubHeader, versionBlock.LegalCopyright ?? "No Copyright statement found");
24+
writer.WriteLine(ColorStyle.SubHeader, DateTime.Now.ToString(CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern));
25+
writer.WriteLine();
26+
}
27+
1128
/// <summary>
1229
/// Reports the results to the console
1330
/// </summary>
@@ -25,7 +42,7 @@ public static void ReportResults(ResultSummary summary, ExtendedTextWriter write
2542

2643
WriteRunSettingsReport(topLevelResult, writer);
2744

28-
WriteSummaryReport(topLevelResult, summary, writer);
45+
WriteSummaryReport(summary, writer);
2946
}
3047

3148
public static void WriteRunSettingsReport(XmlNode topLevelResult, ExtendedTextWriter writer)
@@ -68,11 +85,13 @@ private static void WriteSettingsNode(XmlNode node, ExtendedTextWriter writer)
6885
}
6986
}
7087

71-
public static void WriteSummaryReport(XmlNode topLevelResult, ResultSummary summary, ExtendedTextWriter writer)
88+
public static void WriteSummaryReport(ResultSummary summary, ExtendedTextWriter writer)
7289
{
7390
const string INDENT4 = " ";
7491
const string INDENT8 = " ";
7592

93+
var topLevelResult = summary.ResultNode;
94+
7695
ColorStyle resultColor = summary.OverallResult == "Passed"
7796
? ColorStyle.Pass
7897
: summary.OverallResult == "Failed" || summary.OverallResult == "Unknown"

src/NUnitConsole/nunit4-console/Program.cs

+3-25
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public static int Main(string[] args)
4646
}
4747
catch (OptionException ex)
4848
{
49-
WriteHeader();
49+
ResultReporter.WriteHeader(OutWriter);
5050
WriteErrorMessage(string.Format(ex.Message, ex.OptionName));
5151
return ConsoleRunner.INVALID_ARG;
5252
}
@@ -59,7 +59,7 @@ public static int Main(string[] args)
5959
}
6060
catch (Exception error)
6161
{
62-
WriteHeader();
62+
ResultReporter.WriteHeader(OutWriter);
6363
WriteErrorMessage(string.Format("Unsupported Encoding, {0}", error.Message));
6464
return ConsoleRunner.INVALID_ARG;
6565
}
@@ -68,7 +68,7 @@ public static int Main(string[] args)
6868
try
6969
{
7070
if (Options.ShowVersion || !Options.NoHeader)
71-
WriteHeader();
71+
ResultReporter.WriteHeader(OutWriter);
7272

7373
if (Options.ShowHelp || args.Length == 0)
7474
{
@@ -171,28 +171,6 @@ public static int Main(string[] args)
171171
}
172172
}
173173

174-
private static void WriteHeader()
175-
{
176-
Assembly entryAssembly = Assembly.GetEntryAssembly() ?? Assembly.GetExecutingAssembly();
177-
var versionBlock = FileVersionInfo.GetVersionInfo(entryAssembly.ManifestModule.FullyQualifiedName);
178-
179-
var header = $"{versionBlock.ProductName} {versionBlock.ProductVersion}";
180-
181-
var configurationAttributes = entryAssembly.GetCustomAttributes<AssemblyConfigurationAttribute>().ToArray();
182-
183-
if (configurationAttributes.Length > 0)
184-
{
185-
string configuration = ((AssemblyConfigurationAttribute)configurationAttributes[0]).Configuration;
186-
if (!string.IsNullOrEmpty(configuration))
187-
header += $" ({configuration})";
188-
}
189-
190-
OutWriter.WriteLine(ColorStyle.Header, header);
191-
OutWriter.WriteLine(ColorStyle.SubHeader, versionBlock.LegalCopyright ?? "No Copyright statement found");
192-
OutWriter.WriteLine(ColorStyle.SubHeader, DateTime.Now.ToString(CultureInfo.CurrentCulture.DateTimeFormat.FullDateTimePattern));
193-
OutWriter.WriteLine();
194-
}
195-
196174
private static void WriteHelpText()
197175
{
198176
OutWriter.WriteLine();

0 commit comments

Comments
 (0)