Skip to content

Commit 2ccad7f

Browse files
committed
Refactor tests to avoid warnings
dotnet test was outputting expected errors as warnings
1 parent 7f50422 commit 2ccad7f

File tree

2 files changed

+34
-34
lines changed

2 files changed

+34
-34
lines changed

src/Abc.Zebus.MessageDsl.Tool.Tests/ToolTests.cs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,28 @@ namespace Abc.Zebus.MessageDsl.Tool.Tests;
77
[TestFixture]
88
public class ToolTests
99
{
10-
private TextWriter _originalOut = null!;
11-
private TextReader _originalIn = null!;
10+
#pragma warning disable NUnit1032
11+
private StringReader _input = null!;
1212
private StringWriter _output = null!;
13+
private StringWriter _errorOutput = null!;
14+
#pragma warning restore NUnit1032
1315

1416
[SetUp]
15-
public void Setup()
17+
public void SetUp()
1618
{
17-
_originalOut = Console.Out;
18-
_originalIn = Console.In;
19+
_input = new StringReader("");
1920
_output = new StringWriter();
20-
Console.SetOut(_output);
21-
}
22-
23-
[TearDown]
24-
public void TearDown()
25-
{
26-
Console.SetOut(_originalOut);
27-
Console.SetIn(_originalIn);
28-
29-
_output?.Dispose();
21+
_errorOutput = new StringWriter();
3022
}
3123

3224
[Test]
3325
public void should_generate_csharp_with_namespace()
3426
{
35-
Console.SetIn(new StringReader("TestMessage()"));
27+
_input = new StringReader("TestMessage()");
3628

37-
var exitCode = Program.Main(["--namespace", "TestNS", "--format", "CSharp"]);
29+
var exitCode = Run(["--namespace", "TestNS", "--format", "CSharp"]);
3830
Assert.That(exitCode, Is.EqualTo(0));
31+
3932
var outputString = _output.ToString();
4033
Assert.That(outputString, Does.Contain("namespace TestNS"));
4134
Assert.That(outputString, Does.Contain("class TestMessage"));
@@ -49,8 +42,9 @@ public void should_generate_proto_output_with_empty_namespace_when_not_provided(
4942
{
5043
File.WriteAllText(tempFile, "TestMessage()");
5144

52-
var exitCode = Program.Main([tempFile, "--format", "Proto"]);
45+
var exitCode = Run([tempFile, "--format", "Proto"]);
5346
Assert.That(exitCode, Is.EqualTo(0));
47+
5448
var outputString = _output.ToString();
5549
Assert.That(outputString.Contains("message TestMessage"));
5650
}
@@ -63,23 +57,26 @@ public void should_generate_proto_output_with_empty_namespace_when_not_provided(
6357
[Test]
6458
public void should_error_on_file_not_found()
6559
{
66-
var exitCode = Program.Main(["invalid_file.msg"]);
60+
var exitCode = Run(["invalid_file.msg"]);
6761
Assert.That(exitCode, Is.EqualTo(1));
6862
}
6963

7064
[Test]
7165
public void should_error_on_directory()
7266
{
7367
var aDirectory = Environment.CurrentDirectory;
74-
var exitCode = Program.Main([aDirectory]);
68+
var exitCode = Run([aDirectory]);
7569
Assert.That(exitCode, Is.EqualTo(1));
7670
}
7771

7872
[Test]
7973
public void should_error_on_invalid_msg()
8074
{
81-
Console.SetIn(new StringReader("InvalidSyntax"));
82-
var exitCode = Program.Main([]);
75+
_input = new StringReader("InvalidSyntax");
76+
var exitCode = Run([]);
8377
Assert.That(exitCode, Is.EqualTo(1));
8478
}
79+
80+
private int Run(string[] args)
81+
=> Program.Run(args, _input, _output, _errorOutput);
8582
}

src/Abc.Zebus.MessageDsl.Tool/Program.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ namespace Abc.Zebus.MessageDsl.Tool;
99
public static class Program
1010
{
1111
public static int Main(string[] args)
12+
=> Run(args, Console.In, Console.Out, Console.Error);
13+
14+
public static int Run(string[] args, TextReader input, TextWriter output, TextWriter errorOutput)
1215
{
1316
var mainCommand = new RootCommand();
1417
var path = new Argument<string?>(".msg file", "The .msg file to process.")
@@ -23,38 +26,38 @@ public static int Main(string[] args)
2326
mainCommand.AddOption(defaultNamespace);
2427
mainCommand.AddOption(outputType);
2528

26-
mainCommand.SetHandler(
27-
context =>
29+
mainCommand.SetHandler(context =>
2830
{
2931
var parse = context.ParseResult;
3032
var parsedPath = parse.GetValueForArgument(path);
3133
var parsedNamespace = parse.GetValueForOption(defaultNamespace);
3234
var parsedFormat = parse.GetValueForOption(outputType);
35+
3336
string? txt = null;
37+
3438
try
3539
{
3640
if (parsedPath != null)
3741
txt = File.ReadAllText(parsedPath);
3842
}
3943
catch (FileNotFoundException)
4044
{
41-
Console.Error.WriteLine($"File {parsedPath} does not exist.");
45+
errorOutput.WriteLine($"File {parsedPath} does not exist.");
4246
context.ExitCode = 1;
4347
return;
4448
}
4549
catch (Exception ex)
4650
{
47-
Console.Error.WriteLine($"Error reading file {parsedPath}: {ex.Message}");
51+
errorOutput.WriteLine($"Error reading file {parsedPath}: {ex.Message}");
4852
context.ExitCode = 1;
4953
return;
5054
}
5155

52-
txt ??= Console.In.ReadToEnd();
56+
txt ??= input.ReadToEnd();
5357
var parsed = ParsedContracts.Parse(txt, parsedNamespace);
58+
5459
foreach (var error in parsed.Errors)
55-
{
56-
Console.Error.WriteLine(error);
57-
}
60+
errorOutput.WriteLine(error);
5861

5962
if (parsed.Errors.Count != 0)
6063
{
@@ -63,24 +66,24 @@ public static int Main(string[] args)
6366
}
6467

6568
foreach (var message in parsed.Messages)
66-
{
6769
message.Options.Proto = true;
68-
}
6970

7071
switch (parsedFormat)
7172
{
7273
case Format.CSharp:
7374
{
7475
var cs = CSharpGenerator.Generate(parsed);
75-
Console.Write(cs);
76+
output.Write(cs);
7677
return;
7778
}
79+
7880
case Format.Proto:
7981
{
8082
var proto = ProtoGenerator.Generate(parsed);
81-
Console.Write(proto);
83+
output.Write(proto);
8284
return;
8385
}
86+
8487
default:
8588
throw new InvalidOperationException();
8689
}

0 commit comments

Comments
 (0)