| 1 | using Xunit; |
| 2 | |
| 3 | namespace DotNetBuildTestParsers.Tests; |
| 4 | |
| 5 | public sealed class ParsersTests |
| 6 | { |
| 7 | [Fact] |
| 8 | public void BuildOutputParser_finds_error_and_warning() |
| 9 | { |
| 10 | const string output = """ |
| 11 | D:\app\Program.cs(10,5): error CS1002: ; expected |
| 12 | D:\app\Program.cs(12,1): warning CS0162: Unreachable code |
| 13 | """; |
| 14 | |
| 15 | var r = BuildOutputParser.Parse(output); |
| 16 | |
| 17 | Assert.Single(r.Errors); |
| 18 | Assert.Single(r.Warnings); |
| 19 | Assert.Equal("D:\\app\\Program.cs", r.Errors[0].File); |
| 20 | Assert.Equal(10, r.Errors[0].Line); |
| 21 | Assert.Equal(5, r.Errors[0].Column); |
| 22 | Assert.Equal("CS1002", r.Errors[0].Code); |
| 23 | } |
| 24 | |
| 25 | [Fact] |
| 26 | public void TestOutputParser_counts_passed_failed() |
| 27 | { |
| 28 | const string output = """ |
| 29 | Passed TestProject.UnitTest1 [1 ms] |
| 30 | Failed TestProject.UnitTest2 [2 ms] |
| 31 | Error Message: Assert.Equal() Failure |
| 32 | """; |
| 33 | |
| 34 | var r = TestOutputParser.Parse(output); |
| 35 | |
| 36 | Assert.Equal(2, r.Total); |
| 37 | Assert.Equal(1, r.Passed); |
| 38 | Assert.Equal(1, r.Failed); |
| 39 | Assert.Single(r.FailedTests); |
| 40 | Assert.Equal("TestProject.UnitTest2", r.FailedTests[0].Name); |
| 41 | Assert.Contains("Assert.Equal", r.FailedTests[0].Message ?? ""); |
| 42 | } |
| 43 | } |
| 44 | |