Skip to content

Commit 389e4e0

Browse files
[Refactor] and update to System.Commandline version 2.0.0 (#24)
* [Refactor] and update to System.Commandline version 2.0.0 * [Update] sonar.login to sonar.token
1 parent e5ba4fc commit 389e4e0

29 files changed

Lines changed: 764 additions & 383 deletions

.github/workflows/CodeQuality.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,4 @@ jobs:
4545
- name: Sonarqube end
4646
env:
4747
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
48-
run: dotnet sonarscanner end /d:sonar.login="$SONAR_TOKEN"
48+
run: dotnet sonarscanner end /d:sonar.token="$SONAR_TOKEN"

ECoreNetto.Extensions.Tests/ECoreNetto.Extensions.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</PropertyGroup>
1515

1616
<ItemGroup>
17-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
17+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
1818
<PackageReference Include="Moq" Version="4.20.72" />
1919
<PackageReference Include="NUnit" Version="4.4.0" />
2020
<PackageReference Include="NUnit.Console" Version="3.20.2" />
@@ -34,8 +34,8 @@
3434

3535
<ItemGroup>
3636
<PackageReference Include="Serilog" Version="4.3.0" />
37-
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.2" />
38-
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
37+
<PackageReference Include="Serilog.Extensions.Logging" Version="10.0.0" />
38+
<PackageReference Include="Serilog.Sinks.Console" Version="6.1.1" />
3939
</ItemGroup>
4040

4141
<ItemGroup>

ECoreNetto.Extensions/ECoreNetto.Extensions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
<ItemGroup>
4040
<PackageReference Include="HtmlAgilityPack" Version="1.12.4" />
41-
<PackageReference Include="Microsoft.Sbom.Targets" Version="4.1.2" PrivateAssets="all" />
41+
<PackageReference Include="Microsoft.Sbom.Targets" Version="4.1.4" PrivateAssets="all" />
4242
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
4343
</ItemGroup>
4444

ECoreNetto.HandleBars.Tests/ECoreNetto.HandleBars.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</PropertyGroup>
1515

1616
<ItemGroup>
17-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
17+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
1818
<PackageReference Include="NUnit" Version="4.4.0" />
1919
<PackageReference Include="NUnit.Console" Version="3.20.2" />
2020
<PackageReference Include="NUnit3TestAdapter" Version="5.2.0">
@@ -30,8 +30,8 @@
3030
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3131
</PackageReference>
3232
<PackageReference Include="Serilog" Version="4.3.0" />
33-
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.2" />
34-
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
33+
<PackageReference Include="Serilog.Extensions.Logging" Version="10.0.0" />
34+
<PackageReference Include="Serilog.Sinks.Console" Version="6.1.1" />
3535
</ItemGroup>
3636

3737
<ItemGroup>

ECoreNetto.HandleBars/ECoreNetto.HandleBars.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
<ItemGroup>
3636
<PackageReference Include="Handlebars.Net.Helpers" Version="2.5.3" />
37-
<PackageReference Include="Microsoft.Sbom.Targets" Version="4.1.2" PrivateAssets="all" />
37+
<PackageReference Include="Microsoft.Sbom.Targets" Version="4.1.4" PrivateAssets="all" />
3838
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
3939
</ItemGroup>
4040

ECoreNetto.Reporting.Tests/ECoreNetto.Reporting.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<ItemGroup>
1313
<PackageReference Include="Moq" Version="4.20.72" />
14-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
14+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
1515
<PackageReference Include="NUnit" Version="4.4.0" />
1616
<PackageReference Include="NUnit.Console" Version="3.20.2" />
1717
<PackageReference Include="NUnit3TestAdapter" Version="5.2.0">
@@ -27,8 +27,8 @@
2727
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2828
</PackageReference>
2929
<PackageReference Include="Serilog" Version="4.3.0" />
30-
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.2" />
31-
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
30+
<PackageReference Include="Serilog.Extensions.Logging" Version="10.0.0" />
31+
<PackageReference Include="Serilog.Sinks.Console" Version="6.1.1" />
3232
</ItemGroup>
3333

3434
<ItemGroup>

ECoreNetto.Reporting/ECoreNetto.Reporting.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@
5353

5454
<ItemGroup>
5555
<PackageReference Include="ClosedXML" Version="0.105.0" />
56-
<PackageReference Include="Microsoft.Sbom.Targets" Version="4.1.2" PrivateAssets="all" />
56+
<PackageReference Include="Microsoft.Sbom.Targets" Version="4.1.4" PrivateAssets="all" />
5757
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
5858
</ItemGroup>
5959

6060
<ItemGroup Label="Transitive Dependency overrides">
61-
<PackageReference Include="System.IO.Packaging" Version="9.0.10" />
61+
<PackageReference Include="System.IO.Packaging" Version="10.0.0" />
6262
</ItemGroup>
6363

6464
<ItemGroup>

ECoreNetto.Tests/ECoreNetto.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</PropertyGroup>
1515

1616
<ItemGroup>
17-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
17+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
1818
<PackageReference Include="Moq" Version="4.20.72" />
1919
<PackageReference Include="NUnit" Version="4.4.0" />
2020
<PackageReference Include="NUnit.Console" Version="3.20.2" />
@@ -34,8 +34,8 @@
3434

3535
<ItemGroup>
3636
<PackageReference Include="Serilog" Version="4.3.0" />
37-
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.2" />
38-
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
37+
<PackageReference Include="Serilog.Extensions.Logging" Version="10.0.0" />
38+
<PackageReference Include="Serilog.Sinks.Console" Version="6.1.1" />
3939
</ItemGroup>
4040

4141
<ItemGroup>

ECoreNetto.Tools.Tests/Commands/HtmlReportCommandTestFixture.cs

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@
2121
namespace ECoreNetto.Tools.Tests.Commands
2222
{
2323
using System;
24-
using System.CommandLine.Invocation;
24+
using System.CommandLine;
2525
using System.IO;
26+
using System.Threading;
2627
using System.Threading.Tasks;
2728

2829
using ECoreNetto.Reporting.Generators;
2930
using ECoreNetto.Tools.Commands;
30-
31-
using Moq;
31+
using ECoreNetto.Tools.Services;
3232

33+
using Moq;
3334
using NUnit.Framework;
3435

3536
/// <summary>
@@ -38,24 +39,36 @@ namespace ECoreNetto.Tools.Tests.Commands
3839
[TestFixture]
3940
public class HtmlReportCommandTestFixture
4041
{
42+
private RootCommand rootCommand;
43+
4144
private Mock<IHtmlReportGenerator> htmlReportGenerator;
4245

46+
private Mock<IVersionChecker> versionChecker;
47+
4348
private HtmlReportCommand.Handler handler;
4449

50+
private CancellationTokenSource cts;
51+
4552
[SetUp]
4653
public void SetUp()
4754
{
55+
this.cts = new CancellationTokenSource();
56+
57+
var htmlReportCommand = new HtmlReportCommand();
58+
this.rootCommand = new RootCommand();
59+
this.rootCommand.Add(htmlReportCommand);
60+
4861
this.htmlReportGenerator = new Mock<IHtmlReportGenerator>();
62+
this.versionChecker = new Mock<IVersionChecker>();
4963

5064
this.htmlReportGenerator.Setup(x => x.IsValidReportExtension(It.IsAny<FileInfo>()))
5165
.Returns(new Tuple<bool, string>(true, "valid extension"));
5266

53-
this.handler = new HtmlReportCommand.Handler(
54-
this.htmlReportGenerator.Object);
67+
this.handler = new HtmlReportCommand.Handler(this.htmlReportGenerator.Object, this.versionChecker.Object);
5568
}
5669

5770
[Test]
58-
public void Verify_that_inspect_command_can_be_constructed()
71+
public void Verify_that_HtmlReportCommand_can_be_constructed()
5972
{
6073
Assert.That(() =>
6174
{
@@ -66,42 +79,59 @@ public void Verify_that_inspect_command_can_be_constructed()
6679
[Test]
6780
public async Task Verify_that_InvokeAsync_returns_0()
6881
{
69-
var invocationContext = new InvocationContext(null!);
82+
var args = new[]
83+
{
84+
"html-report",
85+
"--no-logo",
86+
"--input-model", Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "recipe.ecore"),
87+
"--output-report", Path.Combine(TestContext.CurrentContext.TestDirectory, "html-report.html")
88+
};
7089

71-
this.handler.InputModel = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "recipe.ecore"));
72-
this.handler.OutputReport = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "html-report.html"));
90+
var parseResult = this.rootCommand.Parse(args);
7391

74-
var result = await this.handler.InvokeAsync(invocationContext);
92+
var result = await this.handler.InvokeAsync(parseResult, this.cts.Token);
7593

7694
this.htmlReportGenerator.Verify(x => x.GenerateReport(It.IsAny<FileInfo>(), It.IsAny<FileInfo>()), Times.Once);
7795

96+
this.versionChecker.Verify(x => x.ExecuteAsync(It.IsAny<CancellationToken>()), Times.Once);
97+
7898
Assert.That(result, Is.EqualTo(0), "InvokeAsync should return 0 upon success.");
7999
}
80100

81101
[Test]
82102
public async Task Verify_that_when_the_input_ecore_model_does_not_exists_returns_not_0()
83103
{
84-
var invocationContext = new InvocationContext(null!);
104+
var args = new[]
105+
{
106+
"html-report",
107+
"--no-logo",
108+
"--input-model", Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "non-existent.ecore"),
109+
"--output-report", Path.Combine(TestContext.CurrentContext.TestDirectory, "html-report.html")
110+
};
85111

86-
this.handler.InputModel = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "non-existent.ecore"));
87-
this.handler.OutputReport = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "html-report.html"));
112+
var parseResult = this.rootCommand.Parse(args);
88113

