Skip to content

Commit e7030ce

Browse files
authored
migrate to Shouldly (#129)
1 parent 5acb8c7 commit e7030ce

File tree

5 files changed

+45
-41
lines changed

5 files changed

+45
-41
lines changed

build/_build.csproj.DotSettings

+4-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_SIMPLE_ANONYMOUSMETHOD_ON_SINGLE_LINE/@EntryValue">False</s:Boolean>
1515
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
1616
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
17+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=4a98fdf6_002D7d98_002D4f5a_002Dafeb_002Dea44ad98c70c/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
18+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=f9fce829_002De6f4_002D4cb2_002D80f1_002D5497c44f51df/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
1719
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
1820
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
1921
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
@@ -22,4 +24,5 @@
2224
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
2325
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
2426
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
25-
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
27+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
28+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

source/Octopus.CommandLine.sln.DotSettings

+4
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@
198198
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=MethodPropertyEvent/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb_AaBb" /&gt;&lt;/Policy&gt;</s:String>
199199
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
200200
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
201+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=4a98fdf6_002D7d98_002D4f5a_002Dafeb_002Dea44ad98c70c/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
202+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=f9fce829_002De6f4_002D4cb2_002D80f1_002D5497c44f51df/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
201203
<s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FFUNCTION/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb"&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
202204
<s:Boolean x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=51E37CF4DE77F64A830378E926DCF3FE/@KeyIndexDefined">True</s:Boolean>
203205
<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=51E37CF4DE77F64A830378E926DCF3FE/AbsolutePath/@EntryValue">F:\OctopusGit\OctopusDeploy\source\Octopus.sln.DotSettings</s:String>
@@ -210,11 +212,13 @@
210212
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
211213
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpRenamePlacementToArrangementMigration/@EntryIndexedValue">True</s:Boolean>
212214
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
215+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002EMemberReordering_002EMigrations_002ECSharpFileLayoutPatternRemoveIsAttributeUpgrade/@EntryIndexedValue">True</s:Boolean>
213216
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
214217
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAlwaysTreatStructAsNotReorderableMigration/@EntryIndexedValue">True</s:Boolean>
215218
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
216219
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
217220
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
221+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean>
218222
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EXml_002ECodeStyle_002EFormatSettingsUpgrade_002EXmlMoveToCommonFormatterSettingsUpgrade/@EntryIndexedValue">True</s:Boolean>
219223
<s:Boolean x:Key="/Default/Environment/UnitTesting/SaveSessionState/@EntryValue">False</s:Boolean>
220224
<s:Boolean x:Key="/Default/Environment/UnitTesting/ShadowCopy/@EntryValue">False</s:Boolean>

source/Tests/Commands/CompleteCommandFixture.cs

+26-28
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System;
22
using System.IO;
33
using System.Threading.Tasks;
4-
using FluentAssertions;
4+
using Shouldly;
55
using NSubstitute;
66
using NUnit.Framework;
77
using Octopus.CommandLine;
@@ -32,11 +32,10 @@ public void SetUp()
3232
logger = new LoggerConfiguration().WriteTo.TextWriter(output).CreateLogger();
3333
commandOutputProvider = new CommandOutputProvider("TestApp", "1.0.0", new DefaultCommandOutputJsonSerializer(), logger);
3434
commandLocator.List()
35-
.Returns(new ICommandMetadata[]
36-
{
35+
.Returns([
3736
new CommandAttribute("test"),
3837
new CommandAttribute("help")
39-
});
38+
]);
4039
var helpCommand = new HelpCommand(new Lazy<ICommandLocator>(() => commandLocator), commandOutputProvider);
4140
var testCommand = new TestCommand(commandOutputProvider);
4241
commandLocator.Find("help").Returns(helpCommand);
@@ -47,59 +46,59 @@ public void SetUp()
4746
[Test]
4847
public async Task ShouldReturnSubCommandSuggestions()
4948
{
50-
await completeCommand.Execute(new[] { "he" });
51-
49+
await completeCommand.Execute(["he"]);
5250
output.ToString()
53-
.Should()
54-
.Contain("help")
55-
.And.NotContain("test");
51+
.ShouldSatisfyAllConditions(
52+
actual => actual.ShouldContain("help"),
53+
actual => actual.ShouldNotContain("test")
54+
);
5655
}
5756

5857
[Test]
5958
public async Task ShouldReturnParameterSuggestions()
6059
{
61-
await completeCommand.Execute(new[] { "test", "--ap" });
60+
await completeCommand.Execute(["test", "--ap"]);
6261
output.ToString()
63-
.Should()
64-
.Contain("--apiKey");
62+
.ShouldContain("--apiKey");
6563
}
6664

6765
[Test]
6866
public async Task ShouldReturnCommonOptionsWhenSingleEmptyParameter()
6967
{
70-
await completeCommand.Execute(new[] { "--" });
68+
await completeCommand.Execute(["--"]);
7169
output.ToString()
72-
.Should()
73-
.Contain("--helpOutputFormat");
70+
.ShouldContain("--helpOutputFormat");
7471
}
7572

7673
[Test]
7774
public async Task ShouldReturnOptionSuggestions()
7875
{
79-
await completeCommand.Execute(new[] { "--helpOut" });
76+
await completeCommand.Execute(["--helpOut"]);
77+
8078
output.ToString()
81-
.Should()
82-
.Contain("--helpOutputFormat")
83-
.And.NotContain("--help\n");
79+
.ShouldSatisfyAllConditions(
80+
actual => actual.ShouldContain("--helpOutputFormat"),
81+
actual => actual.ShouldNotContain("--help\n")
82+
);
8483
}
8584

8685
[Test]
8786
public async Task ShouldReturnAllSubCommandsWhenEmptyArguments()
8887
{
89-
await completeCommand.Execute(new[] { "" });
88+
await completeCommand.Execute([""]);
9089
output.ToString()
91-
.Should()
92-
.Contain("help")
93-
.And.Contain("test");
90+
.ShouldSatisfyAllConditions(
91+
actual => actual.ShouldContain("help"),
92+
actual => actual.ShouldContain("test")
93+
);
9494
}
9595

9696
[Test]
9797
public async Task ShouldStopSubCommandCompletionAfterOptionSuggestion()
9898
{
99-
await completeCommand.Execute(new[] { "test", "--api", "API-KEY", "--u" });
99+
await completeCommand.Execute(["test", "--api", "API-KEY", "--u"]);
100100
output.ToString()
101-
.Should()
102-
.Contain("--url");
101+
.ShouldContain("--url");
103102
}
104103

105104
[Test]
@@ -109,8 +108,7 @@ public async Task SupportsHelpOption(string commandLine)
109108
{
110109
await completeCommand.Execute(commandLine.Split(' '));
111110
output.ToString()
112-
.Should()
113-
.Contain("Where <command> is the current command line to filter auto-completions");
111+
.ShouldContain("Where <command> is the current command line to filter auto-completions");
114112
}
115113

116114
[TearDown]

source/Tests/Commands/HelpCommandFixture.cs

+10-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using System;
22
using System.IO;
3-
using FluentAssertions;
3+
using Shouldly;
44
using NSubstitute;
55
using NUnit.Framework;
66
using Octopus.CommandLine;
@@ -37,19 +37,19 @@ public void SetUp()
3737
public void ShouldPrintGeneralHelpWhenNoArgsGiven()
3838
{
3939
commandLocator.List()
40-
.Returns(new ICommandMetadata[]
41-
{
40+
.Returns([
4241
new Metadata { Name = "create-foo" },
4342
new Metadata { Name = "create-bar" }
44-
});
43+
]);
4544

4645
helpCommand.Execute();
4746

4847
output.ToString()
49-
.Should()
50-
.MatchRegex(@"Usage: (dotnet|testhost.*|ReSharperTestRunner64) <command> \[<options>\]")
51-
.And.Contain("Where <command> is one of:")
52-
.And.Contain("create-foo");
48+
.ShouldSatisfyAllConditions(
49+
actual => actual.ShouldMatch(@"Usage: (dotnet|testhost.*|ReSharperTestRunner64) <command> \[<options>\]"),
50+
actual => actual.ShouldContain("Where <command> is one of:"),
51+
actual => actual.ShouldContain("create-foo")
52+
);
5353
}
5454

5555
[Test]
@@ -60,8 +60,7 @@ public void ShouldPrintHelpForExistingCommand()
6060
helpCommand.Execute("speak");
6161

6262
output.ToString()
63-
.Should()
64-
.MatchRegex(@"Usage: (dotnet|testhost.*|ReSharperTestRunner64) speak \[<options>\]");
63+
.ShouldMatch(@"Usage: (dotnet|testhost.*|ReSharperTestRunner64) speak \[<options>\]");
6564
}
6665

6766
[Test]
@@ -70,7 +69,7 @@ public void ShouldFailForUnrecognisedCommand()
7069
commandLocator.Find("foo").Returns((ICommand)null);
7170
helpCommand.Execute("foo");
7271

73-
Assert.That(output.ToString(), Does.Contain("Command 'foo' is not supported"));
72+
output.ToString().ShouldContain("Command 'foo' is not supported");
7473
}
7574

7675
[TearDown]

source/Tests/Tests.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<PackageReference Include="Serilog" Version="4.2.0" />
1212
<PackageReference Include="Serilog.Sinks.TextWriter" Version="3.0.0" />
1313
<PackageReference Include="NSubstitute" Version="5.3.0" />
14-
<PackageReference Include="FluentAssertions" Version="7.2.0" />
14+
<PackageReference Include="Shouldly" Version="4.3.0" />
1515
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0" />
1616
<PackageReference Include="TeamCity.VSTest.TestAdapter" Version="1.0.41" />
1717
</ItemGroup>

0 commit comments

Comments
 (0)