89-
var result = await this.handler.InvokeAsync(invocationContext);
114+
var result = await this.handler.InvokeAsync(parseResult, this.cts.Token);
90115

91116
Assert.That(result, Is.EqualTo(-1), "InvokeAsync should return -1 upon failure.");
92117
}
93118

94119
[Test]
95120
public async Task Verify_that_when_the_output_extensions_is_not_supported_returns_not_0()
96121
{
97-
var invocationContext = new InvocationContext(null!);
122+
var args = new[]
123+
{
124+
"html-report",
125+
"--no-logo",
126+
"--input-model", Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "recipe.ecore"),
127+
};
98128

99129
this.htmlReportGenerator.Setup(x => x.IsValidReportExtension(It.IsAny<FileInfo>()))
100130
.Returns(new Tuple<bool, string>(false, "invalid extension"));
101131

102-
this.handler.InputModel = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "recipe.ecore"));
132+
var parseResult = this.rootCommand.Parse(args);
103133

104-
var result = await this.handler.InvokeAsync(invocationContext);
134+
var result = await this.handler.InvokeAsync(parseResult, this.cts.Token);
105135

106136
Assert.That(result, Is.EqualTo(-1), "InvokeAsync should return -1 upon failure.");
107137
}

ECoreNetto.Tools.Tests/Commands/MarkdownReportCommandTestFixture.cs

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@
2121
namespace ECoreNetto.Tools.Tests.Commands
2222
{
2323
using System;
24-
using System.CommandLine.Invocation;
24+
using System.CommandLine;
2525
using System.IO;
26+
using System.Threading;
2627
using System.Threading.Tasks;
2728

2829
using ECoreNetto.Reporting.Generators;
2930
using ECoreNetto.Tools.Commands;
31+
using ECoreNetto.Tools.Services;
3032

3133
using Moq;
32-
3334
using NUnit.Framework;
3435

3536
/// <summary>
@@ -38,24 +39,36 @@ namespace ECoreNetto.Tools.Tests.Commands
3839
[TestFixture]
3940
public class MarkdownReportCommandTestFixture
4041
{
42+
private RootCommand rootCommand;
43+
4144
private Mock<IMarkdownReportGenerator> markdownReportGenerator;
4245

46+
private Mock<IVersionChecker> versionChecker;
47+
4348
private MarkdownReportCommand.Handler handler;
4449

50+
private CancellationTokenSource cts;
51+
4552
[SetUp]
4653
public void SetUp()
4754
{
55+
this.cts = new CancellationTokenSource();
56+
57+
var markdownReportCommand = new MarkdownReportCommand();
58+
this.rootCommand = new RootCommand();
59+
this.rootCommand.Add(markdownReportCommand);
60+
4861
this.markdownReportGenerator = new Mock<IMarkdownReportGenerator>();
62+
this.versionChecker = new Mock<IVersionChecker>();
4963

5064
this.markdownReportGenerator.Setup(x => x.IsValidReportExtension(It.IsAny<FileInfo>()))
5165
.Returns(new Tuple<bool, string>(true, "valid extension"));
5266

53-
this.handler = new MarkdownReportCommand.Handler(
54-
this.markdownReportGenerator.Object);
67+
this.handler = new MarkdownReportCommand.Handler(this.markdownReportGenerator.Object, this.versionChecker.Object);
5568
}
5669

5770
[Test]
58-
public void Verify_that_inspect_command_can_be_constructed()
71+
public void Verify_that_MarkdownReportCommand_can_be_constructed()
5972
{
6073
Assert.That(() =>
6174
{
@@ -66,42 +79,59 @@ public void Verify_that_inspect_command_can_be_constructed()
6679
[Test]
6780
public async Task Verify_that_InvokeAsync_returns_0()
6881
{
69-
var invocationContext = new InvocationContext(null!);
82+
var args = new[]
83+
{
84+
"md-report",
85+
"--no-logo",
86+
"--input-model", Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "recipe.ecore"),
87+
"--output-report", Path.Combine(TestContext.CurrentContext.TestDirectory, "md-report.md")
88+
};
7089

71-
this.handler.InputModel = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "recipe.ecore"));
72-
this.handler.OutputReport = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "md-report.md"));
90+
var parseResult = this.rootCommand.Parse(args);
7391

74-
var result = await this.handler.InvokeAsync(invocationContext);
92+
var result = await this.handler.InvokeAsync(parseResult, this.cts.Token);
7593

7694
this.markdownReportGenerator.Verify(x => x.GenerateReport(It.IsAny<FileInfo>(), It.IsAny<FileInfo>()), Times.Once);
7795

96+
this.versionChecker.Verify(x => x.ExecuteAsync(It.IsAny<CancellationToken>()), Times.Once);
97+
7898
Assert.That(result, Is.EqualTo(0), "InvokeAsync should return 0 upon success.");
7999
}
80100

81101
[Test]
82102
public async Task Verify_that_when_the_input_ecore_model_does_not_exists_returns_not_0()
83103
{
84-
var invocationContext = new InvocationContext(null!);
104+
var args = new[]
105+
{
106+
"md-report",
107+
"--no-logo",
108+
"--input-model", Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "non-existent.ecore"),
109+
"--output-report", Path.Combine(TestContext.CurrentContext.TestDirectory, "md-report.md")
110+
};
85111

86-
this.handler.InputModel = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "non-existent.ecore"));
87-
this.handler.OutputReport = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "md-report.md"));
112+
var parseResult = this.rootCommand.Parse(args);
88113

89-
var result = await this.handler.InvokeAsync(invocationContext);
114+
var result = await this.handler.InvokeAsync(parseResult, this.cts.Token);
90115

91116
Assert.That(result, Is.EqualTo(-1), "InvokeAsync should return -1 upon failure.");
92117
}
93118

94119
[Test]
95120
public async Task Verify_that_when_the_output_extensions_is_not_supported_returns_not_0()
96121
{
97-
var invocationContext = new InvocationContext(null!);
122+
var args = new[]
123+
{
124+
"md-report",
125+
"--no-logo",
126+
"--input-model", Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "recipe.ecore"),
127+
};
98128

99129
this.markdownReportGenerator.Setup(x => x.IsValidReportExtension(It.IsAny<FileInfo>()))
100130
.Returns(new Tuple<bool, string>(false, "invalid extension"));
101131

102-
this.handler.InputModel = new FileInfo(Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "recipe.ecore"));
132+
var parseResult = this.rootCommand.Parse(args);
103133

104-
var result = await this.handler.InvokeAsync(invocationContext);
134+
var result = await this.handler.InvokeAsync(parseResult, this.cts.Token);
105135

106136
Assert.That(result, Is.EqualTo(-1), "InvokeAsync should return -1 upon failure.");
107137
}

0 commit comments

Comments
 (0)