From f1c89fa2af48e42808aa982245701bdf09d9420f Mon Sep 17 00:00:00 2001 From: Paul Broadwith Date: Wed, 31 May 2023 22:41:18 +0100 Subject: [PATCH 01/52] (#3177) Remove LocalOnly from help text --- .../infrastructure.app/commands/ChocolateyListCommand.cs | 2 +- .../infrastructure.app/commands/ChocolateySearchCommand.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyListCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyListCommand.cs index e73024377..9e37dd568 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyListCommand.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyListCommand.cs @@ -95,7 +95,7 @@ public virtual void ConfigureArgumentParser(OptionSet optionSet, ChocolateyConfi "Prerelease - Include Prereleases? Defaults to false.", option => configuration.Prerelease = option != null) .Add("i|includeprograms|include-programs", - "IncludePrograms - Used in conjunction with LocalOnly, filters out apps chocolatey has listed as packages and includes those in the list. Defaults to false.", + "IncludePrograms - Filters out apps Chocolatey has listed as packages and includes those in the list. Defaults to false.", option => configuration.ListCommand.IncludeRegistryPrograms = option != null) .Add("version=", "Version - Specific version of a package to return.", diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateySearchCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateySearchCommand.cs index 417bd41ef..28c3368a7 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateySearchCommand.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateySearchCommand.cs @@ -51,7 +51,7 @@ public virtual void ConfigureArgumentParser(OptionSet optionSet, ChocolateyConfi "Prerelease - Include Prereleases? Defaults to false.", option => configuration.Prerelease = option != null) .Add("i|includeprograms|include-programs", // Should this parameter be deprecated on Search? - "IncludePrograms - Used in conjunction with LocalOnly, filters out apps chocolatey has listed as packages and includes those in the list. Defaults to false.", + "IncludePrograms - Filters out apps Chocolatey has listed as packages and includes those in the list. Defaults to false.", option => configuration.ListCommand.IncludeRegistryPrograms = option != null) .Add("a|all|allversions|all-versions", "AllVersions - include results from all versions.", From f958e897aa23a8ee468daa50d46ce2358b88d84b Mon Sep 17 00:00:00 2001 From: Paul Broadwith Date: Thu, 1 Jun 2023 22:26:43 +0100 Subject: [PATCH 02/52] (maint) Fix issue and PR labels --- .github/workflows/stale.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 0ffccb49d..6e9bc471f 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -20,11 +20,11 @@ jobs: exempt-all-assignees: false exempt-draft-pr: true stale-issue-label: "Pending Closure" - stale-pr-label: '0 - Waiting on User' - only-pr-labels: '0 - Waiting on User' + stale-pr-label: 'Pending Closure' + only-labels: '0 - Waiting on User' close-issue-label: "No Response / Stale" close-pr-label: "No Response / Stale" - exempt-issue-labels: 'Security / CVE,0 - Backlog,1 - Ready for work,2 - Working,3 - Review,4 - Done,5 - Push required' + exempt-issue-labels: 'Security / CVE' exempt-pr-labels: 'Security / CVE' labels-to-remove-when-unstale: '0 - Wating on User,Pending closure' stale-issue-message: | From f52fc14a42c1b0ae9134117765ed7a51d722fe67 Mon Sep 17 00:00:00 2001 From: Rain Sallow Date: Wed, 31 May 2023 15:04:18 -0400 Subject: [PATCH 03/52] (#3174) Apply version number normalizing consistently Went through all references to `ToStringSafe` which were being called on a NuGetVersion instance and changed them all to `ToNormalizedStringChecked`. Additionally, found a place in the upgrade dry-run code that was just missing a call to this method and outputting a non-normalized version string and added it. --- .../scenarios/InstallScenarios.cs | 72 +++++------ .../scenarios/UninstallScenarios.cs | 7 +- .../scenarios/UpgradeScenarios.cs | 122 +++++++++--------- .../services/AutomaticUninstallerService.cs | 2 +- .../ChocolateyPackageInformationService.cs | 5 +- .../services/ChocolateyPackageService.cs | 7 +- .../services/NugetService.cs | 10 +- .../services/PowershellService.cs | 4 +- .../services/TemplateService.cs | 2 +- .../infrastructure/results/PackageResult.cs | 8 +- 10 files changed, 119 insertions(+), 120 deletions(-) diff --git a/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs b/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs index 674e86089..daa4a6ca0 100644 --- a/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs @@ -196,7 +196,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual(TestVersion()); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual(TestVersion()); } } @@ -556,7 +556,7 @@ public void Should_still_have_the_expected_version_of_the_package_installed() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -641,7 +641,7 @@ public void Should_install_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -834,7 +834,7 @@ public void Should_reinstall_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -934,7 +934,7 @@ public void Should_still_have_the_package_installed_with_the_expected_version_of var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1479,7 +1479,7 @@ public void Should_install_the_expected_version_of_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1575,7 +1575,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1593,7 +1593,7 @@ public void Should_not_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1696,7 +1696,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1723,7 +1723,7 @@ public void Should_reinstall_the_floating_dependency_with_the_latest_version_tha var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1733,7 +1733,7 @@ public void Should_reinstall_the_exact_same_version_of_the_exact_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1821,7 +1821,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1839,7 +1839,7 @@ public void Should_not_touch_the_floating_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1849,7 +1849,7 @@ public void Should_not_touch_the_exact_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1938,7 +1938,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2142,7 +2142,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); } } @@ -2232,7 +2232,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.6.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.6.0"); } } @@ -2250,7 +2250,7 @@ public void Should_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -2400,7 +2400,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.6.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.6.0"); } } @@ -2477,7 +2477,7 @@ public void Should_not_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2601,7 +2601,7 @@ public void Should_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.1"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.1"); } } @@ -2687,7 +2687,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2697,7 +2697,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2799,7 +2799,7 @@ public void Should_not_downgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } @@ -2916,7 +2916,7 @@ public void Should_install_the_expected_version_of_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "childdependencywithlooserversiondependency", "childdependencywithlooserversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2926,7 +2926,7 @@ public void Should_install_the_expected_version_of_the_constrained_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3323,7 +3323,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3439,7 +3439,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3552,7 +3552,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3808,7 +3808,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -4510,7 +4510,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -4618,7 +4618,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -4799,7 +4799,7 @@ public void Config_should_match_package_result_name() [Fact] public void Result_should_have_the_correct_version() { - _packageResult.Version.ShouldEqual(NonNormalizedVersion); + _packageResult.Version.ShouldEqual(NormalizedVersion); } [Fact] @@ -4807,7 +4807,7 @@ public void Result_should_have_the_correct_version() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - var message = "installpackage v{0} has been installed".FormatWith(NonNormalizedVersion); + var message = "installpackage v{0} has been installed".FormatWith(NormalizedVersion); MockLogger.ContainsMessage(message, LogLevel.Info).ShouldBeTrue(); } @@ -4984,7 +4984,7 @@ public void Should_install_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", TargetPackageName, "{0}.nupkg".FormatWith(TargetPackageName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } @@ -4994,7 +4994,7 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", DependencyName, "{0}.nupkg".FormatWith(DependencyName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } diff --git a/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs b/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs index cfa932c66..55d758233 100644 --- a/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs @@ -1448,7 +1448,8 @@ public class When_uninstalling_a_package_with_non_normalized_version : Scenarios { private PackageResult packageResult; - private string NonNormalizedVersion = "0004.0004.00005.00"; + private const string NonNormalizedVersion = "0004.0004.00005.00"; + private const string NormalizedVersion = "4.4.5"; public override void Context() { @@ -1550,7 +1551,7 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NonNormalizedVersion), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NormalizedVersion), LogLevel.Info).ShouldBeTrue(); } [Fact] @@ -1558,7 +1559,7 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("upgradepackage {0} Uninstalled".FormatWith(NonNormalizedVersion), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage {0} Uninstalled".FormatWith(NormalizedVersion), LogLevel.Info).ShouldBeTrue(); } } diff --git a/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs b/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs index a33028e7d..b871922ce 100644 --- a/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs @@ -248,7 +248,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -507,7 +507,7 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -908,7 +908,7 @@ public void Should_upgrade_the_package() version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); version.OriginalVersion.ToStringSafe().ShouldEqual("1.1.1-beta2"); - version.ToStringSafe().ShouldEqual("1.1.1-beta2"); + version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta2"); } } @@ -1066,7 +1066,7 @@ public void Should_upgrade_the_package() version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); version.OriginalVersion.ToStringSafe().ShouldEqual("1.1.1-beta.1"); - version.ToStringSafe().ShouldEqual("1.1.1-beta.1"); + version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta.1"); } } @@ -1223,7 +1223,7 @@ public void Should_upgrade_the_package() version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); version.OriginalVersion.ToStringSafe().ShouldEqual("1.1.1-beta2"); - version.ToStringSafe().ShouldEqual("1.1.1-beta2"); + version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta2"); } } @@ -1389,7 +1389,7 @@ public void Should_be_the_same_version_of_the_package() var version = packageReader.NuspecReader.GetVersion(); version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); version.OriginalVersion.ShouldEqual("1.1.1-beta"); - version.ToStringSafe().ShouldEqual("1.1.1-beta"); + version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta"); } } @@ -1487,7 +1487,7 @@ public void Should_be_the_same_version_of_the_package() var version = packageReader.NuspecReader.GetVersion(); version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); version.OriginalVersion.ShouldEqual("1.1.1-beta"); - version.ToStringSafe().ShouldEqual("1.1.1-beta"); + version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta"); } } @@ -1552,7 +1552,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -1692,7 +1692,7 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1784,7 +1784,7 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -1875,7 +1875,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -1989,7 +1989,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -2125,7 +2125,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2211,7 +2211,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -2294,7 +2294,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -2626,7 +2626,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2644,7 +2644,7 @@ public void Should_have_the_erroring_upgraded_package_in_the_lib_bad_directory() var packageFile = Path.Combine(Scenario.get_top_level(), "lib-bad", Configuration.PackageNames, "2.0.0", Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } @@ -2741,7 +2741,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); } } @@ -2751,7 +2751,7 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); } } @@ -2761,7 +2761,7 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } @@ -2829,7 +2829,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2839,7 +2839,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2849,7 +2849,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2956,7 +2956,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); } } @@ -2966,7 +2966,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -2976,7 +2976,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3044,7 +3044,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -3054,7 +3054,7 @@ public void Should_not_upgrade_the_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3064,7 +3064,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3132,7 +3132,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); } } @@ -3142,7 +3142,7 @@ public void Should_upgrade_the_parent_package_to_highest_version_that_meets_new_ var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); } } @@ -3152,7 +3152,7 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } @@ -3222,7 +3222,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); } } @@ -3232,7 +3232,7 @@ public void Should_upgrade_the_parent_package_to_highest_version_that_meets_new_ var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); } } @@ -3242,7 +3242,7 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } @@ -3312,7 +3312,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -3322,7 +3322,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3332,7 +3332,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3420,7 +3420,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -3430,7 +3430,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3440,7 +3440,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3529,7 +3529,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -3539,7 +3539,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3549,7 +3549,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3636,7 +3636,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3646,7 +3646,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3656,7 +3656,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); } } @@ -3740,7 +3740,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -3843,7 +3843,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -4022,7 +4022,7 @@ public void Should_upgrade_upgradepackage() var version = packageReader.NuspecReader.GetVersion(); version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); version.OriginalVersion.ShouldEqual("1.1.1-beta2"); - version.ToStringSafe().ShouldEqual("1.1.1-beta2"); + version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta2"); } } @@ -4077,7 +4077,7 @@ public void Should_not_upgrade_upgradepackage() var version = packageReader.NuspecReader.GetVersion(); version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); version.OriginalVersion.ShouldEqual("1.1.1-beta"); - version.ToStringSafe().ShouldEqual("1.1.1-beta"); + version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta"); } } @@ -4153,7 +4153,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.1-beta.1"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.1-beta.1"); } } @@ -4332,7 +4332,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } @@ -4478,7 +4478,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -4688,7 +4688,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -4824,7 +4824,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); } } @@ -5039,7 +5039,7 @@ public void Config_should_match_package_result_name() [Fact] public void Should_match_the_upgrade_version() { - _packageResult.Version.ShouldEqual(NonNormalizedVersion); + _packageResult.Version.ShouldEqual(NormalizedVersion); } [Fact] @@ -5057,7 +5057,7 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) - .Any(p => p.EndsWith("upgradepackage {0} Installed".FormatWith(NonNormalizedVersion))) + .Any(p => p.EndsWith("upgradepackage {0} Installed".FormatWith(NormalizedVersion))) .ShouldBeTrue(); } @@ -5070,7 +5070,7 @@ public void Should_not_have_executed_chocolateyUninstall_script_for_original_pac [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NonNormalizedVersion), LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NormalizedVersion), LogLevel.Info).ShouldBeFalse(); } [Fact] @@ -5078,7 +5078,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage {0} Installed".FormatWith(NonNormalizedVersion), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage {0} Installed".FormatWith(NormalizedVersion), LogLevel.Info).ShouldBeTrue(); } } @@ -5167,7 +5167,7 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", DependencyName, "{0}.nupkg".FormatWith(DependencyName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); } } diff --git a/src/chocolatey/infrastructure.app/services/AutomaticUninstallerService.cs b/src/chocolatey/infrastructure.app/services/AutomaticUninstallerService.cs index db493c2f4..84c28b402 100644 --- a/src/chocolatey/infrastructure.app/services/AutomaticUninstallerService.cs +++ b/src/chocolatey/infrastructure.app/services/AutomaticUninstallerService.cs @@ -102,7 +102,7 @@ public void Run(PackageResult packageResult, ChocolateyConfiguration config) foreach (var key in registryKeys.OrEmpty()) { - var packageCacheLocation = _fileSystem.CombinePaths(_fileSystem.GetFullPath(config.CacheLocation), package.Id, package.Version.ToStringSafe()); + var packageCacheLocation = _fileSystem.CombinePaths(_fileSystem.GetFullPath(config.CacheLocation), package.Id, package.Version.ToNormalizedStringChecked()); Remove(key, config, packageResult, packageCacheLocation); } } diff --git a/src/chocolatey/infrastructure.app/services/ChocolateyPackageInformationService.cs b/src/chocolatey/infrastructure.app/services/ChocolateyPackageInformationService.cs index 4450823e6..37eaeee37 100644 --- a/src/chocolatey/infrastructure.app/services/ChocolateyPackageInformationService.cs +++ b/src/chocolatey/infrastructure.app/services/ChocolateyPackageInformationService.cs @@ -225,7 +225,7 @@ public void Save(ChocolateyPackageInformation packageInformation) { var versionOverrideFile = _fileSystem.CombinePaths(pkgStorePath, VersionOverrideFile); if (_fileSystem.FileExists(versionOverrideFile)) _fileSystem.DeleteFile(versionOverrideFile); - _fileSystem.WriteFile(versionOverrideFile, packageInformation.VersionOverride.ToStringSafe()); + _fileSystem.WriteFile(versionOverrideFile, packageInformation.VersionOverride.ToNormalizedStringChecked()); } else { @@ -266,6 +266,9 @@ private static string GetStorePath(IFileSystem fileSystem, string id, NuGetVersi return preferredStorePath; } + // Legacy handling for old package versions that was installed prior to v2.0.0. + // Do not remove the call to `ToStringSafe`. + var pkgStorePath = fileSystem.CombinePaths(ApplicationParameters.ChocolateyPackageInfoStoreLocation, "{0}.{1}".FormatWith(id, version.ToStringSafe())); if (fileSystem.DirectoryExists(pkgStorePath)) diff --git a/src/chocolatey/infrastructure.app/services/ChocolateyPackageService.cs b/src/chocolatey/infrastructure.app/services/ChocolateyPackageService.cs index 21912f20a..e79199659 100644 --- a/src/chocolatey/infrastructure.app/services/ChocolateyPackageService.cs +++ b/src/chocolatey/infrastructure.app/services/ChocolateyPackageService.cs @@ -1,4 +1,4 @@ -// Copyright © 2017 - 2023 Chocolatey Software, Inc +// Copyright © 2017 - 2023 Chocolatey Software, Inc // Copyright © 2011 - 2017 RealDimensions Software, LLC // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -1312,11 +1312,6 @@ private int ReportActionSummary(ConcurrentDictionary pack public virtual void HandlePackageUninstall(PackageResult packageResult, ChocolateyConfiguration config) { - if (!_fileSystem.DirectoryExists(packageResult.InstallLocation)) - { - packageResult.InstallLocation += ".{0}".FormatWith(packageResult.PackageMetadata.Version.ToStringSafe()); - } - //These items only apply to windows systems. if (config.Information.PlatformType == PlatformType.Windows) { diff --git a/src/chocolatey/infrastructure.app/services/NugetService.cs b/src/chocolatey/infrastructure.app/services/NugetService.cs index 034914808..647d2d0cb 100644 --- a/src/chocolatey/infrastructure.app/services/NugetService.cs +++ b/src/chocolatey/infrastructure.app/services/NugetService.cs @@ -1136,7 +1136,7 @@ public virtual void EnsureBackupDirectoryRemoved(string packageName) } else { - this.Log().Info("{0}|{1}|{2}|{3}".FormatWith(installedPackage.PackageMetadata.Id, installedPackage.Version, availablePackage.Identity.Version, isPinned.ToStringSafe().ToLowerSafe())); + this.Log().Info("{0}|{1}|{2}|{3}".FormatWith(installedPackage.PackageMetadata.Id, installedPackage.Version, availablePackage.Identity.Version.ToNormalizedStringChecked(), isPinned.ToStringSafe().ToLowerSafe())); } } @@ -1858,7 +1858,7 @@ public virtual void BackupChangedFiles(string packageInstallPath, ChocolateyConf { if (packageInfo == null || packageInfo.Package == null) return; - var version = packageInfo.Package.Version.ToStringSafe(); + var version = packageInfo.Package.Version.ToNormalizedStringChecked(); if (packageInfo.FilesSnapshot == null || packageInfo.FilesSnapshot.Files.Count == 0) { @@ -1923,7 +1923,7 @@ private void RemoveShimgenDirectors(IPackageMetadata installedPackage) private void RemovePackageFromCache(ChocolateyConfiguration config, IPackageMetadata installedPackage) { this.Log().Debug(ChocolateyLoggers.Verbose, "Ensuring removal of package cache files."); - var cacheDirectory = _fileSystem.CombinePaths(config.CacheLocation, installedPackage.Id, installedPackage.Version.ToStringSafe()); + var cacheDirectory = _fileSystem.CombinePaths(config.CacheLocation, installedPackage.Id, installedPackage.Version.ToNormalizedStringChecked()); if (!_fileSystem.DirectoryExists(cacheDirectory)) return; @@ -1952,8 +1952,8 @@ protected void RemovePackageFromNugetCache(IPackageSearchMetadata installedPacka FaultTolerance.TryCatchWithLoggingException( () => { - var packageFolderPath = _fileSystem.CombinePaths(tempFolder, "{0}/{1}".FormatWith(installedPackage.Identity.Id, installedPackage.Identity.Version.ToStringSafe())); - var nugetCachedFile = _fileSystem.CombinePaths(packageFolderPath, "{0}.{1}.nupkg".FormatWith(installedPackage.Identity.Id, installedPackage.Identity.Version.ToStringSafe())); + var packageFolderPath = _fileSystem.CombinePaths(tempFolder, "{0}/{1}".FormatWith(installedPackage.Identity.Id, installedPackage.Identity.Version.ToNormalizedStringChecked())); + var nugetCachedFile = _fileSystem.CombinePaths(packageFolderPath, "{0}.{1}.nupkg".FormatWith(installedPackage.Identity.Id, installedPackage.Identity.Version.ToNormalizedStringChecked())); var nupkgMetaDataFile = _fileSystem.CombinePaths(packageFolderPath, ".nupkg.metadata"); var nupkgShaFile = nugetCachedFile + ".sha512"; diff --git a/src/chocolatey/infrastructure.app/services/PowershellService.cs b/src/chocolatey/infrastructure.app/services/PowershellService.cs index 90b5835a0..f1da6a2c0 100644 --- a/src/chocolatey/infrastructure.app/services/PowershellService.cs +++ b/src/chocolatey/infrastructure.app/services/PowershellService.cs @@ -444,8 +444,8 @@ public void PreparePowerShellEnvironment(IPackageSearchMetadata package, Chocola Environment.SetEnvironmentVariable("packageName", package.Identity.Id); Environment.SetEnvironmentVariable("chocolateyPackageTitle", package.Title); Environment.SetEnvironmentVariable("packageTitle", package.Title); - Environment.SetEnvironmentVariable("chocolateyPackageVersion", package.Identity.Version.ToStringSafe()); - Environment.SetEnvironmentVariable("packageVersion", package.Identity.Version.ToStringSafe()); + Environment.SetEnvironmentVariable("chocolateyPackageVersion", package.Identity.Version.ToNormalizedStringChecked()); + Environment.SetEnvironmentVariable("packageVersion", package.Identity.Version.ToNormalizedStringChecked()); Environment.SetEnvironmentVariable("chocolateyPackageVersionPrerelease", package.Identity.Version.Release.ToStringSafe()); Environment.SetEnvironmentVariable("chocolateyPackageVersionPackageRelease", package.Identity.Version.Version.ToStringSafe()); diff --git a/src/chocolatey/infrastructure.app/services/TemplateService.cs b/src/chocolatey/infrastructure.app/services/TemplateService.cs index c10014be5..5e1732889 100644 --- a/src/chocolatey/infrastructure.app/services/TemplateService.cs +++ b/src/chocolatey/infrastructure.app/services/TemplateService.cs @@ -282,7 +282,7 @@ protected void ListCustomTemplateInformation(ChocolateyConfiguration configurati var templateInstalledViaPackage = (pkg != null); - var pkgVersion = templateInstalledViaPackage ? pkg.Identity.Version.ToStringSafe() : "0.0.0"; + var pkgVersion = templateInstalledViaPackage ? pkg.Identity.Version.ToNormalizedStringChecked() : "0.0.0"; var pkgTitle = templateInstalledViaPackage ? pkg.Title : "{0} (Unmanaged)".FormatWith(configuration.TemplateCommand.Name); var pkgSummary = templateInstalledViaPackage ? (pkg.Summary != null && !string.IsNullOrWhiteSpace(pkg.Summary.ToStringSafe()) ? "{0}".FormatWith(pkg.Summary.EscapeCurlyBraces().ToStringSafe()) : string.Empty) : string.Empty; diff --git a/src/chocolatey/infrastructure/results/PackageResult.cs b/src/chocolatey/infrastructure/results/PackageResult.cs index f7b1f0d35..28b6621cc 100644 --- a/src/chocolatey/infrastructure/results/PackageResult.cs +++ b/src/chocolatey/infrastructure/results/PackageResult.cs @@ -55,16 +55,16 @@ public void ResetMetadata(IPackageMetadata metadata, IPackageSearchMetadata sear PackageMetadata = metadata; SearchMetadata = search; Name = metadata.Id; - Version = metadata.Version.ToStringSafe(); + Version = metadata.Version.ToNormalizedStringChecked(); } - public PackageResult(IPackageMetadata packageMetadata, string installLocation, string source = null) : this(packageMetadata.Id, packageMetadata.Version.ToStringSafe(), installLocation) + public PackageResult(IPackageMetadata packageMetadata, string installLocation, string source = null) : this(packageMetadata.Id, packageMetadata.Version.ToNormalizedStringChecked(), installLocation) { PackageMetadata = packageMetadata; Source = source; } - public PackageResult(IPackageSearchMetadata packageSearch, string installLocation, string source = null) : this(packageSearch.Identity.Id, packageSearch.Identity.Version.ToStringSafe(), installLocation) + public PackageResult(IPackageSearchMetadata packageSearch, string installLocation, string source = null) : this(packageSearch.Identity.Id, packageSearch.Identity.Version.ToNormalizedStringChecked(), installLocation) { SearchMetadata = packageSearch; Source = source; @@ -103,7 +103,7 @@ public PackageResult(IPackageSearchMetadata packageSearch, string installLocatio */ } - public PackageResult(IPackageMetadata packageMetadata, IPackageSearchMetadata packageSearch, string installLocation, string source = null) : this(packageMetadata.Id, packageMetadata.Version.ToStringSafe(), installLocation) + public PackageResult(IPackageMetadata packageMetadata, IPackageSearchMetadata packageSearch, string installLocation, string source = null) : this(packageMetadata.Id, packageMetadata.Version.ToNormalizedStringChecked(), installLocation) { SearchMetadata = packageSearch; PackageMetadata = packageMetadata; From 20294e8e4d930fb253e2d3d319727ca4b1a692d6 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Mon, 5 Jun 2023 09:55:41 +0100 Subject: [PATCH 04/52] (#3183) Ensure ChocolateySourceCacheContext in use In order to prevent a 1 second delay being imposed on each outgoing query, we need to make sure that an instance of a ChocolateySourceCacheContext is passed into every method that is called within the Chocolatey.NuGet.Client libraries. In order for this to work changes were needed to be made in the Chocolatey.NuGet.Client libraries to provide the overrides for all of these methods. This commit addresses issues that were reported with the 2.0.0 release of Chocolatey CLI, where performance of commands was significantly slower than on v1.4.0. --- .../nuget/NuGetEndpointResources.cs | 22 +++++++++++++++---- .../infrastructure.app/nuget/NugetCommon.cs | 16 ++++++++++++-- .../infrastructure.app/nuget/NugetList.cs | 15 ++++++++----- .../infrastructure.app/nuget/NugetPush.cs | 8 ++++++- .../services/NugetService.cs | 22 ++++++++++--------- .../services/TemplateService.cs | 2 +- 6 files changed, 62 insertions(+), 23 deletions(-) diff --git a/src/chocolatey/infrastructure.app/nuget/NuGetEndpointResources.cs b/src/chocolatey/infrastructure.app/nuget/NuGetEndpointResources.cs index 8143077a9..e93e9b0be 100644 --- a/src/chocolatey/infrastructure.app/nuget/NuGetEndpointResources.cs +++ b/src/chocolatey/infrastructure.app/nuget/NuGetEndpointResources.cs @@ -26,6 +26,7 @@ public sealed class NuGetEndpointResources private static readonly ConcurrentDictionary _cachedResources = new ConcurrentDictionary(); private bool _resolvingFailed; + private readonly ChocolateySourceCacheContext _cacheContext; private readonly Lazy _dependencyInfoResource; private readonly Lazy _downloadResource; private readonly Lazy _findPackageResource; @@ -34,10 +35,11 @@ public sealed class NuGetEndpointResources private readonly Lazy _packageUpdateResource; private readonly Lazy _searchResource; - private NuGetEndpointResources(SourceRepository _sourceRepository) + private NuGetEndpointResources(SourceRepository _sourceRepository, ChocolateySourceCacheContext cacheContext) { Source = _sourceRepository; + _cacheContext = cacheContext; _dependencyInfoResource = new Lazy(() => ResolveResource()); _downloadResource = new Lazy(() => ResolveResource()); _findPackageResource = new Lazy(() => ResolveResource()); @@ -105,21 +107,33 @@ public PackageSearchResource SearchResource public SourceRepository Source { get; private set; } + [Obsolete("This overload is deprecated and will be removed in v3.")] public static NuGetEndpointResources GetResourcesBySource(SourceRepository source) + { + return GetResourcesBySource(source, cacheContext: null); + } + + public static NuGetEndpointResources GetResourcesBySource(SourceRepository source, ChocolateySourceCacheContext cacheContext) { return _cachedResources.GetOrAdd(source, (key) => { - var endpointResource = new NuGetEndpointResources(key); + var endpointResource = new NuGetEndpointResources(key, cacheContext); return endpointResource; }); } + [Obsolete("This overload is deprecated and will be removed in v3.")] public static IEnumerable GetResourcesBySource(IEnumerable sources) + { + return GetResourcesBySource(sources, cacheContext: null); + } + + public static IEnumerable GetResourcesBySource(IEnumerable sources, ChocolateySourceCacheContext cacheContext) { foreach (SourceRepository source in sources) { - yield return GetResourcesBySource(source); + yield return GetResourcesBySource(source, cacheContext); } } @@ -132,7 +146,7 @@ private T ResolveResource() { this.Log().Debug("Resolving resource {0} for source {1}", typeof(T).Name, Source.PackageSource.Source); #pragma warning disable RS0030 // Do not used banned APIs - resource = Source.GetResource(); + resource = Source.GetResource(_cacheContext); #pragma warning restore RS0030 // Do not used banned APIs } catch (AggregateException ex) when (!(ex.InnerException is null)) diff --git a/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs b/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs index 20911503e..9e863e384 100644 --- a/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs +++ b/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs @@ -240,15 +240,27 @@ public static IEnumerable GetRemoteRepositories(ChocolateyConf return repositories; } + [Obsolete("This overload is deprecated and will be removed in v3.")] public static IReadOnlyList GetRepositoryResources(ChocolateyConfiguration configuration, ILogger nugetLogger, IFileSystem filesystem) + { + return GetRepositoryResources(configuration, nugetLogger, filesystem, new ChocolateySourceCacheContext(configuration)); + } + + public static IReadOnlyList GetRepositoryResources(ChocolateyConfiguration configuration, ILogger nugetLogger, IFileSystem filesystem, ChocolateySourceCacheContext cacheContext) { IEnumerable remoteRepositories = GetRemoteRepositories(configuration, nugetLogger, filesystem); - return GetRepositoryResources(remoteRepositories); + return GetRepositoryResources(remoteRepositories, cacheContext); } + [Obsolete("This overload is deprecated and will be removed in v3.")] public static IReadOnlyList GetRepositoryResources(IEnumerable packageRepositories) { - return NuGetEndpointResources.GetResourcesBySource(packageRepositories).ToList(); + return GetRepositoryResources(packageRepositories, cacheContext: null); + } + + public static IReadOnlyList GetRepositoryResources(IEnumerable packageRepositories, ChocolateySourceCacheContext cacheContext) + { + return NuGetEndpointResources.GetResourcesBySource(packageRepositories, cacheContext).ToList(); } public static void SetHttpHandlerCredentialService(ChocolateyConfiguration configuration) diff --git a/src/chocolatey/infrastructure.app/nuget/NugetList.cs b/src/chocolatey/infrastructure.app/nuget/NugetList.cs index 3da6b3025..d734eb066 100644 --- a/src/chocolatey/infrastructure.app/nuget/NugetList.cs +++ b/src/chocolatey/infrastructure.app/nuget/NugetList.cs @@ -41,9 +41,15 @@ public static IEnumerable GetPackages(ChocolateyConfigur return SearchPackagesAsync(configuration, nugetLogger, filesystem).GetAwaiter().GetResult(); } + [Obsolete("This overload is deprecated and will be removed in v3.")] public static int GetCount(ChocolateyConfiguration configuration, ILogger nugetLogger, IFileSystem filesystem) { - var packageRepositoriesResources = NugetCommon.GetRepositoryResources(configuration, nugetLogger, filesystem); + return GetCount(configuration, nugetLogger, filesystem, new ChocolateySourceCacheContext(configuration)); + } + + public static int GetCount(ChocolateyConfiguration configuration, ILogger nugetLogger, IFileSystem filesystem, ChocolateySourceCacheContext cacheContext) + { + var packageRepositoriesResources = NugetCommon.GetRepositoryResources(configuration, nugetLogger, filesystem, cacheContext); string searchTermLower = configuration.Input.ToLowerSafe(); SearchFilter searchFilter = new SearchFilter(configuration.Prerelease); @@ -64,7 +70,8 @@ private async static Task> SearchPackagesAsyn ThresholdHit = false; LowerThresholdHit = false; - var packageRepositoryResources = NugetCommon.GetRepositoryResources(configuration, nugetLogger, filesystem); + var cacheContext = new ChocolateySourceCacheContext(configuration); + var packageRepositoryResources = NugetCommon.GetRepositoryResources(configuration, nugetLogger, filesystem, cacheContext); string searchTermLower = configuration.Input.ToLowerSafe(); SearchFilter searchFilter = new SearchFilter(configuration.Prerelease); @@ -91,8 +98,6 @@ private async static Task> SearchPackagesAsyn searchFilter.IdStartsWith = true; } - var cacheContext = new ChocolateySourceCacheContext(configuration); - NuGetVersion version = !string.IsNullOrWhiteSpace(configuration.Version) ? NuGetVersion.Parse(configuration.Version) : null; if (version != null) @@ -361,7 +366,7 @@ public static ISet FindAllPackageVersions(string package if (config.Features.UsePackageRepositoryOptimizations && resource.ListResource != null) { var package = FaultTolerance.TryCatchWithLoggingException( - () => resource.ListResource.PackageAsync(packageNameLower, config.Prerelease, nugetLogger, CancellationToken.None).GetAwaiter().GetResult(), + () => resource.ListResource.PackageAsync(packageNameLower, config.Prerelease, nugetLogger, cacheContext, CancellationToken.None).GetAwaiter().GetResult(), errorMessage: "Unable to connect to source '{0}'".FormatWith(resource.Source.PackageSource.Source), throwError: false, logWarningInsteadOfError: true); diff --git a/src/chocolatey/infrastructure.app/nuget/NugetPush.cs b/src/chocolatey/infrastructure.app/nuget/NugetPush.cs index daec85fda..7b6cfa84a 100644 --- a/src/chocolatey/infrastructure.app/nuget/NugetPush.cs +++ b/src/chocolatey/infrastructure.app/nuget/NugetPush.cs @@ -28,7 +28,13 @@ namespace chocolatey.infrastructure.app.nuget public class NugetPush { + [Obsolete("This overload is deprecated and will be removed in v3.")] public static void PushPackage(ChocolateyConfiguration config, string nupkgFilePath, ILogger nugetLogger, string nupkgFileName, IFileSystem filesystem) + { + PushPackage(config, nupkgFilePath, nugetLogger, nupkgFileName, filesystem, cacheContext: null); + } + + public static void PushPackage(ChocolateyConfiguration config, string nupkgFilePath, ILogger nugetLogger, string nupkgFileName, IFileSystem filesystem, ChocolateySourceCacheContext cacheContext) { var timeout = TimeSpan.FromSeconds(Math.Abs(config.CommandExecutionTimeoutSeconds)); if (timeout.Seconds <= 0) @@ -43,7 +49,7 @@ public static void PushPackage(ChocolateyConfiguration config, string nupkgFileP const bool skipDuplicate = false; //OK to use FirstOrDefault in this case as the command validates that there is only one source - NuGetEndpointResources sourceEndpoint = NugetCommon.GetRepositoryResources(config, nugetLogger, filesystem).FirstOrDefault(); + NuGetEndpointResources sourceEndpoint = NugetCommon.GetRepositoryResources(config, nugetLogger, filesystem, cacheContext).FirstOrDefault(); PackageUpdateResource packageUpdateResource = sourceEndpoint.PackageUpdateResource; var nupkgFilePaths = new List() { nupkgFilePath }; diff --git a/src/chocolatey/infrastructure.app/services/NugetService.cs b/src/chocolatey/infrastructure.app/services/NugetService.cs index 647d2d0cb..fe0d8e76c 100644 --- a/src/chocolatey/infrastructure.app/services/NugetService.cs +++ b/src/chocolatey/infrastructure.app/services/NugetService.cs @@ -124,7 +124,8 @@ public virtual int Count(ChocolateyConfiguration config) int? pageValue = config.ListCommand.Page; try { - return NugetList.GetCount(config, _nugetLogger, _fileSystem); + var sourceCacheContext = new ChocolateySourceCacheContext(config); + return NugetList.GetCount(config, _nugetLogger, _fileSystem, sourceCacheContext); } finally { @@ -421,7 +422,8 @@ public virtual void Push(ChocolateyConfiguration config) string nupkgFileName = _fileSystem.GetFileName(nupkgFilePath); if (config.RegularOutput) this.Log().Info(() => "Attempting to push {0} to {1}".FormatWith(nupkgFileName, config.Sources)); - NugetPush.PushPackage(config, _fileSystem.GetFullPath(nupkgFilePath), _nugetLogger, nupkgFileName, _fileSystem); + var sourceCacheContext = new ChocolateySourceCacheContext(config); + NugetPush.PushPackage(config, _fileSystem.GetFullPath(nupkgFilePath), _nugetLogger, nupkgFileName, _fileSystem, sourceCacheContext); if (config.RegularOutput && (config.Sources.IsEqualTo(ApplicationParameters.ChocolateyCommunityFeedPushSource) || config.Sources.IsEqualTo(ApplicationParameters.ChocolateyCommunityFeedPushSourceOld))) { @@ -487,7 +489,7 @@ public void InstallDryRun(ChocolateyConfiguration config, Action GetOutdated(ChocolateyConfiguration config) { + var sourceCacheContext = new ChocolateySourceCacheContext(config); var remoteRepositories = NugetCommon.GetRemoteRepositories(config, _nugetLogger, _fileSystem); - var remoteEndpoints = NugetCommon.GetRepositoryResources(remoteRepositories); + var remoteEndpoints = NugetCommon.GetRepositoryResources(remoteRepositories, sourceCacheContext); var pathResolver = NugetCommon.GetPathResolver(_fileSystem); var outdatedPackages = new ConcurrentDictionary(); - var sourceCacheContext = new ChocolateySourceCacheContext(config); var allPackages = SetPackageNamesIfAllSpecified(config, () => { config.IgnoreDependencies = true; }); var packageNames = config.PackageNames.Split(new[] { ApplicationParameters.PackageNamesSeparator }, StringSplitOptions.RemoveEmptyEntries).OrEmpty().ToList(); diff --git a/src/chocolatey/infrastructure.app/services/TemplateService.cs b/src/chocolatey/infrastructure.app/services/TemplateService.cs index 5e1732889..f1f103a27 100644 --- a/src/chocolatey/infrastructure.app/services/TemplateService.cs +++ b/src/chocolatey/infrastructure.app/services/TemplateService.cs @@ -271,8 +271,8 @@ public void List(ChocolateyConfiguration configuration) protected void ListCustomTemplateInformation(ChocolateyConfiguration configuration) { - var packageResources = NugetCommon.GetRepositoryResources(configuration, _nugetLogger, _fileSystem); var sourceCacheContext = new ChocolateySourceCacheContext(configuration); + var packageResources = NugetCommon.GetRepositoryResources(configuration, _nugetLogger, _fileSystem, sourceCacheContext); var pkg = NugetList.FindPackage( "{0}.template".FormatWith(configuration.TemplateCommand.Name), configuration, From 88b1b96772e0844d81a462e579f971237fc7f737 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Mon, 5 Jun 2023 13:00:29 +0100 Subject: [PATCH 05/52] (#3125) Use ChocolateySourceCacheContext for search In order to be consistent with how queries are cached when doing install and upgrade commands, this commit switches to passing in an instance of the ChocolateySourceCacheContext object, so that the choco search command makes use of the same cached query results. This will mean that all commands return consistent results. It does mean that we will need to provide an ability to by-pass/purge these caches, but that will be part of another scope of work. --- src/chocolatey/infrastructure.app/nuget/NugetList.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chocolatey/infrastructure.app/nuget/NugetList.cs b/src/chocolatey/infrastructure.app/nuget/NugetList.cs index d734eb066..6963e7d06 100644 --- a/src/chocolatey/infrastructure.app/nuget/NugetList.cs +++ b/src/chocolatey/infrastructure.app/nuget/NugetList.cs @@ -158,7 +158,7 @@ private async static Task> SearchPackagesAsyn } partResults.Clear(); - partResults.AddRange(await repositoryResources.SearchResource.SearchAsync(searchTermLower, searchFilter, skipNumber, takeNumber, nugetLogger, CancellationToken.None)); + partResults.AddRange(await repositoryResources.SearchResource.SearchAsync(searchTermLower, searchFilter, skipNumber, takeNumber, nugetLogger, cacheContext, CancellationToken.None)); skipNumber += takeNumber; perSourceThresholdLimit -= partResults.Count; perSourceThresholdMinLimit -= partResults.Count; @@ -196,7 +196,7 @@ private async static Task> SearchPackagesAsyn configuration.Prerelease = configuration.Prerelease || (version != null && version.IsPrerelease); configuration.AllVersions = configuration.AllVersions || (version != null); - var tempResults = await repositoryResources.ListResource.ListAsync(searchTermLower, configuration.Prerelease, configuration.AllVersions, false, nugetLogger, CancellationToken.None); + var tempResults = await repositoryResources.ListResource.ListAsync(searchTermLower, configuration.Prerelease, configuration.AllVersions, false, nugetLogger, cacheContext, CancellationToken.None); var enumerator = tempResults.GetEnumeratorAsync(); var perSourceThresholdLimit = thresholdLimit; From 8ad98ee2c823df7b96182fce6f21b91fc4ac411d Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Mon, 5 Jun 2023 16:39:13 +0100 Subject: [PATCH 06/52] (maint) Update to latest Chocolatey.NuGet.Client Start using 3.2.0, which includes a number of performance related changes, to improve the overall length of time to run certain Chocolatey commands, for example, choco outdated. --- .../chocolatey.tests.integration.csproj | 12 ++++----- .../packages.config | 12 ++++----- src/chocolatey.tests/chocolatey.tests.csproj | 26 +++++++++---------- src/chocolatey.tests/packages.config | 26 +++++++++---------- src/chocolatey/chocolatey.csproj | 26 +++++++++---------- src/chocolatey/packages.config | 26 +++++++++---------- 6 files changed, 64 insertions(+), 64 deletions(-) diff --git a/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj b/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj index 3f6642372..6f6cac744 100644 --- a/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj +++ b/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj @@ -79,22 +79,22 @@ - ..\packages\Chocolatey.NuGet.Common.3.1.0\lib\net472\Chocolatey.NuGet.Common.dll + ..\packages\Chocolatey.NuGet.Common.3.2.0\lib\net472\Chocolatey.NuGet.Common.dll - ..\packages\Chocolatey.NuGet.Configuration.3.1.0\lib\net472\Chocolatey.NuGet.Configuration.dll + ..\packages\Chocolatey.NuGet.Configuration.3.2.0\lib\net472\Chocolatey.NuGet.Configuration.dll - ..\packages\Chocolatey.NuGet.Frameworks.3.1.0\lib\net472\Chocolatey.NuGet.Frameworks.dll + ..\packages\Chocolatey.NuGet.Frameworks.3.2.0\lib\net472\Chocolatey.NuGet.Frameworks.dll - ..\packages\Chocolatey.NuGet.Packaging.3.1.0\lib\net472\Chocolatey.NuGet.Packaging.dll + ..\packages\Chocolatey.NuGet.Packaging.3.2.0\lib\net472\Chocolatey.NuGet.Packaging.dll - ..\packages\Chocolatey.NuGet.Protocol.3.1.0\lib\net472\Chocolatey.NuGet.Protocol.dll + ..\packages\Chocolatey.NuGet.Protocol.3.2.0\lib\net472\Chocolatey.NuGet.Protocol.dll - ..\packages\Chocolatey.NuGet.Versioning.3.1.0\lib\net472\Chocolatey.NuGet.Versioning.dll + ..\packages\Chocolatey.NuGet.Versioning.3.2.0\lib\net472\Chocolatey.NuGet.Versioning.dll ..\packages\log4net.2.0.12\lib\net45\log4net.dll diff --git a/src/chocolatey.tests.integration/packages.config b/src/chocolatey.tests.integration/packages.config index 2db5b9d29..3071c778a 100644 --- a/src/chocolatey.tests.integration/packages.config +++ b/src/chocolatey.tests.integration/packages.config @@ -1,11 +1,11 @@  - - - - - - + + + + + + diff --git a/src/chocolatey.tests/chocolatey.tests.csproj b/src/chocolatey.tests/chocolatey.tests.csproj index c99dad6fd..529cc6abe 100644 --- a/src/chocolatey.tests/chocolatey.tests.csproj +++ b/src/chocolatey.tests/chocolatey.tests.csproj @@ -78,43 +78,43 @@ - ..\packages\Chocolatey.NuGet.Commands.3.1.0\lib\net472\Chocolatey.NuGet.Commands.dll + ..\packages\Chocolatey.NuGet.Commands.3.2.0\lib\net472\Chocolatey.NuGet.Commands.dll - ..\packages\Chocolatey.NuGet.Common.3.1.0\lib\net472\Chocolatey.NuGet.Common.dll + ..\packages\Chocolatey.NuGet.Common.3.2.0\lib\net472\Chocolatey.NuGet.Common.dll - ..\packages\Chocolatey.NuGet.Configuration.3.1.0\lib\net472\Chocolatey.NuGet.Configuration.dll + ..\packages\Chocolatey.NuGet.Configuration.3.2.0\lib\net472\Chocolatey.NuGet.Configuration.dll - ..\packages\Chocolatey.NuGet.Credentials.3.1.0\lib\net472\Chocolatey.NuGet.Credentials.dll + ..\packages\Chocolatey.NuGet.Credentials.3.2.0\lib\net472\Chocolatey.NuGet.Credentials.dll - ..\packages\Chocolatey.NuGet.DependencyResolver.Core.3.1.0\lib\net472\Chocolatey.NuGet.DependencyResolver.Core.dll + ..\packages\Chocolatey.NuGet.DependencyResolver.Core.3.2.0\lib\net472\Chocolatey.NuGet.DependencyResolver.Core.dll - ..\packages\Chocolatey.NuGet.Frameworks.3.1.0\lib\net472\Chocolatey.NuGet.Frameworks.dll + ..\packages\Chocolatey.NuGet.Frameworks.3.2.0\lib\net472\Chocolatey.NuGet.Frameworks.dll - ..\packages\Chocolatey.NuGet.LibraryModel.3.1.0\lib\net472\Chocolatey.NuGet.LibraryModel.dll + ..\packages\Chocolatey.NuGet.LibraryModel.3.2.0\lib\net472\Chocolatey.NuGet.LibraryModel.dll - ..\packages\Chocolatey.NuGet.PackageManagement.3.1.0\lib\net472\Chocolatey.NuGet.PackageManagement.dll + ..\packages\Chocolatey.NuGet.PackageManagement.3.2.0\lib\net472\Chocolatey.NuGet.PackageManagement.dll - ..\packages\Chocolatey.NuGet.Packaging.3.1.0\lib\net472\Chocolatey.NuGet.Packaging.dll + ..\packages\Chocolatey.NuGet.Packaging.3.2.0\lib\net472\Chocolatey.NuGet.Packaging.dll - ..\packages\Chocolatey.NuGet.ProjectModel.3.1.0\lib\net472\Chocolatey.NuGet.ProjectModel.dll + ..\packages\Chocolatey.NuGet.ProjectModel.3.2.0\lib\net472\Chocolatey.NuGet.ProjectModel.dll - ..\packages\Chocolatey.NuGet.Protocol.3.1.0\lib\net472\Chocolatey.NuGet.Protocol.dll + ..\packages\Chocolatey.NuGet.Protocol.3.2.0\lib\net472\Chocolatey.NuGet.Protocol.dll - ..\packages\Chocolatey.NuGet.Resolver.3.1.0\lib\net472\Chocolatey.NuGet.Resolver.dll + ..\packages\Chocolatey.NuGet.Resolver.3.2.0\lib\net472\Chocolatey.NuGet.Resolver.dll - ..\packages\Chocolatey.NuGet.Versioning.3.1.0\lib\net472\Chocolatey.NuGet.Versioning.dll + ..\packages\Chocolatey.NuGet.Versioning.3.2.0\lib\net472\Chocolatey.NuGet.Versioning.dll ..\packages\log4net.2.0.12\lib\net45\log4net.dll diff --git a/src/chocolatey.tests/packages.config b/src/chocolatey.tests/packages.config index 7b628043a..e19eaee56 100644 --- a/src/chocolatey.tests/packages.config +++ b/src/chocolatey.tests/packages.config @@ -1,18 +1,18 @@  - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/chocolatey/chocolatey.csproj b/src/chocolatey/chocolatey.csproj index 30f882797..be3c9cab5 100644 --- a/src/chocolatey/chocolatey.csproj +++ b/src/chocolatey/chocolatey.csproj @@ -102,43 +102,43 @@ ..\packages\AlphaFS.2.1.3\lib\net40\AlphaFS.dll - ..\packages\Chocolatey.NuGet.Commands.3.1.0\lib\net472\Chocolatey.NuGet.Commands.dll + ..\packages\Chocolatey.NuGet.Commands.3.2.0\lib\net472\Chocolatey.NuGet.Commands.dll - ..\packages\Chocolatey.NuGet.Common.3.1.0\lib\net472\Chocolatey.NuGet.Common.dll + ..\packages\Chocolatey.NuGet.Common.3.2.0\lib\net472\Chocolatey.NuGet.Common.dll - ..\packages\Chocolatey.NuGet.Configuration.3.1.0\lib\net472\Chocolatey.NuGet.Configuration.dll + ..\packages\Chocolatey.NuGet.Configuration.3.2.0\lib\net472\Chocolatey.NuGet.Configuration.dll - ..\packages\Chocolatey.NuGet.Credentials.3.1.0\lib\net472\Chocolatey.NuGet.Credentials.dll + ..\packages\Chocolatey.NuGet.Credentials.3.2.0\lib\net472\Chocolatey.NuGet.Credentials.dll - ..\packages\Chocolatey.NuGet.DependencyResolver.Core.3.1.0\lib\net472\Chocolatey.NuGet.DependencyResolver.Core.dll + ..\packages\Chocolatey.NuGet.DependencyResolver.Core.3.2.0\lib\net472\Chocolatey.NuGet.DependencyResolver.Core.dll - ..\packages\Chocolatey.NuGet.Frameworks.3.1.0\lib\net472\Chocolatey.NuGet.Frameworks.dll + ..\packages\Chocolatey.NuGet.Frameworks.3.2.0\lib\net472\Chocolatey.NuGet.Frameworks.dll - ..\packages\Chocolatey.NuGet.LibraryModel.3.1.0\lib\net472\Chocolatey.NuGet.LibraryModel.dll + ..\packages\Chocolatey.NuGet.LibraryModel.3.2.0\lib\net472\Chocolatey.NuGet.LibraryModel.dll - ..\packages\Chocolatey.NuGet.PackageManagement.3.1.0\lib\net472\Chocolatey.NuGet.PackageManagement.dll + ..\packages\Chocolatey.NuGet.PackageManagement.3.2.0\lib\net472\Chocolatey.NuGet.PackageManagement.dll - ..\packages\Chocolatey.NuGet.Packaging.3.1.0\lib\net472\Chocolatey.NuGet.Packaging.dll + ..\packages\Chocolatey.NuGet.Packaging.3.2.0\lib\net472\Chocolatey.NuGet.Packaging.dll - ..\packages\Chocolatey.NuGet.ProjectModel.3.1.0\lib\net472\Chocolatey.NuGet.ProjectModel.dll + ..\packages\Chocolatey.NuGet.ProjectModel.3.2.0\lib\net472\Chocolatey.NuGet.ProjectModel.dll - ..\packages\Chocolatey.NuGet.Protocol.3.1.0\lib\net472\Chocolatey.NuGet.Protocol.dll + ..\packages\Chocolatey.NuGet.Protocol.3.2.0\lib\net472\Chocolatey.NuGet.Protocol.dll - ..\packages\Chocolatey.NuGet.Resolver.3.1.0\lib\net472\Chocolatey.NuGet.Resolver.dll + ..\packages\Chocolatey.NuGet.Resolver.3.2.0\lib\net472\Chocolatey.NuGet.Resolver.dll - ..\packages\Chocolatey.NuGet.Versioning.3.1.0\lib\net472\Chocolatey.NuGet.Versioning.dll + ..\packages\Chocolatey.NuGet.Versioning.3.2.0\lib\net472\Chocolatey.NuGet.Versioning.dll ..\packages\log4net.2.0.12\lib\net45\log4net.dll diff --git a/src/chocolatey/packages.config b/src/chocolatey/packages.config index 116418dd7..89046d2cd 100644 --- a/src/chocolatey/packages.config +++ b/src/chocolatey/packages.config @@ -1,19 +1,19 @@  - - - - - - - - - - - - - + + + + + + + + + + + + + From 3bdeb9331073416152d7e5a641f6fd3e0026394f Mon Sep 17 00:00:00 2001 From: TheCakeIsNaOH Date: Tue, 22 Nov 2022 19:05:37 -0600 Subject: [PATCH 07/52] (#2893) Switch from Should to FluentAssertions This switches chocolatey.tests and chocolatey.tests.integration to use FluentAssertions instead of Should. This is because Should is no longer actively maintained, so it is time to replace it. The Fluent Assertions Analyzers are also added in this commit. Only the package and dependencies are switched. The code changes be in the next commit. --- .../chocolatey.tests.integration.csproj | 10 ++++++---- src/chocolatey.tests.integration/packages.config | 3 ++- src/chocolatey.tests/chocolatey.tests.csproj | 16 ++++++++++++---- src/chocolatey.tests/packages.config | 5 ++++- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj b/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj index 6f6cac744..4f32cc30f 100644 --- a/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj +++ b/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj @@ -96,6 +96,9 @@ ..\packages\Chocolatey.NuGet.Versioning.3.2.0\lib\net472\Chocolatey.NuGet.Versioning.dll + + ..\packages\FluentAssertions.6.11.0\lib\net47\FluentAssertions.dll + ..\packages\log4net.2.0.12\lib\net45\log4net.dll @@ -111,9 +114,6 @@ ..\packages\NUnit.3.13.3\lib\net40\nunit.framework.dll - - ..\packages\Should.1.1.20\lib\Should.dll - ..\packages\SimpleInjector.2.8.3\lib\net45\SimpleInjector.dll @@ -207,7 +207,9 @@ Always - + + + diff --git a/src/chocolatey.tests.integration/packages.config b/src/chocolatey.tests.integration/packages.config index 3071c778a..36f2e7b98 100644 --- a/src/chocolatey.tests.integration/packages.config +++ b/src/chocolatey.tests.integration/packages.config @@ -6,13 +6,14 @@ + + - diff --git a/src/chocolatey.tests/chocolatey.tests.csproj b/src/chocolatey.tests/chocolatey.tests.csproj index 529cc6abe..6a9d93f20 100644 --- a/src/chocolatey.tests/chocolatey.tests.csproj +++ b/src/chocolatey.tests/chocolatey.tests.csproj @@ -116,6 +116,9 @@ ..\packages\Chocolatey.NuGet.Versioning.3.2.0\lib\net472\Chocolatey.NuGet.Versioning.dll + + ..\packages\FluentAssertions.6.11.0\lib\net47\FluentAssertions.dll + ..\packages\log4net.2.0.12\lib\net45\log4net.dll @@ -132,9 +135,6 @@ ..\packages\NUnit.3.13.3\lib\net40\nunit.framework.dll - - ..\packages\Should.1.1.20\lib\Should.dll - ..\packages\SimpleInjector.2.8.3\lib\net45\SimpleInjector.dll @@ -146,8 +146,14 @@ + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll + @@ -226,7 +232,9 @@ chocolatey.console - + + + diff --git a/src/chocolatey.tests/packages.config b/src/chocolatey.tests/packages.config index e19eaee56..e86311bb5 100644 --- a/src/chocolatey.tests/packages.config +++ b/src/chocolatey.tests/packages.config @@ -13,6 +13,8 @@ + + @@ -20,6 +22,7 @@ - + + \ No newline at end of file From 9d5b05ceaaa82dbf99de9046cbd05faad7b66ce7 Mon Sep 17 00:00:00 2001 From: TheCakeIsNaOH Date: Tue, 22 Nov 2022 19:06:20 -0600 Subject: [PATCH 08/52] (#2893) Update references and syntax to FluentAssertions As per the FluentAssertions api, various calls needed to be adjusted, mostly in the pattern Shouldxxxx() to Should().xxxx() --- .../builders/ConfigurationBuilderSpecs.cs | 20 +- .../services/FilesServiceSpecs.cs | 4 +- .../commands/CommandExecutorSpecs.cs | 10 +- .../cryptography/CryptoHashProviderSpecs.cs | 4 +- .../filesystem/DotNetFileSystemSpecs.cs | 60 +- .../scenarios/InfoScenarios.cs | 122 +-- .../scenarios/InstallScenarios.cs | 606 ++++++------ .../scenarios/ListScenarios.cs | 58 +- .../scenarios/PackScenarios.cs | 40 +- .../scenarios/PinScenarios.cs | 36 +- .../scenarios/SearchScenarios.cs | 162 ++-- .../scenarios/UninstallScenarios.cs | 205 ++-- .../scenarios/UpgradeScenarios.cs | 892 +++++++++--------- .../attributes/CommandForAttributeSpecs.cs | 4 +- .../commands/ChocolateyApiKeyCommandSpecs.cs | 28 +- .../commands/ChocolateyConfigCommandSpecs.cs | 8 +- .../commands/ChocolateyExportCommandSpecs.cs | 22 +- .../commands/ChocolateyFeatureCommandSpecs.cs | 38 +- .../commands/ChocolateyHelpCommandSpecs.cs | 4 +- .../commands/ChocolateyInfoCommandSpecs.cs | 44 +- .../commands/ChocolateyInstallCommandSpecs.cs | 72 +- .../commands/ChocolateyListCommandSpecs.cs | 34 +- .../commands/ChocolateyNewCommandSpecs.cs | 102 +- .../ChocolateyOutdatedCommandSpecs.cs | 18 +- .../commands/ChocolateyPackCommandSpecs.cs | 22 +- .../commands/ChocolateyPinCommandSpecs.cs | 54 +- .../commands/ChocolateyPushCommandSpecs.cs | 60 +- .../commands/ChocolateySearchCommandSpecs.cs | 64 +- .../commands/ChocolateySourceCommandSpecs.cs | 58 +- .../ChocolateyTemplateCommandSpecs.cs | 42 +- .../ChocolateyUninstallCommandSpecs.cs | 48 +- .../ChocolateyUnpackSelfCommandSpecs.cs | 8 +- .../commands/ChocolateyUpgradeCommandSpecs.cs | 66 +- .../configuration/ConfigurationOptionsSpec.cs | 80 +- .../ChocolateyNuGetProjectContextSpecs.cs | 4 +- .../nuget/ChocolateyNugetLoggerSpecs.cs | 190 ++-- .../nuget/NugetCommonSpecs.cs | 44 +- .../ChocolateyConfigSettingsServiceSpecs.cs | 80 +- .../services/ChocolateyPackageServiceSpecs.cs | 24 +- .../services/FilesServiceSpecs.cs | 20 +- .../services/NugetServiceSpecs.cs | 10 +- .../services/RegistryServiceSpecs.cs | 14 +- .../services/RulesServiceSpecs.cs | 12 +- .../services/TemplateServiceSpecs.cs | 172 ++-- .../utility/ArgumentsUtilitySpecs.cs | 4 +- .../utility/PackageUtilitySpecs.cs | 4 +- .../commandline/InteractivePromptSpecs.cs | 100 +- .../commands/CommandExecutorSpecs.cs | 8 +- .../ExternalCommandArgsBuilderSpecs.cs | 40 +- .../commands/PowershellExecutorSpecs.cs | 10 +- .../configuration/ConfigSpecs.cs | 6 +- .../cryptography/CryptoHashProviderSpecs.cs | 8 +- .../events/EventSubscriptionManagerSpecs.cs | 28 +- .../filesystem/DotNetFileSystemSpecs.cs | 49 +- .../infrastructure/guards/EnsureSpecs.cs | 90 +- .../information/VersionInformationSpecs.cs | 10 +- .../infrastructure/platforms/PlatformSpecs.cs | 12 +- .../tokens/TokenReplacerSpecs.cs | 26 +- .../tolerance/FaultToleranceSpecs.cs | 24 +- 59 files changed, 2041 insertions(+), 2043 deletions(-) diff --git a/src/chocolatey.tests.integration/infrastructure.app/builders/ConfigurationBuilderSpecs.cs b/src/chocolatey.tests.integration/infrastructure.app/builders/ConfigurationBuilderSpecs.cs index 4ff1efca7..683ae280e 100644 --- a/src/chocolatey.tests.integration/infrastructure.app/builders/ConfigurationBuilderSpecs.cs +++ b/src/chocolatey.tests.integration/infrastructure.app/builders/ConfigurationBuilderSpecs.cs @@ -33,7 +33,7 @@ namespace chocolatey.tests.integration.infrastructure.app.builders using chocolatey.infrastructure.registration; using Microsoft.Win32; using scenarios; - using Should; + using FluentAssertions; public class ConfigurationBuilderSpecs { @@ -140,31 +140,31 @@ public void ShouldHaveProxyConfiguration() if (!SystemSet && !ArgumentSet && !ConfigSet && !EnvironmentVariableSet) { - Configuration.Proxy.Location.ShouldEqual(string.Empty); + Configuration.Proxy.Location.Should().Be(string.Empty); return; } if (ArgumentSet) { - Configuration.Proxy.Location.ShouldEqual(CommandArgumentProxyValue); + Configuration.Proxy.Location.Should().Be(CommandArgumentProxyValue); return; } if (ConfigSet) { - Configuration.Proxy.Location.ShouldEqual(ConfigurationFileProxyValue); + Configuration.Proxy.Location.Should().Be(ConfigurationFileProxyValue); return; } if (EnvironmentVariableSet) { - Configuration.Proxy.Location.ShouldEqual(EnvironmentVariableProxyValue); + Configuration.Proxy.Location.Should().Be(EnvironmentVariableProxyValue); return; } if (SystemSet) { - Configuration.Proxy.Location.ShouldEqual(SystemLevelProxyValue); + Configuration.Proxy.Location.Should().Be(SystemLevelProxyValue); return; } } @@ -211,25 +211,25 @@ public void ShouldBypassProxy() if (!ArgumentSet && !ConfigSet && !EnvironmentVariableSet) { - Configuration.Proxy.BypassList.ShouldEqual(string.Empty); + Configuration.Proxy.BypassList.Should().Be(string.Empty); return; } if (ArgumentSet) { - Configuration.Proxy.BypassList.ShouldEqual(CommandArgumentProxyValue); + Configuration.Proxy.BypassList.Should().Be(CommandArgumentProxyValue); return; } if (ConfigSet) { - Configuration.Proxy.BypassList.ShouldEqual(ConfigurationFileProxyValue); + Configuration.Proxy.BypassList.Should().Be(ConfigurationFileProxyValue); return; } if (EnvironmentVariableSet) { - Configuration.Proxy.BypassList.ShouldEqual(EnvironmentVariableProxyValue); + Configuration.Proxy.BypassList.Should().Be(EnvironmentVariableProxyValue); return; } } diff --git a/src/chocolatey.tests.integration/infrastructure.app/services/FilesServiceSpecs.cs b/src/chocolatey.tests.integration/infrastructure.app/services/FilesServiceSpecs.cs index 46173c042..37c167a4f 100644 --- a/src/chocolatey.tests.integration/infrastructure.app/services/FilesServiceSpecs.cs +++ b/src/chocolatey.tests.integration/infrastructure.app/services/FilesServiceSpecs.cs @@ -29,7 +29,7 @@ namespace chocolatey.tests.integration.infrastructure.app.services using chocolatey.infrastructure.services; using Moq; using NUnit.Framework; - using Should; + using FluentAssertions; public class FilesServiceSpecs { @@ -101,7 +101,7 @@ public void Should_log_a_warning_about_locked_files() [Fact] public void Should_return_a_special_code_for_locked_files() { - _result.Files.FirstOrDefault(x => x.Path == _theLockedFile).Checksum.ShouldEqual(ApplicationParameters.HashProviderFileLocked); + _result.Files.FirstOrDefault(x => x.Path == _theLockedFile).Checksum.Should().Be(ApplicationParameters.HashProviderFileLocked); } } } diff --git a/src/chocolatey.tests.integration/infrastructure/commands/CommandExecutorSpecs.cs b/src/chocolatey.tests.integration/infrastructure/commands/CommandExecutorSpecs.cs index 2232af6b4..c4e931b79 100644 --- a/src/chocolatey.tests.integration/infrastructure/commands/CommandExecutorSpecs.cs +++ b/src/chocolatey.tests.integration/infrastructure/commands/CommandExecutorSpecs.cs @@ -21,7 +21,7 @@ namespace chocolatey.tests.integration.infrastructure.commands using chocolatey.infrastructure.commands; using chocolatey.infrastructure.filesystem; using NUnit.Framework; - using Should; + using FluentAssertions; public class CommandExecutorSpecs { @@ -64,19 +64,19 @@ public override void Because() [Fact] public void Should_not_return_an_exit_code_of_zero() { - result.ShouldNotEqual(0); + result.Should().NotBe(0); } [Fact] public void Should_contain_error_output() { - errorOutput.ShouldNotBeNull(); + errorOutput.Should().NotBeNull(); } [Fact] public void Should_message_the_error() { - errorOutput.ShouldEqual("'bob123123' is not recognized as an internal or external command,operable program or batch file."); + errorOutput.Should().Be("'bob123123' is not recognized as an internal or external command,operable program or batch file."); } } @@ -102,7 +102,7 @@ public override void Because() [Fact] public void Should_have_an_error_message() { - result.ShouldNotBeNull(); + result.Should().NotBeNull(); } } } diff --git a/src/chocolatey.tests.integration/infrastructure/cryptography/CryptoHashProviderSpecs.cs b/src/chocolatey.tests.integration/infrastructure/cryptography/CryptoHashProviderSpecs.cs index 46c69a500..008922341 100644 --- a/src/chocolatey.tests.integration/infrastructure/cryptography/CryptoHashProviderSpecs.cs +++ b/src/chocolatey.tests.integration/infrastructure/cryptography/CryptoHashProviderSpecs.cs @@ -21,7 +21,7 @@ namespace chocolatey.tests.integration.infrastructure.cryptography using System.Security.Cryptography; using chocolatey.infrastructure.cryptography; using chocolatey.infrastructure.filesystem; - using Should; + using FluentAssertions; public class CryptoHashProviderSpecs { @@ -60,7 +60,7 @@ public void Should_provide_the_correct_hash_based_on_a_checksum() { var expected = BitConverter.ToString(SHA256.Create().ComputeHash(File.ReadAllBytes(filePath))).Replace("-", string.Empty); - result.ShouldEqual(expected); + result.Should().Be(expected); } } } diff --git a/src/chocolatey.tests.integration/infrastructure/filesystem/DotNetFileSystemSpecs.cs b/src/chocolatey.tests.integration/infrastructure/filesystem/DotNetFileSystemSpecs.cs index eb767bb16..449598011 100644 --- a/src/chocolatey.tests.integration/infrastructure/filesystem/DotNetFileSystemSpecs.cs +++ b/src/chocolatey.tests.integration/infrastructure/filesystem/DotNetFileSystemSpecs.cs @@ -22,7 +22,7 @@ namespace chocolatey.tests.integration.infrastructure.filesystem using chocolatey.infrastructure.filesystem; using chocolatey.infrastructure.platforms; using NUnit.Framework; - using Should; + using FluentAssertions; public class DotNetFileSystemSpecs { @@ -59,41 +59,39 @@ public override void Because() [Fact] public void GetExecutablePath_should_find_existing_executable() { - FileSystem.GetExecutablePath("cmd").ShouldEqual( + FileSystem.GetExecutablePath("cmd").Should().BeEquivalentTo( Platform.GetPlatform() == PlatformType.Windows ? "C:\\Windows\\system32\\cmd.exe" - : "cmd", - StringComparer.OrdinalIgnoreCase - ); + : "cmd" + ); } [Fact] public void GetExecutablePath_should_find_existing_executable_with_extension() { - FileSystem.GetExecutablePath("cmd.exe").ShouldEqual( + FileSystem.GetExecutablePath("cmd.exe").Should().BeEquivalentTo( Platform.GetPlatform() == PlatformType.Windows ? "c:\\windows\\system32\\cmd.exe" - : "cmd.exe", - StringComparer.OrdinalIgnoreCase + : "cmd.exe" ); } [Fact] public void GetExecutablePath_should_return_same_value_when_executable_is_not_found() { - FileSystem.GetExecutablePath("daslakjsfdasdfwea").ShouldEqual("daslakjsfdasdfwea"); + FileSystem.GetExecutablePath("daslakjsfdasdfwea").Should().Be("daslakjsfdasdfwea"); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_null() { - FileSystem.GetExecutablePath(null).ShouldEqual(string.Empty); + FileSystem.GetExecutablePath(null).Should().Be(string.Empty); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_empty_string() { - FileSystem.GetExecutablePath(string.Empty).ShouldEqual(string.Empty); + FileSystem.GetExecutablePath(string.Empty).Should().Be(string.Empty); } } @@ -120,7 +118,7 @@ public override void Because() [Fact] public void GetFiles_should_return_string_array_of_files() { - FileSystem.GetFiles(ContextPath, "*lipsum*", SearchOption.AllDirectories).ShouldEqual(FileArray); + FileSystem.GetFiles(ContextPath, "*lipsum*", SearchOption.AllDirectories).Should().BeEquivalentTo(FileArray); } [Fact] @@ -132,8 +130,8 @@ public void GetFiles_should_return_files_that_meet_the_pattern() var actual = FileSystem.GetFiles(ContextPath, "chocolateyInstall.ps1", SearchOption.AllDirectories).ToList(); FileSystem.DeleteFile(filePath); - actual.ShouldNotBeEmpty(); - actual.Count().ShouldEqual(1); + actual.Should().NotBeEmpty(); + actual.Count().Should().Be(1); } [Fact] @@ -147,44 +145,44 @@ public void GetFiles_should_return_files_that_meet_the_pattern_regardless_of_cas var actual = FileSystem.GetFiles(ContextPath, "chocolateyinstall.ps1", SearchOption.AllDirectories).ToList(); FileSystem.DeleteFile(filePath); - actual.ShouldNotBeEmpty(); - actual.Count().ShouldEqual(1); + actual.Should().NotBeEmpty(); + actual.Count().Should().Be(1); } [Fact] public void FileExists_should_return_true_if_file_exists() { - FileSystem.FileExists(TheTestFile).ShouldBeTrue(); + FileSystem.FileExists(TheTestFile).Should().BeTrue(); } [Fact] public void FileExists_should_return_false_if_file_does_not_exists() { - FileSystem.FileExists(Path.Combine(ContextPath, "IDontExist.txt")).ShouldBeFalse(); + FileSystem.FileExists(Path.Combine(ContextPath, "IDontExist.txt")).Should().BeFalse(); } [Fact] public void DirectoryExists_should_return_true_if_directory_exists() { - FileSystem.DirectoryExists(ContextPath).ShouldBeTrue(); + FileSystem.DirectoryExists(ContextPath).Should().BeTrue(); } [Fact] public void DirectoryExists_should_return_false_if_directory_does_not_exist() { - FileSystem.DirectoryExists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "IDontExist")).ShouldBeFalse(); + FileSystem.DirectoryExists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "IDontExist")).Should().BeFalse(); } [Fact] public void GetFileSize_should_return_correct_file_size() { - FileSystem.GetFileSize(TheTestFile).ShouldEqual(5377); + FileSystem.GetFileSize(TheTestFile).Should().Be(5377); } [Fact] public void GetDirectories_should_return_a_string_array_with_directories() { - FileSystem.GetDirectories(ContextPath).ShouldEqual(DirectoryArray); + FileSystem.GetDirectories(ContextPath).Should().BeEquivalentTo(DirectoryArray); } } @@ -207,7 +205,7 @@ public override void Because() [Fact] public void Visible_file_should_now_be_hidden() { - ((FileAttributes)FileSystem.GetFileInfoFor(SourceFile).Attributes & FileAttributes.Hidden).ShouldEqual(FileAttributes.Hidden); + ((FileAttributes)FileSystem.GetFileInfoFor(SourceFile).Attributes & FileAttributes.Hidden).Should().Be(FileAttributes.Hidden); } public override void AfterObservations() @@ -234,7 +232,7 @@ public override void Because() [Fact] public void Readonly_file_should_no_longer_be_readonly() { - ((FileAttributes)FileSystem.GetFileInfoFor(SourceFile).Attributes & FileAttributes.ReadOnly).ShouldNotEqual(FileAttributes.ReadOnly); + ((FileAttributes)FileSystem.GetFileInfoFor(SourceFile).Attributes & FileAttributes.ReadOnly).Should().NotBe(FileAttributes.ReadOnly); } } @@ -258,13 +256,13 @@ public override void Because() [Fact] public void Move_me_text_file_should_not_exist_in_the_source_path() { - FileSystem.FileExists(SourceFile).ShouldBeFalse(); + FileSystem.FileExists(SourceFile).Should().BeFalse(); } [Fact] public void Move_me_text_file_should_exist_in_destination_path() { - FileSystem.FileExists(DestFile).ShouldBeTrue(); + FileSystem.FileExists(DestFile).Should().BeTrue(); } } @@ -291,13 +289,13 @@ public override void Because() [Fact] public void Copy_me_text_file_should_exist_in_context_path() { - FileSystem.FileExists(SourceFile).ShouldBeTrue(); + FileSystem.FileExists(SourceFile).Should().BeTrue(); } [Fact] public void Move_me_text_file_should_exist_in_destination_path() { - FileSystem.FileExists(DestFile).ShouldBeTrue(); + FileSystem.FileExists(DestFile).Should().BeTrue(); } } @@ -319,7 +317,7 @@ public override void Because() [Fact] public void Delete_me_text_file_should_not_exist() { - FileSystem.FileExists(DeleteFile).ShouldBeFalse(); + FileSystem.FileExists(DeleteFile).Should().BeFalse(); } } @@ -338,7 +336,7 @@ public override void Because() [Fact] public void Test_directory_should_exist() { - FileSystem.DirectoryExists(TestDirectory).ShouldBeTrue(); + FileSystem.DirectoryExists(TestDirectory).Should().BeTrue(); } } @@ -353,7 +351,7 @@ public override void Because() [Fact] public void Should_have_correct_modified_date() { - FileSystem.GetFileModifiedDate(TheTestFile).ToShortDateString().ShouldEqual(DateTime.Now.AddDays(-1).ToShortDateString()); + FileSystem.GetFileModifiedDate(TheTestFile).ToShortDateString().Should().Be(DateTime.Now.AddDays(-1).ToShortDateString()); } } } diff --git a/src/chocolatey.tests.integration/scenarios/InfoScenarios.cs b/src/chocolatey.tests.integration/scenarios/InfoScenarios.cs index 89f0bb94e..0b0e3a864 100644 --- a/src/chocolatey.tests.integration/scenarios/InfoScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/InfoScenarios.cs @@ -18,7 +18,7 @@ namespace chocolatey.tests.integration.scenarios using NUnit.Framework; - using Should; + using FluentAssertions; public class InfoScenarios { @@ -83,8 +83,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain("installpackage 1.0.0"); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage 1.0.0"); } [Fact] @@ -93,15 +93,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.1.0.0" + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].ShouldContain("1 packages found."); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); + MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); } } @@ -122,8 +122,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain("installpackage 1.0.0"); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage 1.0.0"); } [Fact] @@ -132,15 +132,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.1.0.0" + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].ShouldContain("1 packages found."); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); + MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); } } @@ -161,8 +161,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain("installpackage 1.0.0"); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage 1.0.0"); } [Fact] @@ -171,15 +171,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.1.0.0" + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].ShouldContain("1 packages found."); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); + MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); } } @@ -202,8 +202,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain("installpackage {0}".FormatWith(NormalizedVersion)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage {0}".FormatWith(NormalizedVersion)); } [Fact] @@ -212,15 +212,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.{0}".FormatWith(NonNormalizedVersion) + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].ShouldContain("1 packages found."); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); + MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); } } @@ -245,8 +245,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain("installpackage {0}".FormatWith(NormalizedVersion)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage {0}".FormatWith(NormalizedVersion)); } [Fact] @@ -255,15 +255,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.{0}".FormatWith(NonNormalizedVersion) + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].ShouldContain("1 packages found."); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); + MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); } } @@ -288,8 +288,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain("installpackage {0}".FormatWith(NormalizedVersion)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage {0}".FormatWith(NormalizedVersion)); } [Fact] @@ -298,15 +298,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.{0}".FormatWith(NonNormalizedVersion) + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].ShouldContain("1 packages found."); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); + MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); } } @@ -336,8 +336,8 @@ public override void Because() [Fact] public new void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain("installpackage 1.0.0"); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage 1.0.0"); } [Fact] @@ -346,15 +346,15 @@ public new void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.1.0.0" + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.ShouldContain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].ShouldContain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); + MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); } [Fact] public new void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.ShouldContain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].ShouldContain("1 packages found."); + MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); + MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); } } @@ -372,31 +372,31 @@ public override void Context() [Fact] public void Should_show_only_one_result() { - Results.Count.ShouldEqual(1, "Expected 1 package to be returned!"); + Results.Count.Should().Be(1, "Expected 1 package to be returned!"); } [Fact] public void Should_set_exit_code_to_zero() { - Results[0].ExitCode.ShouldEqual(0); + Results[0].ExitCode.Should().Be(0); } [Fact] public void Should_not_be_reported_as_inconclusive() { - Results[0].Inconclusive.ShouldBeFalse(); + Results[0].Inconclusive.Should().BeFalse(); } [Fact] public void Should_report_expected_name() { - Results[0].Name.ShouldEqual("installpackage"); + Results[0].Name.Should().Be("installpackage"); } [Fact] public void Should_set_source_to_expected_value() { - Results[0].Source.ShouldEqual( + Results[0].Source.Should().Be( ((Platform.GetPlatform() == PlatformType.Windows ? "file:///" : "file://") + Path.Combine(Environment.CurrentDirectory, "PackageOutput")) .Replace("\\","/")); } @@ -404,7 +404,7 @@ public void Should_set_source_to_expected_value() [Fact] public void Should_set_expected_version() { - Results[0].Version.ShouldEqual("1.0.0"); + Results[0].Version.Should().Be("1.0.0"); } } @@ -422,25 +422,25 @@ public override void Context() [Fact] public void Should_show_only_one_result() { - Results.Count.ShouldEqual(1, "Expected 1 package to be returned!"); + Results.Count.Should().Be(1, "Expected 1 package to be returned!"); } [Fact] public void Should_set_exit_code_to_zero() { - Results[0].ExitCode.ShouldEqual(0); + Results[0].ExitCode.Should().Be(0); } [Fact] public void Should_not_be_reported_as_inconclusive() { - Results[0].Inconclusive.ShouldBeFalse(); + Results[0].Inconclusive.Should().BeFalse(); } [Fact] public void Should_report_expected_name() { - Results[0].Name.ShouldEqual("test-package"); + Results[0].Name.Should().Be("test-package"); } [Fact] @@ -451,13 +451,13 @@ public void Should_set_source_to_expected_value() "PrioritySources", "Priority1").Replace('\\', '/'); - Results[0].Source.ShouldEqual(expectedSource); + Results[0].Source.Should().Be(expectedSource); } [Fact] public void Should_set_expected_version() { - Results[0].Version.ShouldEqual("0.1.0"); + Results[0].Version.Should().Be("0.1.0"); } } @@ -478,25 +478,25 @@ public override void Context() [Fact] public void Should_show_only_one_result() { - Results.Count.ShouldEqual(1, "Expected 1 package to be returned!"); + Results.Count.Should().Be(1, "Expected 1 package to be returned!"); } [Fact] public void Should_set_exit_code_to_zero() { - Results[0].ExitCode.ShouldEqual(0); + Results[0].ExitCode.Should().Be(0); } [Fact] public void Should_not_be_reported_as_inconclusive() { - Results[0].Inconclusive.ShouldBeFalse(); + Results[0].Inconclusive.Should().BeFalse(); } [Fact] public void Should_report_expected_name() { - Results[0].Name.ShouldEqual("upgradepackage"); + Results[0].Name.Should().Be("upgradepackage"); } [Fact] @@ -507,13 +507,13 @@ public void Should_set_source_to_expected_value() "PrioritySources", "Priority1").Replace('\\', '/'); - Results[0].Source.ShouldEqual(expectedSource); + Results[0].Source.Should().Be(expectedSource); } [Fact] public void Should_set_expected_version() { - Results[0].Version.ShouldEqual("1.0.0"); + Results[0].Version.Should().Be("1.0.0"); } } } diff --git a/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs b/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs index daa4a6ca0..fb2c89fce 100644 --- a/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs @@ -32,7 +32,7 @@ namespace chocolatey.tests.integration.scenarios using NuGet.Configuration; using NuGet.Packaging; using NUnit.Framework; - using Should; + using FluentAssertions; using IFileSystem = chocolatey.infrastructure.filesystem.IFileSystem; public class InstallScenarios @@ -89,7 +89,7 @@ public void Should_contain_a_message_that_it_would_have_used_Nuget_to_install_a_ if (message.Contains("would have used NuGet to install packages")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -97,13 +97,13 @@ public void Should_contain_a_message_that_it_would_have_used_Nuget_to_install_a_ [Platform(Exclude = "Mono")] public void Should_contain_a_message_that_it_would_have_run_a_powershell_script() { - MockLogger.ContainsMessage("chocolateyinstall.ps1", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("chocolateyinstall.ps1", LogLevel.Info).Should().BeTrue(); } [Fact] public void Should_not_contain_a_message_that_it_would_have_run_powershell_modification_script() { - MockLogger.ContainsMessage("chocolateyBeforeModify.ps1", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("chocolateyBeforeModify.ps1", LogLevel.Info).Should().BeFalse(); } } @@ -138,7 +138,7 @@ public void Should_contain_a_message_that_it_would_have_used_Nuget_to_install_a_ if (message.Contains("would have used NuGet to install packages")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -150,7 +150,7 @@ public void Should_contain_a_message_that_it_was_unable_to_find_package() if (message.Contains("somethingnonexisting not installed. The package was not found with the source(s) listed")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } } @@ -196,7 +196,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual(TestVersion()); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be(TestVersion()); } } @@ -276,7 +276,7 @@ public void Should_have_a_console_shim_that_is_set_for_non_gui_access() if (message.Contains("is gui? False")) messageFound = true; } - messageFound.ShouldBeTrue("GUI false message not found"); + messageFound.Should().BeTrue("GUI false message not found"); } [Fact] @@ -303,7 +303,7 @@ public void Should_have_a_graphical_shim_that_is_set_for_gui_access() if (message.Contains("is gui? True")) messageFound = true; } - messageFound.ShouldBeTrue("GUI true message not found"); + messageFound.Should().BeTrue("GUI true message not found"); } [Fact] @@ -315,37 +315,37 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - packageResult.Version.ShouldEqual(TestVersion()); + packageResult.Version.Should().Be(TestVersion()); } [Fact] @@ -355,7 +355,7 @@ public void Should_have_executed_chocolateyInstall_script() { var message = "installpackage v{0} has been installed".FormatWith(TestVersion()); - MockLogger.ContainsMessage(message, LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage(message, LogLevel.Info).Should().BeTrue(); } protected string TestVersion() @@ -446,7 +446,7 @@ public void Should_contain_a_warning_message_that_it_installed_4_out_of_5_packag if (message.Contains("5/6")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] @@ -458,7 +458,7 @@ public void Should_contain_a_message_that_upgradepackage_with_an_expected_specif if (message.Contains("upgradepackage v1.0.0")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -468,7 +468,7 @@ public void Should_have_a_successful_package_result_for_all_but_expected_missing { if (packageResult.Value.Name.IsEqualTo("missingpackage")) continue; - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -479,7 +479,7 @@ public void Should_not_have_a_successful_package_result_for_missing_package() { if (!packageResult.Value.Name.IsEqualTo("missingpackage")) continue; - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -488,7 +488,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -497,7 +497,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -510,7 +510,7 @@ public void Should_specify_config_file_is_being_used_in_message() if (message.Contains("Installing from config file:")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -522,7 +522,7 @@ public void Should_print_out_package_from_config_file_in_message() if (message.Contains("installpackage")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } } @@ -556,7 +556,7 @@ public void Should_still_have_the_expected_version_of_the_package_installed() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -569,7 +569,7 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_install_any_p if (message.Contains("0/1")) installWarning = true; } - installWarning.ShouldBeTrue(); + installWarning.Should().BeTrue(); } [Fact] @@ -584,19 +584,19 @@ public void Should_contain_a_message_about_force_to_reinstall() } } - installWarning.ShouldBeTrue(); + installWarning.Should().BeTrue(); } [Fact] public void Should_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeTrue(); + packageResult.Inconclusive.Should().BeTrue(); } [Fact] public void Should_ave_warning_package_result() { - packageResult.Warning.ShouldBeTrue(); + packageResult.Warning.Should().BeTrue(); } } @@ -641,7 +641,7 @@ public void Should_install_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -649,7 +649,7 @@ public void Should_install_the_same_version_of_the_package() public void Should_remove_and_re_add_the_package_files_in_the_lib_directory() { var modifiedFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "chocolateyinstall.ps1"); - File.ReadAllText(modifiedFile).ShouldNotEqual(modifiedText); + File.ReadAllText(modifiedFile).Should().NotBe(modifiedText); } [Fact] @@ -669,37 +669,37 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - packageResult.Version.ShouldEqual("1.0.0"); + packageResult.Version.Should().Be("1.0.0"); } } @@ -735,7 +735,7 @@ public void Should_restore_the_backup_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedString().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedString().Should().Be("1.0.0"); } } @@ -743,7 +743,7 @@ public void Should_restore_the_backup_version_of_the_package() public void Should_restore_the_original_files_in_the_package_lib_folder() { var modifiedFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "chocolateyInstall.ps1"); - File.ReadAllText(modifiedFile).ShouldEqual(modifiedText); + File.ReadAllText(modifiedFile).Should().Be(modifiedText); } [Fact] @@ -763,25 +763,25 @@ public void Should_contain_a_message_that_it_was_unsuccessful() if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - packageResult.Success.ShouldBeFalse(); + packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } } @@ -834,7 +834,7 @@ public void Should_reinstall_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -857,37 +857,37 @@ public void Should_contain_a_message_that_it_installed_successfully() if (message.Contains("1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - packageResult.Version.ShouldEqual("1.0.0"); + packageResult.Version.Should().Be("1.0.0"); } } @@ -934,7 +934,7 @@ public void Should_still_have_the_package_installed_with_the_expected_version_of var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -955,25 +955,25 @@ public void Should_contain_a_message_that_it_was_unable_to_reinstall_successfull if (message.Contains("0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - packageResult.Success.ShouldBeFalse(); + packageResult.Success.Should().BeFalse(); } [Fact] public void Should_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeTrue(); + packageResult.Inconclusive.Should().BeTrue(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } } @@ -1010,25 +1010,25 @@ public void Should_contain_a_warning_message_that_it_did_not_install_successfull if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - packageResult.Success.ShouldBeFalse(); + packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] @@ -1043,7 +1043,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -1058,13 +1058,13 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_one() { - packageResult.Version.ShouldEqual("1.0.1"); + packageResult.Version.Should().Be("1.0.1"); } } @@ -1101,25 +1101,25 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_install_a_pac if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - packageResult.Success.ShouldBeFalse(); + packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] @@ -1134,7 +1134,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -1149,7 +1149,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -1196,25 +1196,25 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_install_a_pac if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - packageResult.Success.ShouldBeFalse(); + packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] @@ -1229,7 +1229,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -1244,7 +1244,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -1287,7 +1287,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.Input, Configuration.Input + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedString().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedString().Should().Be("1.0.0"); } } @@ -1300,37 +1300,37 @@ public void Should_contain_a_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.Input); + packageResult.Name.Should().Be(Configuration.Input); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - packageResult.Version.ShouldEqual("1.0.0"); + packageResult.Version.Should().Be("1.0.0"); } } @@ -1380,25 +1380,25 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_install_a_pac if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - packageResult.Success.ShouldBeFalse(); + packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] @@ -1413,7 +1413,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -1428,7 +1428,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -1479,7 +1479,7 @@ public void Should_install_the_expected_version_of_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1492,7 +1492,7 @@ public void Should_contain_a_message_that_everything_installed_successfully() if (message.Contains("3/3")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1500,7 +1500,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -1509,7 +1509,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -1518,7 +1518,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -1527,7 +1527,7 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() { foreach (var packageResult in Results) { - packageResult.Value.Version.ShouldEqual("1.0.0"); + packageResult.Value.Version.Should().Be("1.0.0"); } } } @@ -1575,7 +1575,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1593,7 +1593,7 @@ public void Should_not_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1606,7 +1606,7 @@ public void Should_contain_a_message_that_it_installed_successfully() if (message.Contains("1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1614,7 +1614,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -1623,7 +1623,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -1632,7 +1632,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -1641,7 +1641,7 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() { foreach (var packageResult in Results) { - packageResult.Value.Version.ShouldEqual("1.0.0"); + packageResult.Value.Version.Should().Be("1.0.0"); } } } @@ -1696,7 +1696,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1723,7 +1723,7 @@ public void Should_reinstall_the_floating_dependency_with_the_latest_version_tha var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1733,7 +1733,7 @@ public void Should_reinstall_the_exact_same_version_of_the_exact_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1746,7 +1746,7 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("3/3")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] @@ -1754,7 +1754,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -1763,7 +1763,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -1772,7 +1772,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -1821,7 +1821,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1839,7 +1839,7 @@ public void Should_not_touch_the_floating_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1849,7 +1849,7 @@ public void Should_not_touch_the_exact_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1862,7 +1862,7 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] @@ -1870,7 +1870,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -1879,7 +1879,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -1888,7 +1888,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -1938,7 +1938,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -1965,7 +1965,7 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] @@ -1973,7 +1973,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -1982,7 +1982,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -1991,7 +1991,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -2035,7 +2035,7 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_install_any_p if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] @@ -2043,7 +2043,7 @@ public void Should_not_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -2052,7 +2052,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2061,7 +2061,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -2081,7 +2081,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -2100,7 +2100,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -2142,7 +2142,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); } } @@ -2163,31 +2163,31 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } } @@ -2232,7 +2232,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.6.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.6.0"); } } @@ -2250,7 +2250,7 @@ public void Should_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -2263,7 +2263,7 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("3/3")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] @@ -2271,7 +2271,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -2280,7 +2280,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2289,7 +2289,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -2328,7 +2328,7 @@ public void Should_contain_a_message_that_is_was_unable_to_install_any_packages( if (message.Contains("0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2336,7 +2336,7 @@ public void Should_not_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -2345,7 +2345,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2354,7 +2354,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -2400,7 +2400,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.6.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.6.0"); } } @@ -2413,7 +2413,7 @@ public void Should_contain_a_message_that_it_installed_successfully() if (message.Contains("1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2421,7 +2421,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -2430,7 +2430,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2439,7 +2439,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -2477,7 +2477,7 @@ public void Should_not_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2490,7 +2490,7 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_install_any_p if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] @@ -2498,7 +2498,7 @@ public void Should_not_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -2507,7 +2507,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2516,7 +2516,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -2536,7 +2536,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -2555,7 +2555,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -2601,7 +2601,7 @@ public void Should_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.1"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.1"); } } @@ -2614,7 +2614,7 @@ public void Should_contain_a_message_that_it_installed_successfully() if (message.Contains("installed 2/2")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2622,7 +2622,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -2631,7 +2631,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2640,7 +2640,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -2687,7 +2687,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2697,7 +2697,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2710,7 +2710,7 @@ public void Should_contain_a_message_that_it_was_unable_to_install_any_packages( if (message.Contains("installed 0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2718,7 +2718,7 @@ public void Should_not_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -2727,7 +2727,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2736,7 +2736,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -2756,7 +2756,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -2799,7 +2799,7 @@ public void Should_not_downgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } @@ -2812,7 +2812,7 @@ public void Should_contain_a_message_that_it_was_unable_to_install_any_packages( if (message.Contains("installed 0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2820,7 +2820,7 @@ public void Should_not_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -2829,7 +2829,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2838,7 +2838,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -2858,7 +2858,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -2916,7 +2916,7 @@ public void Should_install_the_expected_version_of_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "childdependencywithlooserversiondependency", "childdependencywithlooserversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2926,7 +2926,7 @@ public void Should_install_the_expected_version_of_the_constrained_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2939,7 +2939,7 @@ public void Should_contain_a_message_that_everything_installed_successfully() if (message.Contains("3/3")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2947,7 +2947,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -2956,7 +2956,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2965,7 +2965,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -2995,7 +2995,7 @@ public override void Because() [Fact] public void Should_have_thrown_exception_when_installing() { - _exception.ShouldBeType(); + _exception.Should().BeOfType(); } [Fact] @@ -3009,7 +3009,7 @@ public void Should_have_outputted_expected_exception_message() .AppendLine(" choco install installpackage --version=\"1.0.0\" --source=\"{0}\"".FormatWith(Configuration.Sources)) .ToString(); - _exception.Message.ShouldEqual(expectedMessage); + _exception.Message.Should().Be(expectedMessage); } [Fact] @@ -3062,7 +3062,7 @@ public override void Because() [Fact] public void Should_have_thrown_exception_when_installing() { - _exception.ShouldBeType(); + _exception.Should().BeOfType(); } [Fact] @@ -3076,7 +3076,7 @@ public void Should_have_outputted_expected_exception_message() .AppendLine(" choco install installpackage --version=\"0.56.0-alpha-0544\" --prerelease --source=\"{0}\"".FormatWith(Configuration.Sources)) .ToString(); - _exception.Message.ShouldEqual(expectedMessage); + _exception.Message.Should().Be(expectedMessage); } [Fact] @@ -3132,7 +3132,7 @@ public override void Because() [Fact] public void Should_have_thrown_exception_when_installing() { - _exception.ShouldBeType(); + _exception.Should().BeOfType(); } [Fact] @@ -3146,7 +3146,7 @@ public void Should_have_outputted_expected_exception_message() .AppendLine(" choco install installpackage --version=\"1.0.0\" --source=\"{0}\"".FormatWith(Configuration.Sources)) .ToString(); - _exception.Message.ShouldEqual(expectedMessage); + _exception.Message.Should().Be(expectedMessage); } [Fact] @@ -3200,13 +3200,13 @@ public override void Because() [Fact] public void Should_have_thrown_exception_when_installing() { - _exception.ShouldBeType(); + _exception.Should().BeOfType(); } [Fact] public void Should_have_outputted_expected_exception_message() { - _exception.Message.ShouldEqual("Package name cannot point directly to a local, or remote file. Please use the --source argument and point it to a local file directory, UNC directory path or a NuGet feed instead."); + _exception.Message.Should().Be("Package name cannot point directly to a local, or remote file. Please use the --source argument and point it to a local file directory, UNC directory path or a NuGet feed instead."); } [Fact] @@ -3260,13 +3260,13 @@ public override void Because() [Fact] public void Should_have_thrown_exception_when_installing() { - _exception.ShouldBeType(); + _exception.Should().BeOfType(); } [Fact] public void Should_have_outputted_expected_exception_message() { - _exception.Message.ShouldEqual("Package name cannot point directly to a package manifest file. Please create a package by running 'choco pack' on the .nuspec file first."); + _exception.Message.Should().Be("Package name cannot point directly to a package manifest file. Please create a package by running 'choco pack' on the .nuspec file first."); } [Fact] @@ -3323,7 +3323,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3336,49 +3336,49 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - packageResult.Version.ShouldEqual("1.0.0"); + packageResult.Version.Should().Be("1.0.0"); } [Fact] public void Should_not_change_the_test_value_in_the_config_due_to_XDT_InsertIfMissing() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='test']/@value").TypedValue.ToStringSafe().ShouldEqual("default 1.0.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='test']/@value").TypedValue.ToStringSafe().Should().Be("default 1.0.0"); } [Fact] public void Should_change_the_testReplace_value_in_the_config_due_to_XDT_Replace() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='testReplace']/@value").TypedValue.ToStringSafe().ShouldEqual("1.0.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='testReplace']/@value").TypedValue.ToStringSafe().Should().Be("1.0.0"); } [Fact] public void Should_add_the_insert_value_in_the_config_due_to_XDT_InsertIfMissing() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insert']/@value").TypedValue.ToStringSafe().ShouldEqual("1.0.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insert']/@value").TypedValue.ToStringSafe().Should().Be("1.0.0"); } } @@ -3398,13 +3398,13 @@ public override void Because() [Fact] public void Should_have_no_sources_enabled_result() { - MockLogger.ContainsMessage("Installation was NOT successful. There are no sources enabled for", LogLevel.Error).ShouldBeTrue(); + MockLogger.ContainsMessage("Installation was NOT successful. There are no sources enabled for", LogLevel.Error).Should().BeTrue(); } [Fact] public void Should_not_install_any_packages() { - Results.Count().ShouldEqual(0); + Results.Count().Should().Be(0); } } @@ -3439,7 +3439,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3466,7 +3466,7 @@ public void Should_install_hook_scripts_to_folder() foreach (string scriptName in hookScripts) { var hookScriptPath = Path.Combine(Scenario.get_top_level(), "hooks", Configuration.PackageNames.Replace(".hook", string.Empty), scriptName); - File.ReadAllText(hookScriptPath).ShouldContain("Write-Output"); + File.ReadAllText(hookScriptPath).Should().Contain("Write-Output"); } } @@ -3479,37 +3479,37 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - _packageResult.Version.ShouldEqual("1.0.0"); + _packageResult.Version.Should().Be("1.0.0"); } } @@ -3552,7 +3552,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3632,7 +3632,7 @@ public void Should_have_a_console_shim_that_is_set_for_non_gui_access() if (message.Contains("is gui? False")) messageFound = true; } - messageFound.ShouldBeTrue("GUI false message not found"); + messageFound.Should().BeTrue("GUI false message not found"); } [Fact] @@ -3659,7 +3659,7 @@ public void Should_have_a_graphical_shim_that_is_set_for_gui_access() if (message.Contains("is gui? True")) messageFound = true; } - messageFound.ShouldBeTrue("GUI true message not found"); + messageFound.Should().BeTrue("GUI true message not found"); } [Fact] @@ -3671,37 +3671,37 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - _packageResult.Version.ShouldEqual("1.0.0"); + _packageResult.Version.Should().Be("1.0.0"); } [Fact] @@ -3709,7 +3709,7 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - MockLogger.ContainsMessage("installpackage v1.0.0 has been installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("installpackage v1.0.0 has been installed", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -3717,7 +3717,7 @@ public void Should_have_executed_chocolateyInstall_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_all_hook_script() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -3725,7 +3725,7 @@ public void Should_have_executed_pre_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_all_hook_script() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-install-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -3733,7 +3733,7 @@ public void Should_have_executed_post_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_installpackage_hook_script() { - MockLogger.ContainsMessage("pre-install-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-install-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -3741,7 +3741,7 @@ public void Should_have_executed_pre_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_installpackage_hook_script() { - MockLogger.ContainsMessage("post-install-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-install-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -3749,7 +3749,7 @@ public void Should_have_executed_post_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_uninstall_hook_script() { - MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -3757,7 +3757,7 @@ public void Should_not_have_executed_uninstall_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_upgradepackage_hook_script() { - MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -3765,7 +3765,7 @@ public void Should_not_have_executed_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_beforemodify_hook_script() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeFalse(); } } @@ -3808,7 +3808,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3888,7 +3888,7 @@ public void Should_have_a_console_shim_that_is_set_for_non_gui_access() if (message.Contains("is gui? False")) messageFound = true; } - messageFound.ShouldBeTrue("GUI false message not found"); + messageFound.Should().BeTrue("GUI false message not found"); } [Fact] @@ -3915,7 +3915,7 @@ public void Should_have_a_graphical_shim_that_is_set_for_gui_access() if (message.Contains("is gui? True")) messageFound = true; } - messageFound.ShouldBeTrue("GUI true message not found"); + messageFound.Should().BeTrue("GUI true message not found"); } [Fact] @@ -3927,37 +3927,37 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - _packageResult.Version.ShouldEqual("1.0.0"); + _packageResult.Version.Should().Be("1.0.0"); } [Fact] @@ -3965,7 +3965,7 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_not_have_executed_chocolateyInstall_script() { - MockLogger.ContainsMessage("portablepackage v1.0.0 has been installed", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("portablepackage v1.0.0 has been installed", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -3973,7 +3973,7 @@ public void Should_not_have_executed_chocolateyInstall_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_all_hook_script() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -3981,7 +3981,7 @@ public void Should_have_executed_pre_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_all_hook_script() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-install-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -3989,7 +3989,7 @@ public void Should_have_executed_post_all_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_uninstall_hook_script() { - MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -3997,7 +3997,7 @@ public void Should_not_have_executed_uninstall_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_upgradepackage_hook_script() { - MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -4005,7 +4005,7 @@ public void Should_not_have_executed_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_beforemodify_hook_script() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeFalse(); } } @@ -4051,7 +4051,7 @@ public void Should_install_the_expected_version_of_the_package() using (var reader = new PackageFolderReader(packageDirectory)) { - reader.NuspecReader.GetVersion().ToNormalizedString().ShouldEqual("2.0.0"); + reader.NuspecReader.GetVersion().ToNormalizedString().Should().Be("2.0.0"); } } @@ -4080,37 +4080,37 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_two_dot_zero_dot_zero() { - packageResult.Version.ShouldEqual("2.0.0"); + packageResult.Version.Should().Be("2.0.0"); } [Fact] @@ -4118,7 +4118,7 @@ public void Should_have_a_version_of_two_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_reported_package_installed() { - MockLogger.ContainsMessage("isdependency 2.0.0 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("isdependency 2.0.0 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -4144,7 +4144,7 @@ public void Should_not_report_success() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -4161,7 +4161,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -4170,7 +4170,7 @@ public void Should_not_have_warning_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -4180,8 +4180,8 @@ public void Should_report_package_not_found() foreach (var packageResult in Results) { var message = packageResult.Value.Messages.First(); - message.MessageType.ShouldEqual(ResultType.Error); - message.Message.ShouldStartWith("non-existing not installed. The package was not found with the source(s) listed."); + message.MessageType.Should().Be(ResultType.Error); + message.Message.Should().StartWith("non-existing not installed. The package was not found with the source(s) listed."); } } } @@ -4231,7 +4231,7 @@ public void Should_install_lower_version_of_package() { foreach (var packageResult in Results) { - packageResult.Value.Version.ShouldEqual("1.0.0"); + packageResult.Value.Version.Should().Be("1.0.0"); } } @@ -4244,7 +4244,7 @@ public void Should_have_installed_expected_version_in_lib_directory() using (var reader = new PackageFolderReader(packageFolder)) { - reader.NuspecReader.GetVersion().ToNormalizedString().ShouldEqual("1.0.0"); + reader.NuspecReader.GetVersion().ToNormalizedString().Should().Be("1.0.0"); } } @@ -4253,7 +4253,7 @@ public void Should_not_have_inconclusive_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -4262,7 +4262,7 @@ public void Should_not_have_warning_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -4271,7 +4271,7 @@ public void Should_have_success_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } } @@ -4320,7 +4320,7 @@ public void Should_have_installed_expected_version_in_lib_directory() using (var reader = new PackageFolderReader(packageFolder)) { - reader.NuspecReader.GetVersion().ToNormalizedString().ShouldEqual("1.0.0"); + reader.NuspecReader.GetVersion().ToNormalizedString().Should().Be("1.0.0"); } } @@ -4329,7 +4329,7 @@ public void Should_install_lower_version_of_package() { foreach (var packageResult in Results) { - packageResult.Value.Version.ShouldEqual("1.0.0"); + packageResult.Value.Version.Should().Be("1.0.0"); } } @@ -4338,7 +4338,7 @@ public void Should_not_have_inconclusive_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -4347,7 +4347,7 @@ public void Should_not_have_warning_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -4356,7 +4356,7 @@ public void Should_have_success_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } } @@ -4427,7 +4427,7 @@ public void Should_instal_expected_package_version(string name, string version) using (var reader = new PackageFolderReader(path)) { - reader.NuspecReader.GetVersion().ToNormalizedString().ShouldEqual(version); + reader.NuspecReader.GetVersion().ToNormalizedString().Should().Be(version); } } @@ -4435,7 +4435,7 @@ public void Should_instal_expected_package_version(string name, string version) public void Should_report_installed_version_of_package(string name, string version) { var package = Results.First(r => r.Key == name); - package.Value.Version.ShouldEqual(version); + package.Value.Version.Should().Be(version); } [Fact] @@ -4443,7 +4443,7 @@ public void Should_not_have_inconclusive_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -4452,7 +4452,7 @@ public void Should_not_have_warning_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -4461,7 +4461,7 @@ public void Should_have_success_package_results() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } } @@ -4510,7 +4510,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -4539,37 +4539,37 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - _packageResult.Version.ShouldEqual("1.0.0"); + _packageResult.Version.Should().Be("1.0.0"); } [Fact] @@ -4577,7 +4577,7 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - MockLogger.ContainsMessage("UpperCase 1.0.0 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("UpperCase 1.0.0 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -4618,7 +4618,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -4647,7 +4647,7 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] @@ -4658,37 +4658,37 @@ public void Should_contain_a_warning_message_about_unsupported_elements() { if (message.Contains("Issues found with nuspec elements")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_have_warning_package_result() { - _packageResult.Warning.ShouldBeTrue(); + _packageResult.Warning.Should().BeTrue(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - _packageResult.Version.ShouldEqual("1.0.0"); + _packageResult.Version.Should().Be("1.0.0"); } [Fact] @@ -4696,7 +4696,7 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - MockLogger.ContainsMessage("unsupportedelements 1.0.0 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("unsupportedelements 1.0.0 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -4740,7 +4740,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual(NonNormalizedVersion); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be(NonNormalizedVersion); } } @@ -4769,37 +4769,37 @@ public void Should_contain_a_warning_message_that_it_installed_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Result_should_have_the_correct_version() { - _packageResult.Version.ShouldEqual(NormalizedVersion); + _packageResult.Version.Should().Be(NonNormalizedVersion); } [Fact] @@ -4807,9 +4807,9 @@ public void Result_should_have_the_correct_version() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - var message = "installpackage v{0} has been installed".FormatWith(NormalizedVersion); + var message = "installpackage v{0} has been installed".FormatWith(NonNormalizedVersion); - MockLogger.ContainsMessage(message, LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage(message, LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4872,7 +4872,7 @@ public void Should_have_a_console_shim_that_is_set_for_non_gui_access() if (message.Contains("is gui? False")) messageFound = true; } - messageFound.ShouldBeTrue("GUI false message not found"); + messageFound.Should().BeTrue("GUI false message not found"); } [Fact] @@ -4899,7 +4899,7 @@ public void Should_have_a_graphical_shim_that_is_set_for_gui_access() if (message.Contains("is gui? True")) messageFound = true; } - messageFound.ShouldBeTrue("GUI true message not found"); + messageFound.Should().BeTrue("GUI true message not found"); } } @@ -4984,7 +4984,7 @@ public void Should_install_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", TargetPackageName, "{0}.nupkg".FormatWith(TargetPackageName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } @@ -4994,14 +4994,14 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", DependencyName, "{0}.nupkg".FormatWith(DependencyName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_installed_successfully() { - MockLogger.ContainsMessage("installed 2/2", LogLevel.Warn).ShouldBeTrue(); + MockLogger.ContainsMessage("installed 2/2", LogLevel.Warn).Should().BeTrue(); } [Fact] @@ -5009,7 +5009,7 @@ public void Should_contain_a_message_that_everything_installed_successfully() [Platform(Exclude = "Mono")] public void Should_not_run_target_package_beforeModify_for_upgraded_version() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeFalse(); } [Fact] @@ -5017,7 +5017,7 @@ public void Should_not_run_target_package_beforeModify_for_upgraded_version() [Platform(Exclude = "Mono")] public void Should_run_already_installed_dependency_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5025,7 +5025,7 @@ public void Should_run_already_installed_dependency_package_beforeModify() [Platform(Exclude = "Mono")] public void Should_not_run_dependency_package_beforeModify_for_upgraded_version() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeFalse(); } [Fact] @@ -5033,7 +5033,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -5042,7 +5042,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -5051,7 +5051,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } diff --git a/src/chocolatey.tests.integration/scenarios/ListScenarios.cs b/src/chocolatey.tests.integration/scenarios/ListScenarios.cs index fdb6c4c28..d0a838c3e 100644 --- a/src/chocolatey.tests.integration/scenarios/ListScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/ListScenarios.cs @@ -21,7 +21,7 @@ namespace chocolatey.tests.integration.scenarios using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.results; using NuGet.Configuration; - using Should; + using FluentAssertions; public class ListScenarios { @@ -62,28 +62,28 @@ public override void Because() [Fact] public void Should_contain_packages_and_versions_with_a_space_between_them() { - MockLogger.ContainsMessage("upgradepackage 1.0.0").ShouldBeTrue(userMessage: "Warnings: " + string.Join("\n", MockLogger.Messages["Info"])); + MockLogger.ContainsMessage("upgradepackage 1.0.0").Should().BeTrue("Warnings: " + string.Join("\n", MockLogger.Messages["Info"])); } [Fact] public void Should_not_contain_packages_and_versions_with_a_pipe_between_them() { - MockLogger.ContainsMessage("upgradepackage|1.0.0").ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage|1.0.0").Should().BeFalse(); } [Fact] public void Should_contain_a_summary() { - MockLogger.ContainsMessage("packages installed").ShouldBeTrue(); + MockLogger.ContainsMessage("packages installed").Should().BeTrue(); } [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeTrue(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); } } @@ -104,13 +104,13 @@ public override void Because() [Fact] public void Should_contain_package_name() { - MockLogger.ContainsMessage("upgradepackage").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage").Should().BeTrue(); } [Fact] public void Should_not_contain_any_version_number() { - MockLogger.ContainsMessage(".0").ShouldBeFalse(); + MockLogger.ContainsMessage(".0").Should().BeFalse(); } } @@ -132,35 +132,35 @@ public override void Because() [Fact] public void Should_contain_packages_and_versions_with_a_pipe_between_them() { - MockLogger.ContainsMessage("upgradepackage|1.0.0").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage|1.0.0").Should().BeTrue(); } [Fact] public void Should_only_have_messages_related_to_package_information() { var count = MockLogger.MessagesFor(LogLevel.Info).OrEmpty().Count(); - count.ShouldEqual(2); + count.Should().Be(2); } [Fact] public void Should_not_contain_packages_and_versions_with_a_space_between_them() { - MockLogger.ContainsMessage("upgradepackage 1.0.0").ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0").Should().BeFalse(); } [Fact] public void Should_not_contain_a_summary() { - MockLogger.ContainsMessage("packages installed").ShouldBeFalse(); + MockLogger.ContainsMessage("packages installed").Should().BeFalse(); } [Fact] public void Should_not_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeFalse(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeFalse(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeFalse(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeFalse(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeFalse(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeFalse(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeFalse(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeFalse(); } } @@ -183,19 +183,19 @@ public override void Because() [Fact] public void Should_contain_packages_id() { - MockLogger.ContainsMessage("upgradepackage").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage").Should().BeTrue(); } [Fact] public void Should_not_contain_any_version_number() { - MockLogger.ContainsMessage(".0").ShouldBeFalse(); + MockLogger.ContainsMessage(".0").Should().BeFalse(); } [Fact] public void Should_not_contain_pipe() { - MockLogger.ContainsMessage("|").ShouldBeFalse(); + MockLogger.ContainsMessage("|").Should().BeFalse(); } } @@ -217,34 +217,34 @@ public override void Because() [Fact] public void Should_contain_packages_and_versions_with_a_space_between_them() { - MockLogger.ContainsMessage("upgradepackage 1.0.0").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.0.0").Should().BeTrue(); } [Fact] public void Should_contain_uppercase_id_package() { - MockLogger.ContainsMessage("UpperCase 1.1.0").ShouldBeTrue(); + MockLogger.ContainsMessage("UpperCase 1.1.0").Should().BeTrue(); } [Fact] public void Should_not_contain_packages_and_versions_with_a_pipe_between_them() { - MockLogger.ContainsMessage("upgradepackage|1.0.0").ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage|1.0.0").Should().BeFalse(); } [Fact] public void Should_contain_a_summary() { - MockLogger.ContainsMessage("packages installed").ShouldBeTrue(); + MockLogger.ContainsMessage("packages installed").Should().BeTrue(); } [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeTrue(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); } } } diff --git a/src/chocolatey.tests.integration/scenarios/PackScenarios.cs b/src/chocolatey.tests.integration/scenarios/PackScenarios.cs index 196927d30..0eb37f7c9 100644 --- a/src/chocolatey.tests.integration/scenarios/PackScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/PackScenarios.cs @@ -28,7 +28,7 @@ namespace chocolatey.tests.integration.scenarios using NUnit.Framework; - using Should; + using FluentAssertions; public class PackScenarios { @@ -71,7 +71,7 @@ public void Should_throw_xml_exception_on_empty_nuspec_file() { AddFile("myPackage.nuspec", string.Empty); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } [TestCase("")] @@ -96,7 +96,7 @@ public void Should_throw_invalid_data_exception_on_invalid_version(string versio ".FormatWith(version)); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } } @@ -154,9 +154,9 @@ public override void AfterObservations() public void Generated_package_should_be_in_current_directory() { var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.ShouldEqual(2); - infos[0].ShouldEqual("Attempting to build package from 'myPackage.nuspec'."); - infos[1].ShouldEqual(string.Concat("Successfully created package '", PackagePath, "'")); + infos.Count.Should().Be(2); + infos[0].Should().Be("Attempting to build package from 'myPackage.nuspec'."); + infos[1].Should().Be(string.Concat("Successfully created package '", PackagePath, "'")); FileAssert.Exists(PackagePath); } @@ -168,7 +168,7 @@ public void Generated_package_should_include_expected_version_in_nuspec() { var version = packageReader.NuspecReader.GetVersion(); - version.ToFullString().ShouldEqual(ExpectedNuspecVersion); + version.ToFullString().Should().Be(ExpectedNuspecVersion); } } @@ -177,11 +177,11 @@ public void Sources_should_be_set_to_current_directory() { if (string.IsNullOrEmpty(ExpectedSubDirectory)) { - Configuration.Sources.ShouldEqual(Scenario.get_top_level()); + Configuration.Sources.Should().Be(Scenario.get_top_level()); } else { - Configuration.Sources.ShouldEqual(ExpectedSubDirectory); + Configuration.Sources.Should().Be(ExpectedSubDirectory); } } @@ -426,9 +426,9 @@ public override void Because() public void Property_settings_should_be_logged_as_debug_messages() { var messages = MockLogger.MessagesFor(LogLevel.Debug); - messages.Count.ShouldEqual(2); - messages.ShouldContain("Setting property 'commitId': 1234abcd"); - messages.ShouldContain("Setting property 'version': 0.1.0"); + messages.Count.Should().Be(2); + messages.Should().ContainEquivalentOf("Setting property 'commitId': 1234abcd"); + messages.Should().ContainEquivalentOf("Setting property 'version': 0.1.0"); } } @@ -439,7 +439,7 @@ public void Should_throw_exception_on_all_unsupported_elements() { AddFile("myPackage.nuspec", NuspecContentWithAllUnsupportedElements); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } [Fact] @@ -447,7 +447,7 @@ public void Should_throw_exception_on_serviceable_element() { AddFile("myPackage.nuspec", NuspecContentWithServiceableElement); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } [Fact] @@ -455,7 +455,7 @@ public void Should_throw_exception_on_license_element() { AddFile("myPackage.nuspec", NuspecContentWithLicenseElement); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } [Fact] @@ -463,7 +463,7 @@ public void Should_throw_exception_on_repository_element() { AddFile("myPackage.nuspec", NuspecContentWithRepositoryElement); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } [Fact] @@ -471,7 +471,7 @@ public void Should_throw_exception_on_package_types_element() { AddFile("myPackage.nuspec", NuspecContentWithPackageTypesElement); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } [Fact] @@ -479,7 +479,7 @@ public void Should_throw_exception_on_framework_references_element() { AddFile("myPackage.nuspec", NuspecContentWithFrameWorkReferencesElement); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } [Fact] @@ -487,7 +487,7 @@ public void Should_throw_exception_on_readme_element() { AddFile("myPackage.nuspec", NuspecContentWithReadmeElement); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } [Fact] @@ -495,7 +495,7 @@ public void Should_throw_exception_on_icon_element() { AddFile("myPackage.nuspec", NuspecContentWithIconElement); - ServiceAct.ShouldThrow(); + ServiceAct.Should().Throw(); } } diff --git a/src/chocolatey.tests.integration/scenarios/PinScenarios.cs b/src/chocolatey.tests.integration/scenarios/PinScenarios.cs index 38cdbc9b1..d7d910d12 100644 --- a/src/chocolatey.tests.integration/scenarios/PinScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/PinScenarios.cs @@ -30,7 +30,7 @@ namespace chocolatey.tests.integration.scenarios using NUnit.Framework; using NuGet.Configuration; - using Should; + using FluentAssertions; public class PinScenarios { @@ -83,15 +83,15 @@ public override void Because() [Fact] public void Should_not_contain_list_results() { - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).ShouldBeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).ShouldBeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).Should().BeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).Should().BeFalse(); } [Fact] public void Should_not_contain_any_pins_by_default() { - MockLogger.ContainsMessage("upgradepackage|1.0.0").ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage|1.0.0").Should().BeFalse(); } } @@ -115,15 +115,15 @@ public override void Because() [Fact] public void Should_not_contain_list_results() { - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).ShouldBeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).ShouldBeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).Should().BeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).Should().BeFalse(); } [Fact] public void Should_contain_existing_pin_messages() { - MockLogger.ContainsMessage("upgradepackage|1.0.0").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage|1.0.0").Should().BeTrue(); } } @@ -149,16 +149,16 @@ public override void Because() [Fact] public void Should_not_contain_list_results() { - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).ShouldBeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).ShouldBeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).Should().BeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).Should().BeFalse(); } [Fact] public void Should_contain_a_pin_message_for_each_existing_pin() { - MockLogger.ContainsMessage("installpackage|1.0.0").ShouldBeTrue(); - MockLogger.ContainsMessage("upgradepackage|1.0.0").ShouldBeTrue(); + MockLogger.ContainsMessage("installpackage|1.0.0").Should().BeTrue(); + MockLogger.ContainsMessage("upgradepackage|1.0.0").Should().BeTrue(); } } @@ -180,7 +180,7 @@ public override void Because() [Fact] public void Should_contain_success_message() { - MockLogger.ContainsMessage("Successfully added a pin for upgradepackage").ShouldBeTrue(); + MockLogger.ContainsMessage("Successfully added a pin for upgradepackage").Should().BeTrue(); } } @@ -203,7 +203,7 @@ public override void Because() [Fact] public void Should_contain_nothing_to_do_message() { - MockLogger.ContainsMessage("Nothing to change. Pin already set or removed.").ShouldBeTrue(); + MockLogger.ContainsMessage("Nothing to change. Pin already set or removed.").Should().BeTrue(); } } @@ -251,7 +251,7 @@ public override void Because() [Fact] public void Should_contain_success_message() { - MockLogger.ContainsMessage("Successfully removed a pin for upgradepackage").ShouldBeTrue(); + MockLogger.ContainsMessage("Successfully removed a pin for upgradepackage").Should().BeTrue(); } } @@ -273,7 +273,7 @@ public override void Because() [Fact] public void Should_contain_nothing_to_do_message() { - MockLogger.ContainsMessage("Nothing to change. Pin already set or removed.").ShouldBeTrue(); + MockLogger.ContainsMessage("Nothing to change. Pin already set or removed.").Should().BeTrue(); } } diff --git a/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs b/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs index 78828b520..8f435677e 100644 --- a/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs @@ -23,7 +23,7 @@ namespace chocolatey.tests.integration.scenarios using chocolatey.infrastructure.results; using NuGet.Configuration; using NUnit.Framework; - using Should; + using FluentAssertions; public class SearchScenarios { @@ -74,9 +74,9 @@ public override void Because() [Fact] public void Should_only_pick_up_package_from_highest_priority() { - Results.Count.ShouldEqual(1); - Results[0].Name.ShouldEqual("upgradepackage"); - Results[0].Version.ShouldEqual("1.0.0"); + Results.Count.Should().Be(1); + Results[0].Name.Should().Be("upgradepackage"); + Results[0].Version.Should().Be("1.0.0"); } } @@ -111,11 +111,11 @@ public override void Because() [Fact] public void Should_only_pick_up_package_from_highest_priority() { - Results.Count.ShouldEqual(2); - Results[0].Name.ShouldEqual("upgradepackage"); - Results[0].Version.ShouldEqual("1.1.1-beta"); - Results[1].Name.ShouldEqual("upgradepackage"); - Results[1].Version.ShouldEqual("1.0.0"); + Results.Count.Should().Be(2); + Results[0].Name.Should().Be("upgradepackage"); + Results[0].Version.Should().Be("1.1.1-beta"); + Results[1].Name.Should().Be("upgradepackage"); + Results[1].Version.Should().Be("1.0.0"); } } @@ -151,15 +151,15 @@ public override void Because() [Fact] public void Should_pick_up_packages_from_all_feeds_except_those_with_same_name() { - Results.Count.ShouldEqual(4); - Results[0].Name.ShouldEqual("conflictingdependency"); - Results[0].Version.ShouldEqual("2.0.0"); - Results[1].Name.ShouldEqual("hasdependency"); - Results[1].Version.ShouldEqual("2.1.0"); - Results[2].Name.ShouldEqual("isdependency"); - Results[2].Version.ShouldEqual("2.1.0"); - Results[3].Name.ShouldEqual("isexactdependency"); - Results[3].Version.ShouldEqual("2.0.0"); + Results.Count.Should().Be(4); + Results[0].Name.Should().Be("conflictingdependency"); + Results[0].Version.Should().Be("2.0.0"); + Results[1].Name.Should().Be("hasdependency"); + Results[1].Version.Should().Be("2.1.0"); + Results[2].Name.Should().Be("isdependency"); + Results[2].Version.Should().Be("2.1.0"); + Results[3].Name.Should().Be("isexactdependency"); + Results[3].Version.Should().Be("2.0.0"); } } @@ -176,34 +176,34 @@ public override void Because() [Platform(Exclude = "Mono")] public void Should_list_available_packages_only_once() { - MockLogger.ContainsMessageCount("upgradepackage").ShouldEqual(1); + MockLogger.ContainsMessageCount("upgradepackage").Should().Be(1); } [Fact] public void Should_contain_packages_and_versions_with_a_space_between_them() { - MockLogger.ContainsMessage("upgradepackage 1.1.0").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.0").Should().BeTrue(); } [Fact] public void Should_not_contain_packages_and_versions_with_a_pipe_between_them() { - MockLogger.ContainsMessage("upgradepackage|1.1.0").ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage|1.1.0").Should().BeFalse(); } [Fact] public void Should_contain_a_summary() { - MockLogger.ContainsMessage("packages found").ShouldBeTrue(); + MockLogger.ContainsMessage("packages found").Should().BeTrue(); } [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeTrue(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); } } @@ -224,28 +224,28 @@ public override void Because() [Fact] public void Should_contain_packages_and_versions_with_a_space_between_them() { - MockLogger.ContainsMessage("upgradepackage 1.1.0").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.0").Should().BeTrue(); } [Fact] public void Should_not_contain_packages_that_do_not_match() { - MockLogger.ContainsMessage("installpackage").ShouldBeFalse(); + MockLogger.ContainsMessage("installpackage").Should().BeFalse(); } [Fact] public void Should_contain_a_summary() { - MockLogger.ContainsMessage("packages found").ShouldBeTrue(); + MockLogger.ContainsMessage("packages found").Should().BeTrue(); } [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeTrue(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); } } @@ -266,35 +266,35 @@ public override void Because() [Fact] public void Should_list_available_packages_as_many_times_as_they_show_on_the_feed() { - MockLogger.ContainsMessageCount("upgradepackage").ShouldNotEqual(0); - MockLogger.ContainsMessageCount("upgradepackage").ShouldNotEqual(1); + MockLogger.ContainsMessageCount("upgradepackage").Should().NotBe(0); + MockLogger.ContainsMessageCount("upgradepackage").Should().NotBe(1); } [Fact] public void Should_contain_packages_and_versions_with_a_space_between_them() { - MockLogger.ContainsMessage("upgradepackage 1.1.0").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.0").Should().BeTrue(); } [Fact] public void Should_not_contain_packages_and_versions_with_a_pipe_between_them() { - MockLogger.ContainsMessage("upgradepackage|1.1.0").ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage|1.1.0").Should().BeFalse(); } [Fact] public void Should_contain_a_summary() { - MockLogger.ContainsMessage("packages found").ShouldBeTrue(); + MockLogger.ContainsMessage("packages found").Should().BeTrue(); } [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeTrue(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); } } @@ -315,46 +315,46 @@ public override void Because() [Fact] public void Should_contain_packages_and_versions_with_a_space_between_them() { - MockLogger.ContainsMessage("upgradepackage 1.1.0").ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.0").Should().BeTrue(); } [Fact] public void Should_contain_description() { - MockLogger.ContainsMessage("Description: ").ShouldBeTrue(); + MockLogger.ContainsMessage("Description: ").Should().BeTrue(); } [Fact] public void Should_contain_tags() { - MockLogger.ContainsMessage("Tags: ").ShouldBeTrue(); + MockLogger.ContainsMessage("Tags: ").Should().BeTrue(); } [Fact] public void Should_contain_download_counts() { - MockLogger.ContainsMessage("Number of Downloads: ").ShouldBeTrue(); + MockLogger.ContainsMessage("Number of Downloads: ").Should().BeTrue(); } [Fact] public void Should_not_contain_packages_and_versions_with_a_pipe_between_them() { - MockLogger.ContainsMessage("upgradepackage|1.1.0").ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage|1.1.0").Should().BeFalse(); } [Fact] public void Should_contain_a_summary() { - MockLogger.ContainsMessage("packages found").ShouldBeTrue(); + MockLogger.ContainsMessage("packages found").Should().BeTrue(); } [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeTrue(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); } } @@ -375,13 +375,13 @@ public override void Because() [Fact] public void Should_have_no_sources_enabled_result() { - MockLogger.ContainsMessage("Unable to search for packages when there are no sources enabled for", LogLevel.Error).ShouldBeTrue(); + MockLogger.ContainsMessage("Unable to search for packages when there are no sources enabled for", LogLevel.Error).Should().BeTrue(); } [Fact] public void Should_not_list_any_packages() { - Results.Count().ShouldEqual(0); + Results.Count().Should().Be(0); } } @@ -413,34 +413,34 @@ public void Should_not_error() [Fact] public void Should_find_exactly_one_result() { - Results.Count.ShouldEqual(1); + Results.Count.Should().Be(1); } [Fact] public void Should_contain_packages_and_versions_with_a_space_between_them() { - MockLogger.ContainsMessage("exactpackage 1.0.0").ShouldBeTrue(); + MockLogger.ContainsMessage("exactpackage 1.0.0").Should().BeTrue(); } [Fact] public void Should_not_contain_packages_that_do_not_match() { - MockLogger.ContainsMessage("exactpackage.dontfind").ShouldBeFalse(); + MockLogger.ContainsMessage("exactpackage.dontfind").Should().BeFalse(); } [Fact] public void Should_contain_a_summary() { - MockLogger.ContainsMessage("packages found").ShouldBeTrue(); + MockLogger.ContainsMessage("packages found").Should().BeTrue(); } [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeTrue(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); } } @@ -474,28 +474,28 @@ public void Should_not_error() [Fact] public void Should_not_have_any_results() { - Results.Count.ShouldEqual(0); + Results.Count.Should().Be(0); } [Fact] public void Should_not_contain_packages_that_do_not_match() { - MockLogger.ContainsMessage("exactpackage.dontfind").ShouldBeFalse(); + MockLogger.ContainsMessage("exactpackage.dontfind").Should().BeFalse(); } [Fact] public void Should_contain_a_summary() { - MockLogger.ContainsMessage("packages found").ShouldBeTrue(); + MockLogger.ContainsMessage("packages found").Should().BeTrue(); } [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).ShouldBeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).ShouldBeTrue(); + MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); } } @@ -528,21 +528,21 @@ public void Should_not_error() [Fact] public void Should_find_two_results() { - Results.Count.ShouldEqual(2); + Results.Count.Should().Be(2); } [Fact] public void Should_find_only_packages_with_exact_id() { - Results[0].PackageMetadata.Id.ShouldEqual("exactpackage"); - Results[1].PackageMetadata.Id.ShouldEqual("exactpackage"); + Results[0].PackageMetadata.Id.Should().Be("exactpackage"); + Results[1].PackageMetadata.Id.Should().Be("exactpackage"); } [Fact] public void Should_find_all_non_prerelease_versions_in_descending_order() { - Results[0].PackageMetadata.Version.ToNormalizedString().ShouldEqual("1.0.0"); - Results[1].PackageMetadata.Version.ToNormalizedString().ShouldEqual("0.9.0"); + Results[0].PackageMetadata.Version.ToNormalizedString().Should().Be("1.0.0"); + Results[1].PackageMetadata.Version.ToNormalizedString().Should().Be("0.9.0"); } } @@ -576,23 +576,23 @@ public void Should_not_error() [Fact] public void Should_find_three_results() { - Results.Count.ShouldEqual(3); + Results.Count.Should().Be(3); } [Fact] public void Should_find_only_packages_with_exact_id() { - Results[0].PackageMetadata.Id.ShouldEqual("exactpackage"); - Results[1].PackageMetadata.Id.ShouldEqual("exactpackage"); - Results[2].PackageMetadata.Id.ShouldEqual("exactpackage"); + Results[0].PackageMetadata.Id.Should().Be("exactpackage"); + Results[1].PackageMetadata.Id.Should().Be("exactpackage"); + Results[2].PackageMetadata.Id.Should().Be("exactpackage"); } [Fact] public void Should_find_all_versions_in_descending_order() { - Results[0].PackageMetadata.Version.ToNormalizedString().ShouldEqual("1.0.0"); - Results[1].PackageMetadata.Version.ToNormalizedString().ShouldEqual("1.0.0-beta1"); - Results[2].PackageMetadata.Version.ToNormalizedString().ShouldEqual("0.9.0"); + Results[0].PackageMetadata.Version.ToNormalizedString().Should().Be("1.0.0"); + Results[1].PackageMetadata.Version.ToNormalizedString().Should().Be("1.0.0-beta1"); + Results[2].PackageMetadata.Version.ToNormalizedString().Should().Be("0.9.0"); } } } diff --git a/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs b/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs index 55d758233..3a36ba084 100644 --- a/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs @@ -28,7 +28,7 @@ namespace chocolatey.tests.integration.scenarios using chocolatey.infrastructure.results; using NuGet.Configuration; using NUnit.Framework; - using Should; + using FluentAssertions; using IFileSystem = chocolatey.infrastructure.filesystem.IFileSystem; public class UninstallScenarios @@ -89,7 +89,7 @@ public void Should_contain_a_message_that_it_would_have_uninstalled_a_package() if (message.Contains("Would have uninstalled installpackage v1.0.0")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -97,7 +97,7 @@ public void Should_contain_a_message_that_it_would_have_uninstalled_a_package() [Platform(Exclude = "Mono")] public void Should_contain_a_message_that_it_would_have_run_a_powershell_script() { - MockLogger.ContainsMessage("chocolateyuninstall.ps1").ShouldBeTrue(); + MockLogger.ContainsMessage("chocolateyuninstall.ps1").Should().BeTrue(); } [Fact] @@ -105,7 +105,7 @@ public void Should_contain_a_message_that_it_would_have_run_a_powershell_script( [Platform(Exclude = "Mono")] public void Should_contain_a_message_that_it_would_have_run_powershell_modification_script() { - MockLogger.ContainsMessage("chocolateyBeforeModify.ps1").ShouldBeTrue(); + MockLogger.ContainsMessage("chocolateyBeforeModify.ps1").Should().BeTrue(); } } @@ -132,7 +132,7 @@ public void Should_contain_a_message_that_it_was_unable_to_find_package() if (message.Contains("somethingnonexisting is not installed. Cannot uninstall a non-existent package")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } } @@ -199,31 +199,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] @@ -231,7 +231,7 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("installpackage 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("installpackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -239,7 +239,7 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("installpackage 1.0.0 Uninstalled", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("installpackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeTrue(); } } @@ -300,31 +300,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } } @@ -346,7 +346,7 @@ public void Should_throw_an_error_that_it_is_not_allowed() { Action m = () => Service.Uninstall(Configuration); - m.ShouldThrow(); + m.Should().Throw(); } } @@ -395,25 +395,25 @@ public void Should_contain_a_message_that_it_uninstalled_successfully() if (message.Contains("uninstalled 1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } } @@ -482,25 +482,25 @@ public void Should_contain_a_message_that_it_uninstalled_successfully() if (message.Contains("uninstalled 1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } } @@ -577,7 +577,7 @@ public void Should_contain_a_message_about_not_all_files_are_removed() } } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -589,25 +589,25 @@ public void Should_contain_a_message_that_it_was_not_able_to_uninstall() if (message.Contains("uninstalled 0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - _packageResult.Success.ShouldBeFalse(); + _packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } } @@ -643,7 +643,7 @@ public void Should_delete_everything_but_the_added_file_from_the_package_directo foreach (var file in files.OrEmpty()) { - Path.GetFileName(file).ShouldEqual("dude.txt", "Expected files were not deleted."); + Path.GetFileName(file).Should().Be("dude.txt", "Expected files were not deleted."); } } @@ -684,31 +684,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } } @@ -744,7 +744,7 @@ public void Should_delete_everything_but_the_changed_file_from_the_package_direc foreach (var file in files.OrEmpty()) { - Path.GetFileName(file).ShouldEqual("chocolateyInstall.ps1", "Expected files were not deleted."); + Path.GetFileName(file).Should().Be("chocolateyInstall.ps1", "Expected files were not deleted."); } } @@ -785,31 +785,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } } @@ -894,31 +894,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } } @@ -947,7 +947,7 @@ public void Should_contain_a_message_that_it_was_unable_to_find_package() if (message.Contains("somethingnonexisting is not installed. Cannot uninstall a non-existent package")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -959,25 +959,25 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - packageResult.Success.ShouldBeFalse(); + packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] @@ -992,7 +992,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -1054,25 +1054,25 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_install_a_pac if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - packageResult.Success.ShouldBeFalse(); + packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] @@ -1087,7 +1087,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -1102,7 +1102,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -1150,31 +1150,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] @@ -1256,31 +1256,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] @@ -1288,7 +1288,7 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("installpackage 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("installpackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1296,7 +1296,7 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("installpackage 1.0.0 Uninstalled", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("installpackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1304,7 +1304,7 @@ public void Should_have_executed_chocolateyUninstall_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_all_hook_script() { - MockLogger.ContainsMessage("pre-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1312,7 +1312,7 @@ public void Should_have_executed_pre_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_all_hook_script() { - MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1320,7 +1320,7 @@ public void Should_have_executed_post_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_installpackage_hook_script() { - MockLogger.ContainsMessage("pre-uninstall-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-uninstall-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1328,7 +1328,7 @@ public void Should_have_executed_pre_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_installpackage_hook_script() { - MockLogger.ContainsMessage("post-uninstall-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-uninstall-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1336,7 +1336,7 @@ public void Should_have_executed_post_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_upgradepackage_hook_script() { - MockLogger.ContainsMessage("pre-uninstall-upgradepackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-uninstall-upgradepackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -1344,7 +1344,7 @@ public void Should_not_have_executed_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_beforemodify_hook_script() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1352,7 +1352,7 @@ public void Should_have_executed_pre_beforemodify_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_beforemodify_hook_script() { - MockLogger.ContainsMessage("post-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); } } @@ -1400,31 +1400,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] @@ -1432,7 +1432,7 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("UpperCase 1.1.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("UpperCase 1.1.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1440,7 +1440,7 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("UpperCase 1.1.0 Uninstalled", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("UpperCase 1.1.0 Uninstalled", LogLevel.Info).Should().BeTrue(); } } @@ -1448,8 +1448,7 @@ public class When_uninstalling_a_package_with_non_normalized_version : Scenarios { private PackageResult packageResult; - private const string NonNormalizedVersion = "0004.0004.00005.00"; - private const string NormalizedVersion = "4.4.5"; + private string NonNormalizedVersion = "0004.0004.00005.00"; public override void Context() { @@ -1519,31 +1518,31 @@ public void Should_contain_a_warning_message_that_it_uninstalled_successfully() if (message.Contains("1/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - packageResult.Success.ShouldBeTrue(); + packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - packageResult.Inconclusive.ShouldBeFalse(); + packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - packageResult.Warning.ShouldBeFalse(); + packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - packageResult.Name.ShouldEqual(Configuration.PackageNames); + packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] @@ -1551,7 +1550,7 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NormalizedVersion), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NonNormalizedVersion), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1559,7 +1558,7 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("upgradepackage {0} Uninstalled".FormatWith(NormalizedVersion), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage {0} Uninstalled".FormatWith(NonNormalizedVersion), LogLevel.Info).Should().BeTrue(); } } @@ -1590,20 +1589,20 @@ public override void Because() public void Should_uninstall_the_package() { var packageFile = Path.Combine(Scenario.get_top_level(), "lib", TargetPackageName, "{0}.nupkg".FormatWith(TargetPackageName)); - File.Exists(packageFile).ShouldBeFalse(); + File.Exists(packageFile).Should().BeFalse(); } [Fact] public void Should_uninstall_the_dependency() { var packageFile = Path.Combine(Scenario.get_top_level(), "lib", DependencyName, "{0}.nupkg".FormatWith(DependencyName)); - File.Exists(packageFile).ShouldBeFalse(); + File.Exists(packageFile).Should().BeFalse(); } [Fact] public void Should_contain_a_message_that_everything_uninstalled_successfully() { - MockLogger.ContainsMessage("uninstalled 2/2", LogLevel.Warn).ShouldBeTrue(); + MockLogger.ContainsMessage("uninstalled 2/2", LogLevel.Warn).Should().BeTrue(); } [Fact] @@ -1611,7 +1610,7 @@ public void Should_contain_a_message_that_everything_uninstalled_successfully() [Platform(Exclude = "Mono")] public void Should_run_target_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1619,7 +1618,7 @@ public void Should_run_target_package_beforeModify() [Platform(Exclude = "Mono")] public void Should_run_dependency_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1627,7 +1626,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -1636,7 +1635,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -1645,7 +1644,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } diff --git a/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs b/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs index b871922ce..e4591a0f3 100644 --- a/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs @@ -32,7 +32,7 @@ namespace chocolatey.tests.integration.scenarios using NuGet.Configuration; using NuGet.Packaging; using NUnit.Framework; - using Should; + using FluentAssertions; using static chocolatey.tests.integration.scenarios.InstallScenarios; public class UpgradeScenarios @@ -80,7 +80,7 @@ public void Should_contain_older_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.0.0"); + File.ReadAllText(shimFile).Should().Be("1.0.0"); } [Fact] @@ -92,7 +92,7 @@ public void Should_contain_a_message_that_a_new_version_is_available() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source(s)")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -104,7 +104,7 @@ public void Should_contain_a_message_that_a_package_can_be_upgraded() if (message.Contains("can upgrade 1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -139,7 +139,7 @@ public void Should_contain_a_message_that_you_have_the_latest_version_available( if (message.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -151,7 +151,7 @@ public void Should_contain_a_message_that_no_packages_can_be_upgraded() if (message.Contains("can upgrade 0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -186,7 +186,7 @@ public void Should_contain_a_message_the_package_was_not_found() if (message.Contains("nonexistentpackage not installed. The package was not found with the source(s) listed")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -198,7 +198,7 @@ public void Should_contain_a_message_that_no_packages_can_be_upgraded() if (message.Contains("can upgrade 0/0")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } } @@ -239,7 +239,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.0"); + File.ReadAllText(shimFile).Should().Be("1.1.0"); } [Fact] @@ -248,7 +248,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -261,7 +261,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -273,19 +273,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -294,19 +294,19 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } [Fact] @@ -314,7 +314,7 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -325,19 +325,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) .Any(p => p.EndsWith("upgradepackage 1.1.0 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -345,7 +345,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.0 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -378,7 +378,7 @@ public void Should_contain_a_message_that_you_have_the_latest_version_available( if (message.Contains("upgradepackage v1.0.0 is the latest version available based on your source(s)")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -390,7 +390,7 @@ public void Should_contain_a_message_that_no_packages_were_upgraded() if (message.Contains("upgraded 0/1 ")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -416,32 +416,32 @@ public void Should_be_the_same_version_of_the_package() using (var reader = new PackageFolderReader(packageFolder)) { - reader.NuspecReader.GetVersion().ToNormalizedString().ShouldEqual("1.0.0"); + reader.NuspecReader.GetVersion().ToNormalizedString().Should().Be("1.0.0"); } } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeTrue(); + _packageResult.Inconclusive.Should().BeTrue(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Should_match_the_original_package_version() { - _packageResult.Version.ShouldEqual("1.0.0"); + _packageResult.Version.Should().Be("1.0.0"); } } @@ -470,7 +470,7 @@ public void Should_contain_a_message_that_you_have_the_latest_version_available( if (message.Contains("upgradepackage v1.1.0 is the latest version available based on your source(s)")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -482,7 +482,7 @@ public void Should_contain_a_message_that_no_packages_were_upgraded() if (message.Contains("upgraded 0/1 ")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -507,32 +507,32 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeTrue(); + _packageResult.Inconclusive.Should().BeTrue(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Should_match_the_original_package_version() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } } @@ -579,7 +579,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.1-beta2"); + File.ReadAllText(shimFile).Should().Be("1.1.1-beta2"); } [Fact] @@ -589,9 +589,9 @@ public void Should_upgrade_the_package() using (var packageReader = new PackageArchiveReader(packageFile)) { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ToStringSafe().ShouldEqual("1.1.1-beta2"); - version.ToString().ShouldEqual("1.1.1-beta2"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.ToStringSafe().Should().Be("1.1.1-beta2"); + version.ToString().Should().Be("1.1.1-beta2"); } } @@ -604,7 +604,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -616,19 +616,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta2 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -637,19 +637,19 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_the_new_beta() { - _packageResult.Version.ShouldEqual("1.1.1-beta2"); + _packageResult.Version.Should().Be("1.1.1-beta2"); } [Fact] @@ -657,7 +657,7 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -668,19 +668,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) .Any(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -688,7 +688,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -737,7 +737,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.1-beta.1"); + File.ReadAllText(shimFile).Should().Be("1.1.1-beta.1"); } [Fact] @@ -747,9 +747,9 @@ public void Should_upgrade_the_package() using (var packageReader = new PackageArchiveReader(packageFile)) { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ToStringSafe().ShouldEqual("1.1.1-beta.1"); - version.ToString().ShouldEqual("1.1.1-beta.1"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.ToStringSafe().Should().Be("1.1.1-beta.1"); + version.ToString().Should().Be("1.1.1-beta.1"); } } @@ -762,7 +762,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -774,19 +774,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta.1 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -795,19 +795,19 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_the_new_beta() { - _packageResult.Version.ShouldEqual("1.1.1-beta.1"); + _packageResult.Version.Should().Be("1.1.1-beta.1"); } [Fact] @@ -815,7 +815,7 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -826,19 +826,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) .Any(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -846,7 +846,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -895,7 +895,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.1-beta2"); + File.ReadAllText(shimFile).Should().Be("1.1.1-beta2"); } [Fact] @@ -906,9 +906,9 @@ public void Should_upgrade_the_package() { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ToStringSafe().ShouldEqual("1.1.1-beta2"); - version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta2"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.ToStringSafe().Should().Be("1.1.1-beta2"); + version.ToStringSafe().Should().Be("1.1.1-beta2"); } } @@ -921,7 +921,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -933,37 +933,37 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.1.1-beta installed. Version 1.1.1-beta2 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_the_new_beta() { - _packageResult.Version.ShouldEqual("1.1.1-beta2"); + _packageResult.Version.Should().Be("1.1.1-beta2"); } [Fact] @@ -971,7 +971,7 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -982,19 +982,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.1.1-beta Before Modification")) .Any(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -1002,7 +1002,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -1053,7 +1053,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.1-beta.1"); + File.ReadAllText(shimFile).Should().Be("1.1.1-beta.1"); } [Fact] @@ -1064,9 +1064,9 @@ public void Should_upgrade_the_package() { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ToStringSafe().ShouldEqual("1.1.1-beta.1"); - version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta.1"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.ToStringSafe().Should().Be("1.1.1-beta.1"); + version.ToStringSafe().Should().Be("1.1.1-beta.1"); } } @@ -1079,7 +1079,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -1091,37 +1091,37 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.1.1-beta installed. Version 1.1.1-beta.1 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_the_new_beta() { - _packageResult.Version.ShouldEqual("1.1.1-beta.1"); + _packageResult.Version.Should().Be("1.1.1-beta.1"); } [Fact] @@ -1129,7 +1129,7 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1140,19 +1140,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.1.1-beta Before Modification")) .Any(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -1160,7 +1160,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -1210,7 +1210,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.1-beta2"); + File.ReadAllText(shimFile).Should().Be("1.1.1-beta2"); } [Fact] @@ -1221,9 +1221,9 @@ public void Should_upgrade_the_package() { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ToStringSafe().ShouldEqual("1.1.1-beta2"); - version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta2"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.ToStringSafe().Should().Be("1.1.1-beta2"); + version.ToStringSafe().Should().Be("1.1.1-beta2"); } } @@ -1236,7 +1236,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -1248,37 +1248,37 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.1.1-beta.1 installed. Version 1.1.1-beta2 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_the_new_beta() { - _packageResult.Version.ShouldEqual("1.1.1-beta2"); + _packageResult.Version.Should().Be("1.1.1-beta2"); } [Fact] @@ -1286,7 +1286,7 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -1297,19 +1297,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.1.1-beta.1 Before Modification")) .Any(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -1317,7 +1317,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -1349,7 +1349,7 @@ public void Should_contain_a_message_that_you_have_the_latest_version_available( if (message.Contains("upgradepackage v1.1.1-beta is newer")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1361,7 +1361,7 @@ public void Should_contain_a_message_that_no_packages_were_upgraded() if (message.Contains("upgraded 0/1 ")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1387,34 +1387,34 @@ public void Should_be_the_same_version_of_the_package() using (var packageReader = new PackageArchiveReader(packageFile)) { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ShouldEqual("1.1.1-beta"); - version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.Should().Be("1.1.1-beta"); + version.ToStringSafe().Should().Be("1.1.1-beta"); } } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeTrue(); + _packageResult.Inconclusive.Should().BeTrue(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Should_only_find_the_last_stable_version() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } } @@ -1447,7 +1447,7 @@ public void Should_contain_a_message_that_you_have_the_latest_version_available( if (message.Contains("upgradepackage v1.1.1-beta is newer")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1459,7 +1459,7 @@ public void Should_contain_a_message_that_no_packages_were_upgraded() if (message.Contains("upgraded 0/1 ")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1485,34 +1485,34 @@ public void Should_be_the_same_version_of_the_package() using (var packageReader = new PackageArchiveReader(packageFile)) { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ShouldEqual("1.1.1-beta"); - version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.Should().Be("1.1.1-beta"); + version.ToStringSafe().Should().Be("1.1.1-beta"); } } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeTrue(); + _packageResult.Inconclusive.Should().BeTrue(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Should_only_find_the_last_stable_version() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } } @@ -1552,7 +1552,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -1569,7 +1569,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.0"); + File.ReadAllText(shimFile).Should().Be("1.1.0"); } [Fact] @@ -1581,7 +1581,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -1593,19 +1593,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -1614,19 +1614,19 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } } @@ -1655,7 +1655,7 @@ public void Should_contain_a_message_that_you_have_the_latest_version_available( if (message.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1667,7 +1667,7 @@ public void Should_contain_a_message_that_no_packages_were_upgraded() if (message.Contains("upgraded 0/1 ")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1692,32 +1692,32 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeTrue(); + _packageResult.Inconclusive.Should().BeTrue(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Should_match_the_existing_version_of_one_dot_zero_dot_zero() { - _packageResult.Version.ShouldEqual("1.0.0"); + _packageResult.Version.Should().Be("1.0.0"); } } @@ -1747,7 +1747,7 @@ public void Should_contain_a_message_that_you_have_the_latest_version_available( if (message.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1759,7 +1759,7 @@ public void Should_contain_a_message_that_the_package_was_upgraded() if (message.Contains("upgraded 1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -1784,32 +1784,32 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Should_match_the_existing_version_of_one_dot_zero_dot_zero() { - _packageResult.Version.ShouldEqual("1.0.0"); + _packageResult.Version.Should().Be("1.0.0"); } } @@ -1831,7 +1831,7 @@ public void Should_throw_an_error_that_it_is_not_allowed() { Action m = () => Service.Upgrade(Configuration); - m.ShouldThrow(); + m.Should().Throw(); } } @@ -1875,7 +1875,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -1892,7 +1892,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.0"); + File.ReadAllText(shimFile).Should().Be("1.1.0"); } [Fact] @@ -1904,7 +1904,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -1916,19 +1916,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -1937,7 +1937,7 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } } @@ -1989,7 +1989,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -2018,7 +2018,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.0"); + File.ReadAllText(shimFile).Should().Be("1.1.0"); } [Fact] @@ -2030,7 +2030,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -2042,19 +2042,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -2063,7 +2063,7 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } } @@ -2116,7 +2116,7 @@ public void Should_contain_old_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.0.0"); + File.ReadAllText(shimFile).Should().Be("1.0.0"); } [Fact] @@ -2125,7 +2125,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2138,7 +2138,7 @@ public void Should_contain_a_warning_message_that_it_was_not_able_to_upgrade() if (message.Contains("upgraded 0/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -2150,25 +2150,25 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - _packageResult.Success.ShouldBeFalse(); + _packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } } @@ -2202,7 +2202,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.0"); + File.ReadAllText(shimFile).Should().Be("1.1.0"); } [Fact] @@ -2211,7 +2211,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -2224,19 +2224,19 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -2245,13 +2245,13 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } } @@ -2277,7 +2277,7 @@ public void Should_update_the_changed_file() { var fileChanged = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "chocolateyinstall.ps1"); - File.ReadAllText(fileChanged).ShouldNotEqual("hellow"); + File.ReadAllText(fileChanged).Should().NotBe("hellow"); } [Fact] @@ -2285,7 +2285,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.0"); + File.ReadAllText(shimFile).Should().Be("1.1.0"); } [Fact] @@ -2294,7 +2294,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -2307,19 +2307,19 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -2328,13 +2328,13 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } } @@ -2371,7 +2371,7 @@ public void Should_contain_a_message_the_package_was_not_found() if (message.Contains("nonexistentpackage not installed. The package was not found with the source(s) listed")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2383,25 +2383,25 @@ public void Should_contain_a_message_that_no_packages_were_upgraded() if (message.Contains("upgraded 0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - _packageResult.Success.ShouldBeFalse(); + _packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] @@ -2416,7 +2416,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -2431,7 +2431,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -2483,25 +2483,25 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } } @@ -2542,25 +2542,25 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_upgrade_a_pac if (message.Contains("0/1")) notInstalled = true; } - notInstalled.ShouldBeTrue(); + notInstalled.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - _packageResult.Success.ShouldBeFalse(); + _packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] @@ -2575,7 +2575,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -2590,7 +2590,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -2626,7 +2626,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2644,7 +2644,7 @@ public void Should_have_the_erroring_upgraded_package_in_the_lib_bad_directory() var packageFile = Path.Combine(Scenario.get_top_level(), "lib-bad", Configuration.PackageNames, "2.0.0", Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } @@ -2665,25 +2665,25 @@ public void Should_contain_a_warning_message_that_it_was_unable_to_upgrade_a_pac if (message.Contains("0/1")) installedSuccessfully = true; } - installedSuccessfully.ShouldBeTrue(); + installedSuccessfully.Should().BeTrue(); } [Fact] public void Should_not_have_a_successful_package_result() { - _packageResult.Success.ShouldBeFalse(); + _packageResult.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] @@ -2698,7 +2698,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -2713,7 +2713,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -2741,7 +2741,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); } } @@ -2751,7 +2751,7 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); } } @@ -2761,7 +2761,7 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } @@ -2774,7 +2774,7 @@ public void Should_contain_a_message_that_everything_upgraded_successfully() if (message.Contains("upgraded 3/3")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2782,7 +2782,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -2791,7 +2791,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2800,7 +2800,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -2829,7 +2829,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2839,7 +2839,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2849,7 +2849,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2862,7 +2862,7 @@ public void Should_contain_a_message_that_it_was_unable_to_upgrade_anything() if (message.Contains("upgraded 0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2870,7 +2870,7 @@ public void Should_not_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -2879,7 +2879,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -2888,7 +2888,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -2908,7 +2908,7 @@ public void Should_have_an_error_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } [Fact] @@ -2927,7 +2927,7 @@ public void Should_have_expected_error_in_package_result() } } - errorFound.ShouldBeTrue(); + errorFound.Should().BeTrue(); } } @@ -2956,7 +2956,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); } } @@ -2966,7 +2966,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2976,7 +2976,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -2989,7 +2989,7 @@ public void Should_contain_a_message_that_it_upgraded_only_the_package_successfu if (message.Contains("upgraded 1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -2997,7 +2997,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -3006,7 +3006,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -3015,7 +3015,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -3044,7 +3044,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -3054,7 +3054,7 @@ public void Should_not_upgrade_the_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3064,7 +3064,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3077,7 +3077,7 @@ public void Should_contain_a_message_the_dependency_upgraded_successfully() if (message.Contains("upgraded 1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -3085,7 +3085,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -3094,7 +3094,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -3103,7 +3103,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -3132,7 +3132,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); } } @@ -3142,7 +3142,7 @@ public void Should_upgrade_the_parent_package_to_highest_version_that_meets_new_ var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); } } @@ -3152,7 +3152,7 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } @@ -3165,7 +3165,7 @@ public void Should_contain_a_message_that_everything_upgraded_successfully() if (message.Contains("upgraded 3/3")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -3173,7 +3173,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -3182,7 +3182,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -3191,7 +3191,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -3222,7 +3222,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); } } @@ -3232,7 +3232,7 @@ public void Should_upgrade_the_parent_package_to_highest_version_that_meets_new_ var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); } } @@ -3242,7 +3242,7 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } @@ -3255,7 +3255,7 @@ public void Should_contain_a_message_that_everything_upgraded_successfully() if (message.Contains("upgraded 3/3")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -3263,7 +3263,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -3272,7 +3272,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -3281,7 +3281,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } @@ -3312,7 +3312,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -3322,7 +3322,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3332,7 +3332,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3345,7 +3345,7 @@ public void Should_contain_a_message_that_everything_upgraded_successfully() if (message.Contains("upgraded 1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -3353,7 +3353,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -3362,7 +3362,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -3371,7 +3371,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -3388,7 +3388,7 @@ public void Should_have_outputted_conflicting_upgrade_message() } } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } } @@ -3420,7 +3420,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -3430,7 +3430,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3440,7 +3440,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3453,7 +3453,7 @@ public void Should_contain_a_message_that_everything_upgraded_successfully() if (message.Contains("upgraded 2/2")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -3461,7 +3461,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -3470,7 +3470,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -3479,7 +3479,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -3497,7 +3497,7 @@ public void Should_have_outputted_conflicting_upgrade_message() } } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } } @@ -3529,7 +3529,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -3539,7 +3539,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3549,7 +3549,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3562,7 +3562,7 @@ public void Should_contain_a_message_that_everything_upgraded_successfully() if (message.Contains("upgraded 1/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -3570,7 +3570,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -3579,7 +3579,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -3588,7 +3588,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -3605,7 +3605,7 @@ public void Should_have_outputted_conflicting_upgrade_message() } } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } } @@ -3636,7 +3636,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3646,7 +3646,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3656,7 +3656,7 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); } } @@ -3669,7 +3669,7 @@ public void Should_contain_a_message_that_nothing_was_upgraded() if (message.Contains("upgraded 0/1")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } [Fact] @@ -3677,7 +3677,7 @@ public void Should_have_an_error_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeFalse(); + packageResult.Value.Success.Should().BeFalse(); } } @@ -3686,7 +3686,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -3695,7 +3695,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } @@ -3708,7 +3708,7 @@ public void Should_have_outputted_expected_error_message() if (message.Contains("Unable to resolve dependency chain. This may be caused by a parent package depending on this package, try specifying a specific version to use or don't ignore any dependencies!")) expectedMessage = true; } - expectedMessage.ShouldBeTrue(); + expectedMessage.Should().BeTrue(); } } @@ -3740,7 +3740,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -3753,19 +3753,19 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -3774,13 +3774,13 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } // any file in a nuget package will overwrite an existing file @@ -3790,25 +3790,25 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Fact] public void Should_not_change_the_test_value_in_the_config_from_original_one_dot_zero_dot_zero_due_to_upgrade_and_XDT_InsertIfMissing() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='test']/@value").TypedValue.ToStringSafe().ShouldEqual("default 1.0.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='test']/@value").TypedValue.ToStringSafe().Should().Be("default 1.0.0"); } [Fact] public void Should_change_the_testReplace_value_in_the_config_due_to_XDT_Replace() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='testReplace']/@value").TypedValue.ToStringSafe().ShouldEqual("1.1.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='testReplace']/@value").TypedValue.ToStringSafe().Should().Be("1.1.0"); } [Fact] public void Should_not_change_the_insert_value_in_the_config_due_to_upgrade_and_XDT_InsertIfMissing() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insert']/@value").TypedValue.ToStringSafe().ShouldEqual("1.0.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insert']/@value").TypedValue.ToStringSafe().Should().Be("1.0.0"); } [Fact] public void Should_add_the_insertNew_value_in_the_config_due_to_XDT_InsertIfMissing() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insertNew']/@value").TypedValue.ToStringSafe().ShouldEqual("1.1.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insertNew']/@value").TypedValue.ToStringSafe().Should().Be("1.1.0"); } } @@ -3843,7 +3843,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -3856,19 +3856,19 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -3877,13 +3877,13 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } // any file in a nuget package will overwrite an existing file @@ -3893,31 +3893,31 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Fact] public void Should_not_change_the_test_value_in_the_config_from_original_one_dot_zero_dot_zero_due_to_upgrade_and_XDT_InsertIfMissing() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='test']/@value").TypedValue.ToStringSafe().ShouldEqual("default 1.0.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='test']/@value").TypedValue.ToStringSafe().Should().Be("default 1.0.0"); } [Fact] public void Should_change_the_testReplace_value_in_the_config_due_to_XDT_Replace() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='testReplace']/@value").TypedValue.ToStringSafe().ShouldEqual("1.1.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='testReplace']/@value").TypedValue.ToStringSafe().Should().Be("1.1.0"); } [Fact] public void Should_not_change_the_insert_value_in_the_config_due_to_upgrade_and_XDT_InsertIfMissing() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insert']/@value").TypedValue.ToStringSafe().ShouldEqual("1.0.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insert']/@value").TypedValue.ToStringSafe().Should().Be("1.0.0"); } [Fact] public void Should_add_the_insertNew_value_in_the_config_due_to_XDT_InsertIfMissing() { - _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insertNew']/@value").TypedValue.ToStringSafe().ShouldEqual("1.1.0"); + _xPathNavigator.SelectSingleNode("//configuration/appSettings/add[@key='insertNew']/@value").TypedValue.ToStringSafe().Should().Be("1.1.0"); } [Fact] public void Should_have_a_config_with_the_comment_from_the_original() { - File.ReadAllText(_xmlFilePath).ShouldContain(CommentAdded); + File.ReadAllText(_xmlFilePath).Should().Contain(CommentAdded); } } @@ -3937,13 +3937,13 @@ public override void Because() [Fact] public void Should_have_no_sources_enabled_result() { - MockLogger.ContainsMessage("Upgrading was NOT successful. There are no sources enabled for", LogLevel.Error).ShouldBeTrue(); + MockLogger.ContainsMessage("Upgrading was NOT successful. There are no sources enabled for", LogLevel.Error).Should().BeTrue(); } [Fact] public void Should_not_have_any_packages_upgraded() { - Results.Count().ShouldEqual(0); + Results.Count().Should().Be(0); } } @@ -3963,23 +3963,23 @@ public override void Because() [Fact] public void Should_report_for_all_installed_packages() { - Results.Count().ShouldEqual(3); + Results.Count().Should().Be(3); } [Fact] public void Should_upgrade_packages_with_upgrades() { var upgradePackageResult = Results.Where(x => x.Key == "upgradepackage").ToList(); - upgradePackageResult.Count.ShouldEqual(1, "upgradepackage must be there once"); - upgradePackageResult.First().Value.Version.ShouldEqual("1.1.0"); + upgradePackageResult.Count.Should().Be(1, "upgradepackage must be there once"); + upgradePackageResult.First().Value.Version.Should().Be("1.1.0"); } [Fact] public void Should_skip_packages_without_upgrades() { var installPackageResult = Results.Where(x => x.Key == "installpackage").ToList(); - installPackageResult.Count.ShouldEqual(1, "installpackage must be there once"); - installPackageResult.First().Value.Version.ShouldEqual("1.0.0"); + installPackageResult.Count.Should().Be(1, "installpackage must be there once"); + installPackageResult.First().Value.Version.Should().Be("1.0.0"); } } @@ -4002,15 +4002,15 @@ public override void Because() [Fact] public void Should_report_for_all_installed_packages() { - Results.Count().ShouldEqual(3); + Results.Count().Should().Be(3); } [Fact] public void Should_upgrade_packages_with_upgrades() { var upgradePackageResult = Results.Where(x => x.Key == "upgradepackage").ToList(); - upgradePackageResult.Count.ShouldEqual(1, "upgradepackage must be there once"); - upgradePackageResult.First().Value.Version.ShouldEqual("1.1.1-beta2"); + upgradePackageResult.Count.Should().Be(1, "upgradepackage must be there once"); + upgradePackageResult.First().Value.Version.Should().Be("1.1.1-beta2"); } [Fact] @@ -4020,9 +4020,9 @@ public void Should_upgrade_upgradepackage() using (var packageReader = new PackageArchiveReader(packageFile)) { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ShouldEqual("1.1.1-beta2"); - version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta2"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.Should().Be("1.1.1-beta2"); + version.ToStringSafe().Should().Be("1.1.1-beta2"); } } @@ -4030,8 +4030,8 @@ public void Should_upgrade_upgradepackage() public void Should_skip_packages_without_upgrades() { var installPackageResult = Results.Where(x => x.Key == "installpackage").ToList(); - installPackageResult.Count.ShouldEqual(1, "installpackage must be there once"); - installPackageResult.First().Value.Version.ShouldEqual("1.0.0"); + installPackageResult.Count.Should().Be(1, "installpackage must be there once"); + installPackageResult.First().Value.Version.Should().Be("1.0.0"); } } @@ -4056,16 +4056,16 @@ public override void Because() [Fact] public void Should_report_for_all_installed_packages() { - Results.Count().ShouldEqual(3); + Results.Count().Should().Be(3); } [Fact] public void Should_upgrade_packages_with_upgrades() { var upgradePackageResult = Results.Where(x => x.Key == "upgradepackage").ToList(); - upgradePackageResult.Count.ShouldEqual(1, "upgradepackage must be there once"); + upgradePackageResult.Count.Should().Be(1, "upgradepackage must be there once"); // available version will show as last stable - upgradePackageResult.First().Value.Version.ShouldEqual("1.1.0"); + upgradePackageResult.First().Value.Version.Should().Be("1.1.0"); } [Fact] @@ -4075,9 +4075,9 @@ public void Should_not_upgrade_upgradepackage() using (var packageReader = new PackageArchiveReader(packageFile)) { var version = packageReader.NuspecReader.GetVersion(); - version.Version.ToStringSafe().ShouldEqual("1.1.1.0"); - version.OriginalVersion.ShouldEqual("1.1.1-beta"); - version.ToNormalizedStringChecked().ShouldEqual("1.1.1-beta"); + version.Version.ToStringSafe().Should().Be("1.1.1.0"); + version.OriginalVersion.Should().Be("1.1.1-beta"); + version.ToStringSafe().Should().Be("1.1.1-beta"); } } @@ -4085,8 +4085,8 @@ public void Should_not_upgrade_upgradepackage() public void Should_skip_packages_without_upgrades() { var installPackageResult = Results.Where(x => x.Key == "installpackage").ToList(); - installPackageResult.Count.ShouldEqual(1, "installpackage must be there once"); - installPackageResult.First().Value.Version.ShouldEqual("1.0.0"); + installPackageResult.Count.Should().Be(1, "installpackage must be there once"); + installPackageResult.First().Value.Version.Should().Be("1.0.0"); } } @@ -4112,7 +4112,7 @@ public override void Because() [Fact] public void Should_have_a_single_package_result() { - Results.Count.ShouldEqual(1, "The returned package results do not have a single value!"); + Results.Count.Should().Be(1, "The returned package results do not have a single value!"); } [Fact] @@ -4144,7 +4144,7 @@ public void Should_contain_newer_version_in_directory() FileAssert.Exists(shimFile); - File.ReadAllText(shimFile).ShouldEqual("1.1.1-beta.1"); + File.ReadAllText(shimFile).Should().Be("1.1.1-beta.1"); } [Fact] @@ -4153,7 +4153,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.1-beta.1"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.1-beta.1"); } } @@ -4166,7 +4166,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -4178,19 +4178,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta.1 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -4199,19 +4199,19 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.1-beta.1"); + _packageResult.Version.Should().Be("1.1.1-beta.1"); } [Fact] @@ -4219,7 +4219,7 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4230,19 +4230,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) .Any(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -4252,7 +4252,7 @@ public void Should_have_executed_chocolateyInstall_script_for_new_package() { const string expectedMessage = "upgradepackage 1.1.1-beta.1 Installed"; - MockLogger.ContainsMessage(expectedMessage, LogLevel.Info).ShouldBeTrue("No log message containing the sentence '{0}' could be found!".FormatWith(expectedMessage)); + MockLogger.ContainsMessage(expectedMessage, LogLevel.Info).Should().BeTrue("No log message containing the sentence '{0}' could be found!".FormatWith(expectedMessage)); } } @@ -4273,15 +4273,15 @@ public override void Because() [Fact] public void Should_report_for_all_non_skipped_packages() { - Results.Count().ShouldEqual(1); - Results.First().Key.ShouldEqual("installpackage"); + Results.Count().Should().Be(1); + Results.First().Key.Should().Be("installpackage"); } [Fact] public void Should_skip_packages_in_except_list() { var upgradePackageResult = Results.Where(x => x.Key == "upgradepackage").ToList(); - upgradePackageResult.Count.ShouldEqual(0, "upgradepackage should not be in the results list"); + upgradePackageResult.Count.Should().Be(0, "upgradepackage should not be in the results list"); } } @@ -4332,7 +4332,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } @@ -4345,7 +4345,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -4357,37 +4357,37 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have scriptpackage.hook v1.0.0 installed. Version 2.0.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_two_dot_zero_dot_zero() { - _packageResult.Version.ShouldEqual("2.0.0"); + _packageResult.Version.Should().Be("2.0.0"); } [Fact] @@ -4405,7 +4405,7 @@ public void Should_install_hook_scripts_to_folder() foreach (string scriptName in hookScripts) { var hookScriptPath = Path.Combine(Scenario.get_top_level(), "hooks", Configuration.PackageNames.Replace(".hook", string.Empty), scriptName); - File.ReadAllText(hookScriptPath).ShouldContain("Write-Output"); + File.ReadAllText(hookScriptPath).Should().Contain("Write-Output"); } } @@ -4469,7 +4469,7 @@ public void Should_contain_newer_version_in_directory() { var shimFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, "tools", "console.exe"); - File.ReadAllText(shimFile).ShouldEqual("1.1.0"); + File.ReadAllText(shimFile).Should().Be("1.1.0"); } [Fact] @@ -4478,7 +4478,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -4491,7 +4491,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -4503,19 +4503,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -4524,19 +4524,19 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } [Fact] @@ -4544,7 +4544,7 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4555,19 +4555,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) .Any(p => p.EndsWith("upgradepackage 1.1.0 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -4575,7 +4575,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.1.0 Installed", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4583,7 +4583,7 @@ public void Should_have_executed_chocolateyInstall_script_for_new_package() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_all_hook_script() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4591,7 +4591,7 @@ public void Should_have_executed_pre_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_all_hook_script() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-install-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4599,7 +4599,7 @@ public void Should_have_executed_post_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_upgradepackage_hook_script() { - MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4607,7 +4607,7 @@ public void Should_have_executed_pre_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_upgradepackage_hook_script() { - MockLogger.ContainsMessage("post-install-upgradepackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-install-upgradepackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4615,7 +4615,7 @@ public void Should_have_executed_post_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_uninstall_hook_script() { - MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -4623,7 +4623,7 @@ public void Should_not_have_executed_uninstall_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_installpackage_hook_script() { - MockLogger.ContainsMessage("pre-install-installpackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-install-installpackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -4631,7 +4631,7 @@ public void Should_not_have_executed_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_beforemodify_hook_script_for_previous_version() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.0.0", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.0.0", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4639,7 +4639,7 @@ public void Should_have_executed_beforemodify_hook_script_for_previous_version() [Platform(Exclude = "Mono")] public void Should_not_have_executed_beforemodify_hook_script_for_upgrade_version() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeFalse(); } } public class When_upgrading_an_existing_package_with_uppercase_id : ScenariosBase @@ -4688,7 +4688,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -4701,7 +4701,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -4713,37 +4713,37 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have UpperCase v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_not_have_warning_package_result() { - _packageResult.Warning.ShouldBeFalse(); + _packageResult.Warning.Should().BeFalse(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } [Fact] @@ -4751,7 +4751,7 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("UpperCase 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("UpperCase 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4762,19 +4762,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("UpperCase 1.0.0 Before Modification")) .Any(p => p.EndsWith("UpperCase 1.1.0 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("UpperCase 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("UpperCase 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("UpperCase 1.1.0 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("UpperCase 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -4782,7 +4782,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("UpperCase 1.1.0 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("UpperCase 1.1.0 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -4824,7 +4824,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("1.1.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); } } @@ -4837,7 +4837,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -4849,7 +4849,7 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have unsupportedelements v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] @@ -4860,37 +4860,37 @@ public void Should_contain_a_warning_message_about_unsupported_elements() { if (message.Contains("Issues found with nuspec elements")) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] public void Should_have_warning_package_result() { - _packageResult.Warning.ShouldBeTrue(); + _packageResult.Warning.Should().BeTrue(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() { - _packageResult.Version.ShouldEqual("1.1.0"); + _packageResult.Version.Should().Be("1.1.0"); } [Fact] @@ -4898,7 +4898,7 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("unsupportedelements 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("unsupportedelements 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -4909,19 +4909,19 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("unsupportedelements 1.0.0 Before Modification")) .Any(p => p.EndsWith("unsupportedelements 1.1.0 Installed")) - .ShouldBeTrue(); + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("unsupportedelements 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("unsupportedelements 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("unsupportedelements 1.1.0 Before Modification", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("unsupportedelements 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); } [Fact] @@ -4929,7 +4929,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("unsupportedelements 1.1.0 Installed", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("unsupportedelements 1.1.0 Installed", LogLevel.Info).Should().BeTrue(); } } @@ -4981,7 +4981,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().ShouldEqual(NonNormalizedVersion); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be(NonNormalizedVersion); } } @@ -4994,7 +4994,7 @@ public void Should_contain_a_warning_message_that_it_upgraded_successfully() if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; } - upgradedSuccessMessage.ShouldBeTrue(); + upgradedSuccessMessage.Should().BeTrue(); } [Fact] @@ -5006,19 +5006,19 @@ public void Should_contain_a_warning_message_with_old_and_new_versions() if (message.Contains("You have upgradepackage v1.0.0 installed. Version {0} is available based on your source".FormatWith(NonNormalizedVersion))) upgradeMessage = true; } - upgradeMessage.ShouldBeTrue(); + upgradeMessage.Should().BeTrue(); } [Fact] public void Should_have_a_successful_package_result() { - _packageResult.Success.ShouldBeTrue(); + _packageResult.Success.Should().BeTrue(); } [Fact] public void Should_not_have_inconclusive_package_result() { - _packageResult.Inconclusive.ShouldBeFalse(); + _packageResult.Inconclusive.Should().BeFalse(); } [Fact] @@ -5027,19 +5027,19 @@ public void Should_not_have_warning_package_result_other_than_before_modify_fail // For before modify scripts that fail, we add a warning message. // So we will ignore any such warnings. var messages = _packageResult.Messages.Where(m => m.MessageType == ResultType.Warn && !m.Message.ContainsSafe("chocolateyBeforeModify")); - messages.ShouldBeEmpty(); + messages.Should().BeEmpty(); } [Fact] public void Config_should_match_package_result_name() { - _packageResult.Name.ShouldEqual(Configuration.PackageNames); + _packageResult.Name.Should().Be(Configuration.PackageNames); } [Fact] public void Should_match_the_upgrade_version() { - _packageResult.Version.ShouldEqual(NormalizedVersion); + _packageResult.Version.Should().Be(NonNormalizedVersion); } [Fact] @@ -5047,7 +5047,7 @@ public void Should_match_the_upgrade_version() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5057,20 +5057,20 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) - .Any(p => p.EndsWith("upgradepackage {0} Installed".FormatWith(NormalizedVersion))) - .ShouldBeTrue(); + .Any(p => p.EndsWith("upgradepackage {0} Installed".FormatWith(NonNormalizedVersion))) + .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NormalizedVersion), LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NonNormalizedVersion), LogLevel.Info).Should().BeFalse(); } [Fact] @@ -5078,7 +5078,7 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage {0} Installed".FormatWith(NormalizedVersion), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("upgradepackage {0} Installed".FormatWith(NonNormalizedVersion), LogLevel.Info).Should().BeTrue(); } } @@ -5167,14 +5167,14 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", DependencyName, "{0}.nupkg".FormatWith(DependencyName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().ShouldEqual("2.0.0"); + packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_upgraded_successfully() { - MockLogger.ContainsMessage("upgraded 2/2", LogLevel.Warn).ShouldBeTrue(); + MockLogger.ContainsMessage("upgraded 2/2", LogLevel.Warn).Should().BeTrue(); } [Fact] @@ -5182,7 +5182,7 @@ public void Should_contain_a_message_that_everything_upgraded_successfully() [Platform(Exclude = "Mono")] public void Should_run_beforemodify_hook_script_for_previous_version_of_target() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5190,7 +5190,7 @@ public void Should_run_beforemodify_hook_script_for_previous_version_of_target() [Platform(Exclude = "Mono")] public void Should_run_already_installed_target_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5198,7 +5198,7 @@ public void Should_run_already_installed_target_package_beforeModify() [Platform(Exclude = "Mono")] public void Should_not_run_beforemodify_hook_script_for_upgrade_version_of_target() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeFalse(); } [Fact] @@ -5206,7 +5206,7 @@ public void Should_not_run_beforemodify_hook_script_for_upgrade_version_of_targe [Platform(Exclude = "Mono")] public void Should_not_run_target_package_beforeModify_for_upgraded_version() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeFalse(); } [Fact] @@ -5214,7 +5214,7 @@ public void Should_not_run_target_package_beforeModify_for_upgraded_version() [Platform(Exclude = "Mono")] public void Should_run_pre_all_hook_script_for_upgraded_version_of_target() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5222,7 +5222,7 @@ public void Should_run_pre_all_hook_script_for_upgraded_version_of_target() [Platform(Exclude = "Mono")] public void Should_run_post_all_hook_script_for_upgraded_version_of_target() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-install-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5230,7 +5230,7 @@ public void Should_run_post_all_hook_script_for_upgraded_version_of_target() [Platform(Exclude = "Mono")] public void Should_run_beforemodify_hook_script_for_previous_version_of_dependency() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5238,7 +5238,7 @@ public void Should_run_beforemodify_hook_script_for_previous_version_of_dependen [Platform(Exclude = "Mono")] public void Should_run_already_installed_dependency_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5246,7 +5246,7 @@ public void Should_run_already_installed_dependency_package_beforeModify() [Platform(Exclude = "Mono")] public void Should_not_run_beforemodify_hook_script_for_upgrade_version_of_dependency() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeFalse(); } [Fact] @@ -5254,7 +5254,7 @@ public void Should_not_run_beforemodify_hook_script_for_upgrade_version_of_depen [Platform(Exclude = "Mono")] public void Should_not_run_dependency_package_beforeModify_for_upgraded_version() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).ShouldBeFalse(); + MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeFalse(); } [Fact] @@ -5262,7 +5262,7 @@ public void Should_not_run_dependency_package_beforeModify_for_upgraded_version( [Platform(Exclude = "Mono")] public void Should_run_pre_all_hook_script_for_upgraded_version_of_dependency() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5270,7 +5270,7 @@ public void Should_run_pre_all_hook_script_for_upgraded_version_of_dependency() [Platform(Exclude = "Mono")] public void Should_run_post_all_hook_script_for_upgraded_version_of_dependency() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).ShouldBeTrue(); + MockLogger.ContainsMessage("post-install-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeTrue(); } [Fact] @@ -5278,7 +5278,7 @@ public void Should_have_a_successful_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Success.ShouldBeTrue(); + packageResult.Value.Success.Should().BeTrue(); } } @@ -5287,7 +5287,7 @@ public void Should_not_have_inconclusive_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Inconclusive.ShouldBeFalse(); + packageResult.Value.Inconclusive.Should().BeFalse(); } } @@ -5296,7 +5296,7 @@ public void Should_not_have_warning_package_result() { foreach (var packageResult in Results) { - packageResult.Value.Warning.ShouldBeFalse(); + packageResult.Value.Warning.Should().BeFalse(); } } } diff --git a/src/chocolatey.tests/infrastructure.app/attributes/CommandForAttributeSpecs.cs b/src/chocolatey.tests/infrastructure.app/attributes/CommandForAttributeSpecs.cs index b4cb255a0..22b2b83e2 100644 --- a/src/chocolatey.tests/infrastructure.app/attributes/CommandForAttributeSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/attributes/CommandForAttributeSpecs.cs @@ -17,7 +17,7 @@ namespace chocolatey.tests.infrastructure.app.attributes { using chocolatey.infrastructure.app.attributes; - using Should; + using FluentAssertions; public class CommandForAttributeSpecs { @@ -43,7 +43,7 @@ public override void Because() [Fact] public void Should_be_set_to_the_string() { - result.ShouldEqual("bob"); + result.Should().Be("bob"); } } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyApiKeyCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyApiKeyCommandSpecs.cs index d3e20399b..6ba00cf99 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyApiKeyCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyApiKeyCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyApiKeyCommandSpecs { @@ -56,13 +56,13 @@ public override void Because() [Fact] public void Should_implement_apikey() { - results.ShouldContain("apikey"); + results.Should().Contain("apikey"); } [Fact] public void Should_implement_setapikey() { - results.ShouldContain("setapikey"); + results.Should().Contain("setapikey"); } } @@ -84,31 +84,31 @@ public override void Because() [Fact] public void Should_clear_previously_set_Source() { - configuration.Sources.ShouldBeNull(); + configuration.Sources.Should().BeNull(); } [Fact] public void Should_add_source_to_the_option_set() { - optionSet.Contains("source").ShouldBeTrue(); + optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - optionSet.Contains("s").ShouldBeTrue(); + optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_apikey_to_the_option_set() { - optionSet.Contains("apikey").ShouldBeTrue(); + optionSet.Contains("apikey").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_apikey_to_the_option_set() { - optionSet.Contains("k").ShouldBeTrue(); + optionSet.Contains("k").Should().BeTrue(); } } @@ -136,9 +136,9 @@ public void Should_throw_when_key_is_set_without_a_source() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); } [Fact] @@ -175,9 +175,9 @@ public void Should_throw_when_key_is_removed_without_a_source() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyConfigCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyConfigCommandSpecs.cs index 2a2493450..b91fcf2f0 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyConfigCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyConfigCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyConfigCommandSpecs { @@ -55,7 +55,7 @@ public override void Because() [Fact] public void Should_implement_config() { - _results.ShouldContain("config"); + _results.Should().Contain("config"); } } @@ -77,13 +77,13 @@ public override void Because() [Fact] public void Should_add_name_to_the_option_set() { - _optionSet.Contains("name").ShouldBeTrue(); + _optionSet.Contains("name").Should().BeTrue(); } [Fact] public void Should_add_value_to_the_option_set() { - _optionSet.Contains("value").ShouldBeTrue(); + _optionSet.Contains("value").Should().BeTrue(); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs index 3eafdd675..0b52a14c6 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.commandline; using chocolatey.infrastructure.filesystem; using Moq; - using Should; + using FluentAssertions; public class ChocolateyExportCommandSpecs { @@ -62,7 +62,7 @@ public override void Because() [Fact] public void Should_implement_help() { - results.ShouldContain("export"); + results.Should().Contain("export"); } } @@ -84,25 +84,25 @@ public override void Because() [Fact] public void Should_add_output_file_path_to_the_option_set() { - optionSet.Contains("output-file-path").ShouldBeTrue(); + optionSet.Contains("output-file-path").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_output_file_path_to_the_option_set() { - optionSet.Contains("o").ShouldBeTrue(); + optionSet.Contains("o").Should().BeTrue(); } [Fact] public void Should_add_include_version_numbers_to_the_option_set() { - optionSet.Contains("include-version-numbers").ShouldBeTrue(); + optionSet.Contains("include-version-numbers").Should().BeTrue(); } [Fact] public void Should_add_include_version_to_the_option_set() { - optionSet.Contains("include-version").ShouldBeTrue(); + optionSet.Contains("include-version").Should().BeTrue(); } } @@ -130,7 +130,7 @@ public void Should_handle_passing_in_an_empty_string_for_output_file_path() unparsedArgs.Add(" "); because(); - configuration.ExportCommand.OutputFilePath.ShouldEqual("packages.config"); + configuration.ExportCommand.OutputFilePath.Should().Be("packages.config"); } [Fact] @@ -140,7 +140,7 @@ public void Should_handle_passing_in_a_string_for_output_file_path() unparsedArgs.Add("custompackages.config"); because(); - configuration.ExportCommand.OutputFilePath.ShouldEqual("custompackages.config"); + configuration.ExportCommand.OutputFilePath.Should().Be("custompackages.config"); } } @@ -161,9 +161,9 @@ public void Should_log_a_message() public void Should_log_the_message_we_expect() { var messages = MockLogger.MessagesFor(LogLevel.Info); - messages.ShouldNotBeEmpty(); - messages.Count.ShouldEqual(1); - messages[0].ShouldContain("Export would have been with options"); + messages.Should().NotBeEmpty(); + messages.Count.Should().Be(1); + messages[0].Should().Contain("Export would have been with options"); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyFeatureCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyFeatureCommandSpecs.cs index 6a8547b6e..0cd14f6eb 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyFeatureCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyFeatureCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyFeatureCommandSpecs { @@ -56,13 +56,13 @@ public override void Because() [Fact] public void Should_implement_feature() { - _results.ShouldContain("feature"); + _results.Should().Contain("feature"); } [Fact] public void Should_implement_features() { - _results.ShouldContain("features"); + _results.Should().Contain("features"); } } @@ -85,13 +85,13 @@ public override void Because() [Fact] public void Should_add_name_to_the_option_set() { - _optionSet.Contains("name").ShouldBeTrue(); + _optionSet.Contains("name").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_name_to_the_option_set() { - _optionSet.Contains("n").ShouldBeTrue(); + _optionSet.Contains("n").Should().BeTrue(); } } @@ -118,7 +118,7 @@ public void Should_use_the_first_unparsed_arg_as_the_subcommand() _unparsedArgs.Add("list"); _because(); - Configuration.FeatureCommand.Command.ShouldEqual(FeatureCommandType.List); + Configuration.FeatureCommand.Command.Should().Be(FeatureCommandType.List); } [Fact] @@ -140,10 +140,10 @@ public void Should_throw_when_more_than_one_unparsed_arg_is_passed() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldContain("A single features command must be listed"); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Contain("A single features command must be listed"); } [Fact] @@ -153,7 +153,7 @@ public void Should_accept_enable_as_the_subcommand() _unparsedArgs.Add("enable"); _because(); - Configuration.FeatureCommand.Command.ShouldEqual(FeatureCommandType.Enable); + Configuration.FeatureCommand.Command.Should().Be(FeatureCommandType.Enable); } [Fact] @@ -163,7 +163,7 @@ public void Should_accept_disable_as_the_subcommand() _unparsedArgs.Add("disable"); _because(); - Configuration.FeatureCommand.Command.ShouldEqual(FeatureCommandType.Disable); + Configuration.FeatureCommand.Command.Should().Be(FeatureCommandType.Disable); } [Fact] @@ -173,7 +173,7 @@ public void Should_set_unrecognized_values_to_list_as_the_subcommand() _unparsedArgs.Add("wtf"); _because(); - Configuration.FeatureCommand.Command.ShouldEqual(FeatureCommandType.List); + Configuration.FeatureCommand.Command.Should().Be(FeatureCommandType.List); } [Fact] @@ -182,7 +182,7 @@ public void Should_default_to_list_as_the_subcommand() Reset(); _because(); - Configuration.FeatureCommand.Command.ShouldEqual(FeatureCommandType.List); + Configuration.FeatureCommand.Command.Should().Be(FeatureCommandType.List); } [Fact] @@ -192,7 +192,7 @@ public void Should_handle_passing_in_an_empty_string() _unparsedArgs.Add(" "); _because(); - Configuration.FeatureCommand.Command.ShouldEqual(FeatureCommandType.List); + Configuration.FeatureCommand.Command.Should().Be(FeatureCommandType.List); } } @@ -223,10 +223,10 @@ public void Should_throw_when_command_is_not_list_and_name_is_not_set() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldEqual("When specifying the subcommand '{0}', you must also specify --name.".FormatWith(Configuration.FeatureCommand.Command.ToStringSafe().ToLower())); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Be("When specifying the subcommand '{0}', you must also specify --name.".FormatWith(Configuration.FeatureCommand.Command.ToStringSafe().ToLower())); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyHelpCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyHelpCommandSpecs.cs index 856235f68..d385fe7aa 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyHelpCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyHelpCommandSpecs.cs @@ -21,7 +21,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.attributes; using chocolatey.infrastructure.app.commands; using chocolatey.infrastructure.app.configuration; - using Should; + using FluentAssertions; public class ChocolateyHelpCommandSpecs { @@ -49,7 +49,7 @@ public override void Because() [Fact] public void Should_implement_help() { - results.ShouldContain("help"); + results.Should().Contain("help"); } } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyInfoCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyInfoCommandSpecs.cs index 7c7b96e40..58082f04d 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyInfoCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyInfoCommandSpecs.cs @@ -25,7 +25,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyInfoCommandSpecs { @@ -55,7 +55,7 @@ public override void Because() [Fact] public void Should_implement_info() { - _results.ShouldContain("info"); + _results.Should().Contain("info"); } } @@ -77,61 +77,61 @@ public override void Because() [Fact] public void Should_add_source_to_the_option_set() { - _optionSet.Contains("source").ShouldBeTrue(); + _optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - _optionSet.Contains("s").ShouldBeTrue(); + _optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_localonly_to_the_option_set() { - _optionSet.Contains("localonly").ShouldBeTrue(); + _optionSet.Contains("localonly").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_localonly_to_the_option_set() { - _optionSet.Contains("l").ShouldBeTrue(); + _optionSet.Contains("l").Should().BeTrue(); } [Fact] public void Should_add_prerelease_to_the_option_set() { - _optionSet.Contains("prerelease").ShouldBeTrue(); + _optionSet.Contains("prerelease").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_prerelease_to_the_option_set() { - _optionSet.Contains("pre").ShouldBeTrue(); + _optionSet.Contains("pre").Should().BeTrue(); } [Fact] public void Should_add_user_to_the_option_set() { - _optionSet.Contains("user").ShouldBeTrue(); + _optionSet.Contains("user").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_user_to_the_option_set() { - _optionSet.Contains("u").ShouldBeTrue(); + _optionSet.Contains("u").Should().BeTrue(); } [Fact] public void Should_add_password_to_the_option_set() { - _optionSet.Contains("password").ShouldBeTrue(); + _optionSet.Contains("password").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_password_to_the_option_set() { - _optionSet.Contains("p").ShouldBeTrue(); + _optionSet.Contains("p").Should().BeTrue(); } } @@ -165,9 +165,9 @@ public void Show_throw_when_package_id_is_not_set() _error = ex; } - _error.ShouldNotBeNull(); - _error.ShouldBeType(); - _error.Message.ShouldContain("A single package name is required to run the choco info command."); + _error.Should().NotBeNull(); + _error.Should().BeOfType(); + _error.Message.Should().Contain("A single package name is required to run the choco info command."); } [Fact] @@ -185,9 +185,9 @@ public void Should_throw_when_multiple_package_ids_set() _error = ex; } - _error.ShouldNotBeNull(); - _error.ShouldBeType(); - _error.Message.ShouldContain("Only a single package name can be passed to the choco info command."); + _error.Should().NotBeNull(); + _error.Should().BeOfType(); + _error.Message.Should().Contain("Only a single package name can be passed to the choco info command."); } } public class When_handling_additional_argument_parsing : ChocolateyInfoCommandSpecsBase @@ -213,7 +213,7 @@ public override void Because() public void Should_set_unparsed_arguments_to_configuration_input() { _because(); - Configuration.Input.ShouldEqual("pkg1 pkg2"); + Configuration.Input.Should().Be("pkg1 pkg2"); } [Fact] @@ -221,7 +221,7 @@ public void Should_leave_source_as_set() { Configuration.ListCommand.LocalOnly = false; _because(); - Configuration.Sources.ShouldEqual(_source); + Configuration.Sources.Should().Be(_source); } [Fact] @@ -229,7 +229,7 @@ public void Should_set_exact_to_true() { Configuration.ListCommand.Exact = false; _because(); - Configuration.ListCommand.Exact.ShouldBeTrue(); + Configuration.ListCommand.Exact.Should().BeTrue(); } [Fact] @@ -237,7 +237,7 @@ public void Should_set_verbose_to_true() { Configuration.Verbose = false; _because(); - Configuration.Verbose.ShouldBeTrue(); + Configuration.Verbose.Should().BeTrue(); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyInstallCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyInstallCommandSpecs.cs index 7a97bbf86..87658e4b1 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyInstallCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyInstallCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyInstallCommandSpecs { @@ -56,7 +56,7 @@ public override void Because() [Fact] public void Should_implement_install() { - results.ShouldContain("install"); + results.Should().Contain("install"); } } @@ -78,181 +78,181 @@ public override void Because() [Fact] public void Should_add_source_to_the_option_set() { - optionSet.Contains("source").ShouldBeTrue(); + optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - optionSet.Contains("s").ShouldBeTrue(); + optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_version_to_the_option_set() { - optionSet.Contains("version").ShouldBeTrue(); + optionSet.Contains("version").Should().BeTrue(); } [Fact] public void Should_allow_insensitive_case_Version_to_the_option_set() { - optionSet.Contains("Version").ShouldBeTrue(); + optionSet.Contains("Version").Should().BeTrue(); } [Fact] public void Should_add_prerelease_to_the_option_set() { - optionSet.Contains("prerelease").ShouldBeTrue(); + optionSet.Contains("prerelease").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_prerelease_to_the_option_set() { - optionSet.Contains("pre").ShouldBeTrue(); + optionSet.Contains("pre").Should().BeTrue(); } [Fact] public void Should_add_installargs_to_the_option_set() { - optionSet.Contains("installarguments").ShouldBeTrue(); + optionSet.Contains("installarguments").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_installargs_to_the_option_set() { - optionSet.Contains("ia").ShouldBeTrue(); + optionSet.Contains("ia").Should().BeTrue(); } [Fact] public void Should_add_overrideargs_to_the_option_set() { - optionSet.Contains("overridearguments").ShouldBeTrue(); + optionSet.Contains("overridearguments").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_overrideargs_to_the_option_set() { - optionSet.Contains("o").ShouldBeTrue(); + optionSet.Contains("o").Should().BeTrue(); } [Fact] public void Should_add_notsilent_to_the_option_set() { - optionSet.Contains("notsilent").ShouldBeTrue(); + optionSet.Contains("notsilent").Should().BeTrue(); } [Fact] public void Should_add_packageparameters_to_the_option_set() { - optionSet.Contains("packageparameters").ShouldBeTrue(); + optionSet.Contains("packageparameters").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_packageparameters_to_the_option_set() { - optionSet.Contains("params").ShouldBeTrue(); + optionSet.Contains("params").Should().BeTrue(); } [Fact] public void Should_add_applyPackageParametersToDependencies_to_the_option_set() { - optionSet.Contains("apply-package-parameters-to-dependencies").ShouldBeTrue(); + optionSet.Contains("apply-package-parameters-to-dependencies").Should().BeTrue(); } [Fact] public void Should_add_applyInstallArgumentsToDependencies_to_the_option_set() { - optionSet.Contains("apply-install-arguments-to-dependencies").ShouldBeTrue(); + optionSet.Contains("apply-install-arguments-to-dependencies").Should().BeTrue(); } [Fact] public void Should_add_ignoredependencies_to_the_option_set() { - optionSet.Contains("ignoredependencies").ShouldBeTrue(); + optionSet.Contains("ignoredependencies").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_ignoredependencies_to_the_option_set() { - optionSet.Contains("i").ShouldBeTrue(); + optionSet.Contains("i").Should().BeTrue(); } [Fact] public void Should_add_forcedependencies_to_the_option_set() { - optionSet.Contains("forcedependencies").ShouldBeTrue(); + optionSet.Contains("forcedependencies").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_forcedependencies_to_the_option_set() { - optionSet.Contains("x").ShouldBeTrue(); + optionSet.Contains("x").Should().BeTrue(); } [Fact] public void Should_add_skippowershell_to_the_option_set() { - optionSet.Contains("skippowershell").ShouldBeTrue(); + optionSet.Contains("skippowershell").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_skippowershell_to_the_option_set() { - optionSet.Contains("n").ShouldBeTrue(); + optionSet.Contains("n").Should().BeTrue(); } [Fact] public void Should_add_user_to_the_option_set() { - optionSet.Contains("user").ShouldBeTrue(); + optionSet.Contains("user").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_user_to_the_option_set() { - optionSet.Contains("u").ShouldBeTrue(); + optionSet.Contains("u").Should().BeTrue(); } [Fact] public void Should_add_password_to_the_option_set() { - optionSet.Contains("password").ShouldBeTrue(); + optionSet.Contains("password").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_password_to_the_option_set() { - optionSet.Contains("p").ShouldBeTrue(); + optionSet.Contains("p").Should().BeTrue(); } [Fact] public void Should_add_pin_to_the_option_set() { - optionSet.Contains("pinpackage").ShouldBeTrue(); + optionSet.Contains("pinpackage").Should().BeTrue(); } [Fact] public void Should_add_long_version_of_pin_to_the_option_set() { - optionSet.Contains("pin-package").ShouldBeTrue(); + optionSet.Contains("pin-package").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_pin_to_the_option_set() { - optionSet.Contains("pin").ShouldBeTrue(); + optionSet.Contains("pin").Should().BeTrue(); } [Fact] public void Should_add_skip_hooks_to_the_option_set() { - optionSet.Contains("skip-hooks").ShouldBeTrue(); + optionSet.Contains("skip-hooks").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_skip_hooks_to_the_option_set() { - optionSet.Contains("skiphooks").ShouldBeTrue(); + optionSet.Contains("skiphooks").Should().BeTrue(); } } @@ -275,7 +275,7 @@ public override void Because() [Fact] public void Should_set_unparsed_arguments_to_the_package_names() { - configuration.PackageNames.ShouldEqual("pkg1;pkg2"); + configuration.PackageNames.Should().Be("pkg1;pkg2"); } } @@ -302,9 +302,9 @@ public void Should_throw_when_packagenames_is_not_set() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyListCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyListCommandSpecs.cs index 8ec8ce987..4c4a509e6 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyListCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyListCommandSpecs.cs @@ -24,7 +24,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public static class ChocolateyListCommandSpecs { @@ -53,19 +53,19 @@ public override void Because() [Fact] public void Should_implement_list() { - _results.ShouldContain("list"); + _results.Should().Contain("list"); } [Fact] public void Should_not_implement_search() { - _results.ShouldNotContain("search"); + _results.Should().NotContain("search"); } [Fact] public void Should_not_implement_find() { - _results.ShouldNotContain("find"); + _results.Should().NotContain("find"); } public class When_configurating_the_argument_parser : ChocolateyListCommandSpecsBase @@ -91,7 +91,7 @@ public override void Because() [NUnit.Framework.TestCase("i")] public void Should_add_to_option_set(string option) { - _optionSet.Contains(option).ShouldBeTrue(); + _optionSet.Contains(option).Should().BeTrue(); } [NUnit.Framework.TestCase("localonly")] @@ -104,7 +104,7 @@ public void Should_add_to_option_set(string option) [NUnit.Framework.TestCase("a")] public void Should_not_add_to_option_set(string option) { - _optionSet.Contains(option).ShouldBeFalse(); + _optionSet.Contains(option).Should().BeFalse(); } } @@ -154,9 +154,9 @@ public void Should_throw_on_unsupported_argument(string argument) error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); } [Fact] @@ -164,7 +164,7 @@ public void Should_set_unparsed_arguments_to_configuration_input_with_limit_outp { Configuration.RegularOutput = false; _because(); - Configuration.Input.ShouldEqual("pkg1 pkg2"); + Configuration.Input.Should().Be("pkg1 pkg2"); } [NUnit.Framework.TestCase("-l")] @@ -175,8 +175,8 @@ public void Should_output_warning_message_about_unsupported_argument_with_limit_ { Configuration.RegularOutput = false; _because(); - MockLogger.Messages.Keys.ShouldContain("Warn"); - MockLogger.Messages["Warn"].ShouldContain("Ignoring the argument {0}. This argument is unsupported for locally installed packages.".FormatWith(argument)); + MockLogger.Messages.Keys.Should().Contain("Warn"); + MockLogger.Messages["Warn"].Should().Contain("Ignoring the argument {0}. This argument is unsupported for locally installed packages.".FormatWith(argument)); } [NUnit.Framework.TestCase("-li")] @@ -185,9 +185,9 @@ public void Should_output_warning_message_about_unsupported_argument_and_set_inc { Configuration.RegularOutput = false; _because(); - MockLogger.Messages.Keys.ShouldContain("Warn"); - MockLogger.Messages["Warn"].ShouldContain("Ignoring the argument {0}. This argument is unsupported for locally installed packages.".FormatWith(argument)); - Configuration.ListCommand.IncludeRegistryPrograms.ShouldBeTrue(); + MockLogger.Messages.Keys.Should().Contain("Warn"); + MockLogger.Messages["Warn"].Should().Contain("Ignoring the argument {0}. This argument is unsupported for locally installed packages.".FormatWith(argument)); + Configuration.ListCommand.IncludeRegistryPrograms.Should().BeTrue(); } } @@ -214,7 +214,7 @@ public void Should_call_service_list_noop() [Fact] public void Should_not_report_any_warning_messages() { - MockLogger.Messages.Keys.ShouldNotContain("Warn"); + MockLogger.Messages.Keys.Should().NotContain("Warn"); } } @@ -240,7 +240,7 @@ public void Should_call_service_list_run() [Fact] public void Should_not_report_any_warning_messages() { - MockLogger.Messages.Keys.ShouldNotContain("Warn"); + MockLogger.Messages.Keys.Should().NotContain("Warn"); } } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyNewCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyNewCommandSpecs.cs index 371236f19..e9dfcf98e 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyNewCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyNewCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.templates; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyNewCommandSpecs { @@ -55,7 +55,7 @@ public override void Because() [Fact] public void Should_implement_new() { - results.ShouldContain("new"); + results.Should().Contain("new"); } } @@ -77,37 +77,37 @@ public override void Because() [Fact] public void Should_add_automaticpackage_to_the_option_set() { - optionSet.Contains("automaticpackage").ShouldBeTrue(); + optionSet.Contains("automaticpackage").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_automaticpackage_to_the_option_set() { - optionSet.Contains("a").ShouldBeTrue(); + optionSet.Contains("a").Should().BeTrue(); } [Fact] public void Should_add_name_to_the_option_set() { - optionSet.Contains("name").ShouldBeTrue(); + optionSet.Contains("name").Should().BeTrue(); } [Fact] public void Should_add_version_to_the_option_set() { - optionSet.Contains("version").ShouldBeTrue(); + optionSet.Contains("version").Should().BeTrue(); } [Fact] public void Should_add_maintainer_to_the_option_set() { - optionSet.Contains("maintainer").ShouldBeTrue(); + optionSet.Contains("maintainer").Should().BeTrue(); } [Fact] public void Should_add_outputdirectory_to_the_option_set() { - optionSet.Contains("outputdirectory").ShouldBeTrue(); + optionSet.Contains("outputdirectory").Should().BeTrue(); } } @@ -133,7 +133,7 @@ public void Should_not_set_template_properties_if_none_have_been_defined() { reset(); because(); - configuration.NewCommand.TemplateProperties.Count.ShouldEqual(0); + configuration.NewCommand.TemplateProperties.Count.Should().Be(0); } [Fact] @@ -144,10 +144,10 @@ public void Should_set_template_properties_when_args_are_separated_by_equals() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("bob"); - templateProperty.Value.ShouldEqual("new"); + templateProperty.Key.Should().Be("bob"); + templateProperty.Value.Should().Be("new"); } [Fact] @@ -159,10 +159,10 @@ public void Should_set_template_properties_only_once() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("bob"); - templateProperty.Value.ShouldEqual("one"); + templateProperty.Key.Should().Be("bob"); + templateProperty.Value.Should().Be("one"); } [Fact] @@ -174,10 +174,10 @@ public void Should_ignore_casing_differences_when_setting_template_properties() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("bob"); - templateProperty.Value.ShouldEqual("one"); + templateProperty.Key.Should().Be("bob"); + templateProperty.Value.Should().Be("one"); } [Fact] @@ -190,10 +190,10 @@ public void Should_not_set_template_properties_when_args_are_not_separated_by_eq because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("PackageName"); - templateProperty.Value.ShouldEqual("bill"); + templateProperty.Key.Should().Be("PackageName"); + templateProperty.Value.Should().Be("bill"); } [Fact] @@ -206,10 +206,10 @@ public void Should_not_set_override_configuration_Name_when_unparsed_without_equ because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("PackageName"); - templateProperty.Value.ShouldEqual("bill"); + templateProperty.Key.Should().Be("PackageName"); + templateProperty.Value.Should().Be("bill"); } [Fact] @@ -223,8 +223,8 @@ public void Should_not_set_override_configuration_Name_when_package_name_is_also var properties = configuration.NewCommand.TemplateProperties; var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("PackageName"); - templateProperty.Value.ShouldEqual("bill"); + templateProperty.Key.Should().Be("PackageName"); + templateProperty.Value.Should().Be("bill"); } [Fact] @@ -235,10 +235,10 @@ public void Should_set_template_properties_when_args_are_separated_by_equals_wit because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("bob"); - templateProperty.Value.ShouldEqual("new"); + templateProperty.Key.Should().Be("bob"); + templateProperty.Value.Should().Be("new"); } [Fact] @@ -249,10 +249,10 @@ public void Should_set_template_properties_without_surrounding_quotes() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("bob"); - templateProperty.Value.ShouldEqual("new this"); + templateProperty.Key.Should().Be("bob"); + templateProperty.Value.Should().Be("new this"); } [Fact] @@ -263,10 +263,10 @@ public void Should_set_template_properties_without_removing_quote() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("bob"); - templateProperty.Value.ShouldEqual("new \"this"); + templateProperty.Key.Should().Be("bob"); + templateProperty.Value.Should().Be("new \"this"); } [Fact] @@ -277,10 +277,10 @@ public void Should_set_template_properties_without_surrounding_apostrophes() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("bob"); - templateProperty.Value.ShouldEqual("new this"); + templateProperty.Key.Should().Be("bob"); + templateProperty.Value.Should().Be("new this"); } [Fact] @@ -291,10 +291,10 @@ public void Should_set_template_properties_without_removing_apostrophe() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.ShouldEqual(1); + properties.Count.Should().Be(1); var templateProperty = properties.FirstOrDefault(); - templateProperty.Key.ShouldEqual("bob"); - templateProperty.Value.ShouldEqual("new 'this"); + templateProperty.Key.Should().Be("bob"); + templateProperty.Value.Should().Be("new 'this"); } } @@ -321,9 +321,9 @@ public void Should_throw_when_Name_is_not_set() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); } [Fact] @@ -381,38 +381,38 @@ public override void Because() [Fact] public void Should_name_equal_to_Bob() { - configuration.NewCommand.Name.ShouldEqual("Bob"); - configuration.NewCommand.TemplateProperties[TemplateValues.NamePropertyName].ShouldEqual("Bob"); + configuration.NewCommand.Name.Should().Be("Bob"); + configuration.NewCommand.TemplateProperties[TemplateValues.NamePropertyName].Should().Be("Bob"); } [Fact] public void Should_automaticpackage_equal_to_true() { - configuration.NewCommand.AutomaticPackage.ShouldBeTrue(); + configuration.NewCommand.AutomaticPackage.Should().BeTrue(); } [Fact] public void Should_templatename_equal_to_custom() { - configuration.NewCommand.TemplateName.ShouldEqual("custom"); + configuration.NewCommand.TemplateName.Should().Be("custom"); } [Fact] public void Should_version_equal_to_42() { - configuration.NewCommand.TemplateProperties[TemplateValues.VersionPropertyName].ShouldEqual("0.42.0"); + configuration.NewCommand.TemplateProperties[TemplateValues.VersionPropertyName].Should().Be("0.42.0"); } [Fact] public void Should_maintainer_equal_to_Loyd() { - configuration.NewCommand.TemplateProperties[TemplateValues.MaintainerPropertyName].ShouldEqual("Loyd"); + configuration.NewCommand.TemplateProperties[TemplateValues.MaintainerPropertyName].Should().Be("Loyd"); } [Fact] public void Should_outputdirectory_equal_packages() { - configuration.OutputDirectory.ShouldEqual("c:\\packages"); + configuration.OutputDirectory.Should().Be("c:\\packages"); } } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyOutdatedCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyOutdatedCommandSpecs.cs index a626cdc3d..a697d5076 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyOutdatedCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyOutdatedCommandSpecs.cs @@ -24,7 +24,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyOutdatedCommandSpecs { @@ -54,7 +54,7 @@ public override void Because() [Fact] public void Should_implement_outdated() { - results.ShouldContain("outdated"); + results.Should().Contain("outdated"); } } @@ -76,43 +76,43 @@ public override void Because() [Fact] public void Should_add_source_to_the_option_set() { - optionSet.Contains("source").ShouldBeTrue(); + optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - optionSet.Contains("s").ShouldBeTrue(); + optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_user_to_the_option_set() { - optionSet.Contains("user").ShouldBeTrue(); + optionSet.Contains("user").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_user_to_the_option_set() { - optionSet.Contains("u").ShouldBeTrue(); + optionSet.Contains("u").Should().BeTrue(); } [Fact] public void Should_add_password_to_the_option_set() { - optionSet.Contains("password").ShouldBeTrue(); + optionSet.Contains("password").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_password_to_the_option_set() { - optionSet.Contains("p").ShouldBeTrue(); + optionSet.Contains("p").Should().BeTrue(); } [Fact] public void Should_add_ignore_pinned_to_the_option_set() { - optionSet.Contains("ignore-pinned").ShouldBeTrue(); + optionSet.Contains("ignore-pinned").Should().BeTrue(); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPackCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPackCommandSpecs.cs index c99c89ae9..db6bb60b7 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPackCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPackCommandSpecs.cs @@ -24,7 +24,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; using System; public class ChocolateyPackCommandSpecs @@ -54,7 +54,7 @@ public override void Because() [Fact] public void Should_implement_pack() { - results.ShouldContain("pack"); + results.Should().Contain("pack"); } } @@ -76,13 +76,13 @@ public override void Because() [Fact] public void Should_add_version_to_the_option_set() { - optionSet.Contains("version").ShouldBeTrue(); + optionSet.Contains("version").Should().BeTrue(); } [Fact] public void Should_add_outputdirectory_to_the_option_set() { - optionSet.Contains("outputdirectory").ShouldBeTrue(); + optionSet.Contains("outputdirectory").Should().BeTrue(); } } @@ -110,27 +110,27 @@ public override void Because() [Fact] public void Should_allow_a_path_to_the_nuspec_to_be_passed_in() { - configuration.Input.ShouldEqual(nuspecPath); + configuration.Input.Should().Be(nuspecPath); } [Fact] public void Should_property_foo_equal_1() { - configuration.PackCommand.Properties["foo"].ShouldEqual("1"); + configuration.PackCommand.Properties["foo"].Should().Be("1"); } [Fact] public void Should_property_bar_equal_baz() { - configuration.PackCommand.Properties["bar"].ShouldEqual("baz"); + configuration.PackCommand.Properties["bar"].Should().Be("baz"); } [Fact] public void Should_log_warning_on_duplicate_foo() { var warnings = MockLogger.MessagesFor(LogLevel.Warn); - warnings.Count.ShouldEqual(1); - warnings[0].ShouldEqual("A value for 'foo' has already been added with the value '1'. Ignoring foo='2'.", StringComparer.OrdinalIgnoreCase); + warnings.Count.Should().Be(1); + warnings[0].Should().BeEquivalentTo("A value for 'foo' has already been added with the value '1'. Ignoring foo='2'."); } } @@ -181,13 +181,13 @@ public override void Because() [Fact] public void Should_version_equal_to_42() { - configuration.Version.ShouldEqual("0.42.0"); + configuration.Version.Should().Be("0.42.0"); } [Fact] public void Should_outputdirectory_equal_packages() { - configuration.OutputDirectory.ShouldEqual("c:\\packages"); + configuration.OutputDirectory.Should().Be("c:\\packages"); } } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs index 79ddbf0af..bc3c8ec0b 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs @@ -34,7 +34,7 @@ namespace chocolatey.tests.infrastructure.app.commands using NUnit.Framework; - using Should; + using FluentAssertions; public class ChocolateyPinCommandSpecs { @@ -93,7 +93,7 @@ public override void Because() [Fact] public void Should_implement_source() { - results.ShouldContain("pin"); + results.Should().Contain("pin"); } } @@ -115,19 +115,19 @@ public override void Because() [Fact] public void Should_add_name_to_the_option_set() { - optionSet.Contains("name").ShouldBeTrue(); + optionSet.Contains("name").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_name_to_the_option_set() { - optionSet.Contains("n").ShouldBeTrue(); + optionSet.Contains("n").Should().BeTrue(); } [Fact] public void Should_add_version_to_the_option_set() { - optionSet.Contains("version").ShouldBeTrue(); + optionSet.Contains("version").Should().BeTrue(); } } @@ -154,7 +154,7 @@ public void Should_use_the_first_unparsed_arg_as_the_subcommand() unparsedArgs.Add("list"); because(); - configuration.PinCommand.Command.ShouldEqual(PinCommandType.List); + configuration.PinCommand.Command.Should().Be(PinCommandType.List); } [Fact] @@ -176,10 +176,10 @@ public void Should_throw_when_more_than_one_unparsed_arg_is_passed() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldContain("A single pin command must be listed"); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Contain("A single pin command must be listed"); } [Fact] @@ -189,7 +189,7 @@ public void Should_accept_add_as_the_subcommand() unparsedArgs.Add("add"); because(); - configuration.PinCommand.Command.ShouldEqual(PinCommandType.Add); + configuration.PinCommand.Command.Should().Be(PinCommandType.Add); } [Fact] @@ -199,7 +199,7 @@ public void Should_accept_uppercase_add_as_the_subcommand() unparsedArgs.Add("ADD"); because(); - configuration.PinCommand.Command.ShouldEqual(PinCommandType.Add); + configuration.PinCommand.Command.Should().Be(PinCommandType.Add); } [Fact] @@ -209,7 +209,7 @@ public void Should_remove_add_as_the_subcommand() unparsedArgs.Add("remove"); because(); - configuration.PinCommand.Command.ShouldEqual(PinCommandType.Remove); + configuration.PinCommand.Command.Should().Be(PinCommandType.Remove); } [Fact] @@ -219,7 +219,7 @@ public void Should_set_unrecognized_values_to_list_as_the_subcommand() unparsedArgs.Add("wtf"); because(); - configuration.PinCommand.Command.ShouldEqual(PinCommandType.List); + configuration.PinCommand.Command.Should().Be(PinCommandType.List); } [Fact] @@ -228,7 +228,7 @@ public void Should_default_to_list_as_the_subcommand() Reset(); because(); - configuration.PinCommand.Command.ShouldEqual(PinCommandType.List); + configuration.PinCommand.Command.Should().Be(PinCommandType.List); } [Fact] @@ -238,7 +238,7 @@ public void Should_handle_passing_in_an_empty_string() unparsedArgs.Add(" "); because(); - configuration.PinCommand.Command.ShouldEqual(PinCommandType.List); + configuration.PinCommand.Command.Should().Be(PinCommandType.List); } [Fact] @@ -247,7 +247,7 @@ public void Should_set_config_sources_to_local_only() Reset(); because(); - configuration.Sources.ShouldEqual(ApplicationParameters.PackagesLocation); + configuration.Sources.Should().Be(ApplicationParameters.PackagesLocation); } [Fact] @@ -256,7 +256,7 @@ public void Should_set_config_local_only_to_true() Reset(); because(); - configuration.ListCommand.LocalOnly.ShouldBeTrue(); + configuration.ListCommand.LocalOnly.Should().BeTrue(); } [Fact] @@ -265,7 +265,7 @@ public void Should_set_config_all_versions_to_true() Reset(); because(); - configuration.AllVersions.ShouldBeTrue(); + configuration.AllVersions.Should().BeTrue(); } } @@ -296,10 +296,10 @@ public void Should_throw_when_command_is_not_list_and_name_is_not_set() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldEqual("When specifying the subcommand '{0}', you must also specify --name.".FormatWith(configuration.PinCommand.Command.ToStringSafe().ToLower())); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Be("When specifying the subcommand '{0}', you must also specify --name.".FormatWith(configuration.PinCommand.Command.ToStringSafe().ToLower())); } [Fact] @@ -336,9 +336,9 @@ public void Should_log_a_message() public void Should_log_the_message_we_expect() { var messages = MockLogger.MessagesFor(tests.LogLevel.Info); - messages.ShouldNotBeEmpty(); - messages.Count.ShouldEqual(1); - messages[0].ShouldContain("Pin would have called"); + messages.Should().NotBeEmpty(); + messages.Count.Should().Be(1); + messages[0].Should().Contain("Pin would have called"); } } @@ -385,7 +385,7 @@ public void Should_log_a_message() [Fact] public void Should_log_one_message() { - MockLogger.Messages.Count.ShouldEqual(1); + MockLogger.Messages.Count.Should().Be(1); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPushCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPushCommandSpecs.cs index 2bcd61bc6..10f40e203 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPushCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPushCommandSpecs.cs @@ -27,7 +27,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.commandline; using Moq; using NUnit.Framework; - using Should; + using FluentAssertions; public class ChocolateyPushCommandSpecs { @@ -58,7 +58,7 @@ public override void Because() [Fact] public void Should_implement_push() { - _results.ShouldContain("push"); + _results.Should().Contain("push"); } } @@ -81,37 +81,37 @@ public override void Because() [Fact] public void Should_clear_previously_set_Source() { - Configuration.Sources.ShouldBeNull(); + Configuration.Sources.Should().BeNull(); } [Fact] public void Should_add_source_to_the_option_set() { - _optionSet.Contains("source").ShouldBeTrue(); + _optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - _optionSet.Contains("s").ShouldBeTrue(); + _optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_apikey_to_the_option_set() { - _optionSet.Contains("apikey").ShouldBeTrue(); + _optionSet.Contains("apikey").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_apikey_to_the_option_set() { - _optionSet.Contains("k").ShouldBeTrue(); + _optionSet.Contains("k").Should().BeTrue(); } [Fact] public void Should_not_add_short_version_of_timeout_to_the_option_set() { - _optionSet.Contains("t").ShouldBeFalse(); + _optionSet.Contains("t").Should().BeFalse(); } } @@ -138,7 +138,7 @@ public void Should_allow_a_path_to_the_nupkg_to_be_passed_in() string nupkgPath = "./some/path/to.nupkg"; _unparsedArgs.Add(nupkgPath); _because(); - Configuration.Input.ShouldEqual(nupkgPath); + Configuration.Input.Should().Be(nupkgPath); } } @@ -160,7 +160,7 @@ public void Should_not_override_explicit_source_if_defaultpushsource_is_set() Configuration.PushCommand.DefaultSource = "https://localhost/default/source"; _because(); - Configuration.Sources.ShouldEqual("https://localhost/somewhere/out/there"); + Configuration.Sources.Should().Be("https://localhost/somewhere/out/there"); } @@ -174,7 +174,7 @@ public void Should_set_the_source_to_defaultpushsource_if_set_and_no_explicit_so _because(); - Configuration.Sources.ShouldEqual("https://localhost/default/source"); + Configuration.Sources.Should().Be("https://localhost/default/source"); } [Fact] @@ -196,10 +196,10 @@ public void Should_throw_when_defaultpushsource_is_not_set_and_no_explicit_sourc error = ex; } - errorred.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldContain("Default push source configuration is not set."); + errorred.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Contain("Default push source configuration is not set."); } [Fact] @@ -231,10 +231,10 @@ public void Should_throw_if_apikey_is_not_found_for_source() error = ex; } - errorred.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldContain($"An API key was not found for '{Configuration.Sources}'"); + errorred.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Contain($"An API key was not found for '{Configuration.Sources}'"); } [Fact] @@ -245,7 +245,7 @@ public void Should_not_try_to_determine_the_key_if_passed_in_as_an_argument() Configuration.Sources = "https://localhost/somewhere/out/there"; _because(); - Configuration.PushCommand.Key.ShouldEqual(_apiKey); + Configuration.PushCommand.Key.Should().Be(_apiKey); ConfigSettingsService.Verify(c => c.GetApiKey(It.IsAny(), It.IsAny>()), Times.Never); } @@ -292,7 +292,7 @@ public void Should_update_source_if_alias_is_passed() }; _because(); - Configuration.Sources.ShouldEqual("https://localhost/somewhere/out/there"); + Configuration.Sources.Should().Be("https://localhost/somewhere/out/there"); } [Fact] @@ -311,7 +311,7 @@ public void Should_update_source_if_alias_is_passed_via_defaultpushsource() }; _because(); - Configuration.Sources.ShouldEqual("https://localhost/somewhere/out/there"); + Configuration.Sources.Should().Be("https://localhost/somewhere/out/there"); } [Fact] @@ -332,10 +332,10 @@ public void Should_throw_when_apiKey_has_not_been_set_or_determined_for_a_https_ error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldContain("API key was not found"); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Contain("API key was not found"); } [Fact] @@ -381,10 +381,10 @@ public void Should_throw_when_source_is_http_and_not_secure() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldContain("WARNING! The specified source '{0}' is not secure".FormatWith(Configuration.Sources)); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Contain("WARNING! The specified source '{0}' is not secure".FormatWith(Configuration.Sources)); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateySearchCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateySearchCommandSpecs.cs index a9d3c460c..b3a128ff1 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateySearchCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateySearchCommandSpecs.cs @@ -25,7 +25,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateySearchCommandSpecs { @@ -55,19 +55,19 @@ public override void Because() [Fact] public void Should_not_implement_list() { - results.ShouldNotContain("list"); + results.Should().NotContain("list"); } [Fact] public void Should_implement_search() { - results.ShouldContain("search"); + results.Should().Contain("search"); } [Fact] public void Should_implement_find() { - results.ShouldContain("find"); + results.Should().Contain("find"); } } @@ -90,73 +90,73 @@ public override void Because() [Fact] public void Should_add_source_to_the_option_set() { - optionSet.Contains("source").ShouldBeTrue(); + optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - optionSet.Contains("s").ShouldBeTrue(); + optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_prerelease_to_the_option_set() { - optionSet.Contains("prerelease").ShouldBeTrue(); + optionSet.Contains("prerelease").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_prerelease_to_the_option_set() { - optionSet.Contains("pre").ShouldBeTrue(); + optionSet.Contains("pre").Should().BeTrue(); } [Fact] public void Should_add_includeprograms_to_the_option_set() { - optionSet.Contains("includeprograms").ShouldBeTrue(); + optionSet.Contains("includeprograms").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_includeprograms_to_the_option_set() { - optionSet.Contains("i").ShouldBeTrue(); + optionSet.Contains("i").Should().BeTrue(); } [Fact] public void Should_add_allversions_to_the_option_set() { - optionSet.Contains("allversions").ShouldBeTrue(); + optionSet.Contains("allversions").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_allversions_to_the_option_set() { - optionSet.Contains("a").ShouldBeTrue(); + optionSet.Contains("a").Should().BeTrue(); } [Fact] public void Should_add_user_to_the_option_set() { - optionSet.Contains("user").ShouldBeTrue(); + optionSet.Contains("user").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_user_to_the_option_set() { - optionSet.Contains("u").ShouldBeTrue(); + optionSet.Contains("u").Should().BeTrue(); } [Fact] public void Should_add_password_to_the_option_set() { - optionSet.Contains("password").ShouldBeTrue(); + optionSet.Contains("password").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_password_to_the_option_set() { - optionSet.Contains("p").ShouldBeTrue(); + optionSet.Contains("p").Should().BeTrue(); } } @@ -185,73 +185,73 @@ public override void Because() [Fact] public void Should_add_source_to_the_option_set() { - optionSet.Contains("source").ShouldBeTrue(); + optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - optionSet.Contains("s").ShouldBeTrue(); + optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_prerelease_to_the_option_set() { - optionSet.Contains("prerelease").ShouldBeTrue(); + optionSet.Contains("prerelease").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_prerelease_to_the_option_set() { - optionSet.Contains("pre").ShouldBeTrue(); + optionSet.Contains("pre").Should().BeTrue(); } [Fact] public void Should_add_includeprograms_to_the_option_set() { - optionSet.Contains("includeprograms").ShouldBeTrue(); + optionSet.Contains("includeprograms").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_includeprograms_to_the_option_set() { - optionSet.Contains("i").ShouldBeTrue(); + optionSet.Contains("i").Should().BeTrue(); } [Fact] public void Should_add_allversions_to_the_option_set() { - optionSet.Contains("allversions").ShouldBeTrue(); + optionSet.Contains("allversions").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_allversions_to_the_option_set() { - optionSet.Contains("a").ShouldBeTrue(); + optionSet.Contains("a").Should().BeTrue(); } [Fact] public void Should_add_user_to_the_option_set() { - optionSet.Contains("user").ShouldBeTrue(); + optionSet.Contains("user").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_user_to_the_option_set() { - optionSet.Contains("u").ShouldBeTrue(); + optionSet.Contains("u").Should().BeTrue(); } [Fact] public void Should_add_password_to_the_option_set() { - optionSet.Contains("password").ShouldBeTrue(); + optionSet.Contains("password").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_password_to_the_option_set() { - optionSet.Contains("p").ShouldBeTrue(); + optionSet.Contains("p").Should().BeTrue(); } } @@ -278,7 +278,7 @@ public override void Because() public void Should_set_unparsed_arguments_to_configuration_input() { because(); - configuration.Input.ShouldEqual("pkg1 pkg2"); + configuration.Input.Should().Be("pkg1 pkg2"); } [Fact] @@ -286,7 +286,7 @@ public void Should_leave_source_as_set() { configuration.ListCommand.LocalOnly = false; because(); - configuration.Sources.ShouldEqual(source); + configuration.Sources.Should().Be(source); } } @@ -326,7 +326,7 @@ public void Should_call_service_list_noop() [Fact] public void Should_not_report_any_warning_messages() { - MockLogger.Messages.Keys.ShouldNotContain("Warn"); + MockLogger.Messages.Keys.Should().NotContain("Warn"); } } @@ -366,7 +366,7 @@ public void Should_call_service_list_run() [Fact] public void Should_not_report_any_warning_messages() { - MockLogger.Messages.Keys.ShouldNotContain("Warn"); + MockLogger.Messages.Keys.Should().NotContain("Warn"); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateySourceCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateySourceCommandSpecs.cs index 44736474a..0d529512f 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateySourceCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateySourceCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateySourceCommandSpecs { @@ -56,13 +56,13 @@ public override void Because() [Fact] public void Should_implement_source() { - results.ShouldContain("source"); + results.Should().Contain("source"); } [Fact] public void Should_implement_sources() { - results.ShouldContain("sources"); + results.Should().Contain("sources"); } } @@ -85,55 +85,55 @@ public override void Because() [Fact] public void Should_clear_previously_set_Source() { - configuration.Sources.ShouldBeEmpty(); + configuration.Sources.Should().BeEmpty(); } [Fact] public void Should_add_name_to_the_option_set() { - optionSet.Contains("name").ShouldBeTrue(); + optionSet.Contains("name").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_name_to_the_option_set() { - optionSet.Contains("n").ShouldBeTrue(); + optionSet.Contains("n").Should().BeTrue(); } [Fact] public void Should_add_source_to_the_option_set() { - optionSet.Contains("source").ShouldBeTrue(); + optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - optionSet.Contains("s").ShouldBeTrue(); + optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_user_to_the_option_set() { - optionSet.Contains("user").ShouldBeTrue(); + optionSet.Contains("user").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_user_to_the_option_set() { - optionSet.Contains("u").ShouldBeTrue(); + optionSet.Contains("u").Should().BeTrue(); } [Fact] public void Should_add_password_to_the_option_set() { - optionSet.Contains("password").ShouldBeTrue(); + optionSet.Contains("password").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_password_to_the_option_set() { - optionSet.Contains("p").ShouldBeTrue(); + optionSet.Contains("p").Should().BeTrue(); } } @@ -160,7 +160,7 @@ public void Should_use_the_first_unparsed_arg_as_the_subcommand() unparsedArgs.Add("list"); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.List); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.List); } [Fact] @@ -182,10 +182,10 @@ public void Should_throw_when_more_than_one_unparsed_arg_is_passed() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldContain("A single sources command must be listed"); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Contain("A single sources command must be listed"); } [Fact] @@ -195,7 +195,7 @@ public void Should_accept_add_as_the_subcommand() unparsedArgs.Add("add"); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.Add); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.Add); } [Fact] @@ -205,7 +205,7 @@ public void Should_accept_uppercase_add_as_the_subcommand() unparsedArgs.Add("ADD"); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.Add); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.Add); } [Fact] @@ -215,7 +215,7 @@ public void Should_remove_add_as_the_subcommand() unparsedArgs.Add("remove"); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.Remove); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.Remove); } [Fact] @@ -225,7 +225,7 @@ public void Should_accept_enable_as_the_subcommand() unparsedArgs.Add("enable"); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.Enable); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.Enable); } [Fact] @@ -235,7 +235,7 @@ public void Should_accept_disable_as_the_subcommand() unparsedArgs.Add("disable"); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.Disable); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.Disable); } [Fact] @@ -245,7 +245,7 @@ public void Should_set_unrecognized_values_to_list_as_the_subcommand() unparsedArgs.Add("wtf"); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.List); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.List); } [Fact] @@ -254,7 +254,7 @@ public void Should_default_to_list_as_the_subcommand() Reset(); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.List); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.List); } [Fact] @@ -264,7 +264,7 @@ public void Should_handle_passing_in_an_empty_string() unparsedArgs.Add(" "); because(); - configuration.SourceCommand.Command.ShouldEqual(SourceCommandType.List); + configuration.SourceCommand.Command.Should().Be(SourceCommandType.List); } } @@ -311,11 +311,11 @@ private void VerifyExceptionThrownOnCommand(string expectedMessage) error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); var commandName = configuration.SourceCommand.Command.ToStringSafe().ToLower(); - error.Message.ShouldEqual(expectedMessage.FormatWith(commandName)); + error.Message.Should().Be(expectedMessage.FormatWith(commandName)); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyTemplateCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyTemplateCommandSpecs.cs index 73bd64e10..240e14af9 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyTemplateCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyTemplateCommandSpecs.cs @@ -27,7 +27,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.commandline; using chocolatey.infrastructure.filesystem; using Moq; - using Should; + using FluentAssertions; public class ChocolateyTemplateCommandSpecs { @@ -61,8 +61,8 @@ public override void Because() [Fact] public void Should_implement_help() { - results.ShouldContain("template"); - results.ShouldContain("templates"); + results.Should().Contain("template"); + results.Should().Contain("templates"); } } @@ -84,13 +84,13 @@ public override void Because() [Fact] public void Should_add_name_to_the_option_set() { - optionSet.Contains("name").ShouldBeTrue(); + optionSet.Contains("name").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_name_to_the_option_set() { - optionSet.Contains("n").ShouldBeTrue(); + optionSet.Contains("n").Should().BeTrue(); } } @@ -120,7 +120,7 @@ public void Should_use_the_first_unparsed_arg_as_the_subcommand() unparsedArgs.Add("list"); because(); - configuration.TemplateCommand.Command.ShouldEqual(TemplateCommandType.List); + configuration.TemplateCommand.Command.Should().Be(TemplateCommandType.List); } [Fact] @@ -142,10 +142,10 @@ public void Should_throw_when_more_than_one_unparsed_arg_is_passed() error = ex; } - errorred.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldContain("A single template command must be listed"); + errorred.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Contain("A single template command must be listed"); } [Fact] @@ -155,7 +155,7 @@ public void Should_accept_list_as_the_subcommand() unparsedArgs.Add("list"); because(); - configuration.TemplateCommand.Command.ShouldEqual(TemplateCommandType.List); + configuration.TemplateCommand.Command.Should().Be(TemplateCommandType.List); } [Fact] @@ -165,7 +165,7 @@ public void Should_accept_uppercase_list_as_the_subcommand() unparsedArgs.Add("LIST"); because(); - configuration.TemplateCommand.Command.ShouldEqual(TemplateCommandType.List); + configuration.TemplateCommand.Command.Should().Be(TemplateCommandType.List); } [Fact] @@ -175,7 +175,7 @@ public void Should_accept_info_as_the_subcommand() unparsedArgs.Add("info"); because(); - configuration.TemplateCommand.Command.ShouldEqual(TemplateCommandType.Info); + configuration.TemplateCommand.Command.Should().Be(TemplateCommandType.Info); } [Fact] @@ -185,7 +185,7 @@ public void Should_accept_uppercase_info_as_the_subcommand() unparsedArgs.Add("INFO"); because(); - configuration.TemplateCommand.Command.ShouldEqual(TemplateCommandType.Info); + configuration.TemplateCommand.Command.Should().Be(TemplateCommandType.Info); } [Fact] @@ -195,7 +195,7 @@ public void Should_set_unrecognized_values_to_list_as_the_subcommand() unparsedArgs.Add("badcommand"); because(); - configuration.TemplateCommand.Command.ShouldEqual(TemplateCommandType.List); + configuration.TemplateCommand.Command.Should().Be(TemplateCommandType.List); } [Fact] @@ -204,7 +204,7 @@ public void Should_default_to_list_as_the_subcommand() Reset(); because(); - configuration.TemplateCommand.Command.ShouldEqual(TemplateCommandType.List); + configuration.TemplateCommand.Command.Should().Be(TemplateCommandType.List); } [Fact] @@ -214,7 +214,7 @@ public void Should_handle_passing_in_an_empty_string() unparsedArgs.Add(" "); because(); - configuration.TemplateCommand.Command.ShouldEqual(TemplateCommandType.List); + configuration.TemplateCommand.Command.Should().Be(TemplateCommandType.List); } } @@ -261,10 +261,10 @@ public void Should_throw_when_command_is_info_and_name_is_not_set() error = ex; } - errorred.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); - error.Message.ShouldEqual("When specifying the subcommand '{0}', you must also specify --name.".FormatWith(configuration.TemplateCommand.Command.ToStringSafe().ToLower())); + errorred.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); + error.Message.Should().Be("When specifying the subcommand '{0}', you must also specify --name.".FormatWith(configuration.TemplateCommand.Command.ToStringSafe().ToLower())); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUninstallCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUninstallCommandSpecs.cs index 8a71d288a..2d8988058 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUninstallCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUninstallCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyUninstallCommandSpecs { @@ -56,7 +56,7 @@ public override void Because() [Fact] public void Should_implement_uninstall() { - results.ShouldContain("uninstall"); + results.Should().Contain("uninstall"); } } @@ -78,109 +78,109 @@ public override void Because() [Fact] public void Should_add_version_to_the_option_set() { - optionSet.Contains("version").ShouldBeTrue(); + optionSet.Contains("version").Should().BeTrue(); } [Fact] public void Should_add_allversions_to_the_option_set() { - optionSet.Contains("allversions").ShouldBeTrue(); + optionSet.Contains("allversions").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_allversions_to_the_option_set() { - optionSet.Contains("a").ShouldBeTrue(); + optionSet.Contains("a").Should().BeTrue(); } [Fact] public void Should_add_uninstallargs_to_the_option_set() { - optionSet.Contains("uninstallarguments").ShouldBeTrue(); + optionSet.Contains("uninstallarguments").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_uninstallargs_to_the_option_set() { - optionSet.Contains("ua").ShouldBeTrue(); + optionSet.Contains("ua").Should().BeTrue(); } [Fact] public void Should_add_overrideargs_to_the_option_set() { - optionSet.Contains("overridearguments").ShouldBeTrue(); + optionSet.Contains("overridearguments").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_overrideargs_to_the_option_set() { - optionSet.Contains("o").ShouldBeTrue(); + optionSet.Contains("o").Should().BeTrue(); } [Fact] public void Should_add_notsilent_to_the_option_set() { - optionSet.Contains("notsilent").ShouldBeTrue(); + optionSet.Contains("notsilent").Should().BeTrue(); } [Fact] public void Should_add_packageparameters_to_the_option_set() { - optionSet.Contains("packageparameters").ShouldBeTrue(); + optionSet.Contains("packageparameters").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_packageparameters_to_the_option_set() { - optionSet.Contains("params").ShouldBeTrue(); + optionSet.Contains("params").Should().BeTrue(); } [Fact] public void Should_add_applyPackageParametersToDependencies_to_the_option_set() { - optionSet.Contains("apply-package-parameters-to-dependencies").ShouldBeTrue(); + optionSet.Contains("apply-package-parameters-to-dependencies").Should().BeTrue(); } [Fact] public void Should_add_applyInstallArgumentsToDependencies_to_the_option_set() { - optionSet.Contains("apply-install-arguments-to-dependencies").ShouldBeTrue(); + optionSet.Contains("apply-install-arguments-to-dependencies").Should().BeTrue(); } [Fact] public void Should_add_forcedependencies_to_the_option_set() { - optionSet.Contains("forcedependencies").ShouldBeTrue(); + optionSet.Contains("forcedependencies").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_forcedependencies_to_the_option_set() { - optionSet.Contains("x").ShouldBeTrue(); + optionSet.Contains("x").Should().BeTrue(); } [Fact] public void Should_add_skippowershell_to_the_option_set() { - optionSet.Contains("skippowershell").ShouldBeTrue(); + optionSet.Contains("skippowershell").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_skippowershell_to_the_option_set() { - optionSet.Contains("n").ShouldBeTrue(); + optionSet.Contains("n").Should().BeTrue(); } [Fact] public void Should_add_skip_hooks_to_the_option_set() { - optionSet.Contains("skip-hooks").ShouldBeTrue(); + optionSet.Contains("skip-hooks").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_skip_hooks_to_the_option_set() { - optionSet.Contains("skiphooks").ShouldBeTrue(); + optionSet.Contains("skiphooks").Should().BeTrue(); } } @@ -203,7 +203,7 @@ public override void Because() [Fact] public void Should_set_unparsed_arguments_to_the_package_names() { - configuration.PackageNames.ShouldEqual("pkg1;pkg2"); + configuration.PackageNames.Should().Be("pkg1;pkg2"); } } @@ -230,9 +230,9 @@ public void Should_throw_when_packagenames_is_not_set() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUnpackSelfCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUnpackSelfCommandSpecs.cs index e23c33689..eaa83f5d6 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUnpackSelfCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUnpackSelfCommandSpecs.cs @@ -25,7 +25,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.configuration; using chocolatey.infrastructure.filesystem; using Moq; - using Should; + using FluentAssertions; public class ChocolateyUnpackSelfCommandSpecs { @@ -56,7 +56,7 @@ public override void Because() [Fact] public void Should_implement_unpackself() { - results.ShouldContain("unpackself"); + results.Should().Contain("unpackself"); } } @@ -76,13 +76,13 @@ public void Should_log_a_message() [Fact] public void Should_log_one_message() { - MockLogger.Messages.Count.ShouldEqual(1); + MockLogger.Messages.Count.Should().Be(1); } [Fact] public void Should_log_a_message_about_what_it_would_have_done() { - MockLogger.MessagesFor(LogLevel.Info).FirstOrDefault().ShouldContain("This would have unpacked"); + MockLogger.MessagesFor(LogLevel.Info).FirstOrDefault().Should().Contain("This would have unpacked"); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUpgradeCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUpgradeCommandSpecs.cs index 4651d7d35..53f2acf2b 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUpgradeCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUpgradeCommandSpecs.cs @@ -26,7 +26,7 @@ namespace chocolatey.tests.infrastructure.app.commands using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ChocolateyUpgradeCommandSpecs { @@ -56,7 +56,7 @@ public override void Because() [Fact] public void Should_implement_upgrade() { - results.ShouldContain("upgrade"); + results.Should().Contain("upgrade"); } } @@ -78,163 +78,163 @@ public override void Because() [Fact] public void Should_add_source_to_the_option_set() { - optionSet.Contains("source").ShouldBeTrue(); + optionSet.Contains("source").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_source_to_the_option_set() { - optionSet.Contains("s").ShouldBeTrue(); + optionSet.Contains("s").Should().BeTrue(); } [Fact] public void Should_add_version_to_the_option_set() { - optionSet.Contains("version").ShouldBeTrue(); + optionSet.Contains("version").Should().BeTrue(); } [Fact] public void Should_add_prerelease_to_the_option_set() { - optionSet.Contains("prerelease").ShouldBeTrue(); + optionSet.Contains("prerelease").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_prerelease_to_the_option_set() { - optionSet.Contains("pre").ShouldBeTrue(); + optionSet.Contains("pre").Should().BeTrue(); } [Fact] public void Should_add_installargs_to_the_option_set() { - optionSet.Contains("installarguments").ShouldBeTrue(); + optionSet.Contains("installarguments").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_installargs_to_the_option_set() { - optionSet.Contains("ia").ShouldBeTrue(); + optionSet.Contains("ia").Should().BeTrue(); } [Fact] public void Should_add_overrideargs_to_the_option_set() { - optionSet.Contains("overridearguments").ShouldBeTrue(); + optionSet.Contains("overridearguments").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_overrideargs_to_the_option_set() { - optionSet.Contains("o").ShouldBeTrue(); + optionSet.Contains("o").Should().BeTrue(); } [Fact] public void Should_add_notsilent_to_the_option_set() { - optionSet.Contains("notsilent").ShouldBeTrue(); + optionSet.Contains("notsilent").Should().BeTrue(); } [Fact] public void Should_add_packageparameters_to_the_option_set() { - optionSet.Contains("packageparameters").ShouldBeTrue(); + optionSet.Contains("packageparameters").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_packageparameters_to_the_option_set() { - optionSet.Contains("params").ShouldBeTrue(); + optionSet.Contains("params").Should().BeTrue(); } [Fact] public void Should_add_applyPackageParametersToDependencies_to_the_option_set() { - optionSet.Contains("apply-package-parameters-to-dependencies").ShouldBeTrue(); + optionSet.Contains("apply-package-parameters-to-dependencies").Should().BeTrue(); } [Fact] public void Should_add_applyInstallArgumentsToDependencies_to_the_option_set() { - optionSet.Contains("apply-install-arguments-to-dependencies").ShouldBeTrue(); + optionSet.Contains("apply-install-arguments-to-dependencies").Should().BeTrue(); } [Fact] public void Should_add_ignoredependencies_to_the_option_set() { - optionSet.Contains("ignoredependencies").ShouldBeTrue(); + optionSet.Contains("ignoredependencies").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_ignoredependencies_to_the_option_set() { - optionSet.Contains("i").ShouldBeTrue(); + optionSet.Contains("i").Should().BeTrue(); } [Fact] public void Should_add_skippowershell_to_the_option_set() { - optionSet.Contains("skippowershell").ShouldBeTrue(); + optionSet.Contains("skippowershell").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_skippowershell_to_the_option_set() { - optionSet.Contains("n").ShouldBeTrue(); + optionSet.Contains("n").Should().BeTrue(); } [Fact] public void Should_add_user_to_the_option_set() { - optionSet.Contains("user").ShouldBeTrue(); + optionSet.Contains("user").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_user_to_the_option_set() { - optionSet.Contains("u").ShouldBeTrue(); + optionSet.Contains("u").Should().BeTrue(); } [Fact] public void Should_add_password_to_the_option_set() { - optionSet.Contains("password").ShouldBeTrue(); + optionSet.Contains("password").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_password_to_the_option_set() { - optionSet.Contains("p").ShouldBeTrue(); + optionSet.Contains("p").Should().BeTrue(); } [Fact] public void Should_add_pin_to_the_option_set() { - optionSet.Contains("pinpackage").ShouldBeTrue(); + optionSet.Contains("pinpackage").Should().BeTrue(); } [Fact] public void Should_add_long_version_of_pin_to_the_option_set() { - optionSet.Contains("pin-package").ShouldBeTrue(); + optionSet.Contains("pin-package").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_pin_to_the_option_set() { - optionSet.Contains("pin").ShouldBeTrue(); + optionSet.Contains("pin").Should().BeTrue(); } [Fact] public void Should_add_skip_hooks_to_the_option_set() { - optionSet.Contains("skip-hooks").ShouldBeTrue(); + optionSet.Contains("skip-hooks").Should().BeTrue(); } [Fact] public void Should_add_short_version_of_skip_hooks_to_the_option_set() { - optionSet.Contains("skiphooks").ShouldBeTrue(); + optionSet.Contains("skiphooks").Should().BeTrue(); } } @@ -257,7 +257,7 @@ public override void Because() [Fact] public void Should_set_unparsed_arguments_to_the_package_names() { - configuration.PackageNames.ShouldEqual("pkg1;pkg2"); + configuration.PackageNames.Should().Be("pkg1;pkg2"); } } @@ -284,9 +284,9 @@ public void Should_throw_when_packagenames_is_not_set() error = ex; } - errored.ShouldBeTrue(); - error.ShouldNotBeNull(); - error.ShouldBeType(); + errored.Should().BeTrue(); + error.Should().NotBeNull(); + error.Should().BeOfType(); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/configuration/ConfigurationOptionsSpec.cs b/src/chocolatey.tests/infrastructure.app/configuration/ConfigurationOptionsSpec.cs index f076c05c5..e67baf25d 100644 --- a/src/chocolatey.tests/infrastructure.app/configuration/ConfigurationOptionsSpec.cs +++ b/src/chocolatey.tests/infrastructure.app/configuration/ConfigurationOptionsSpec.cs @@ -25,7 +25,7 @@ namespace chocolatey.tests.infrastructure.app.configuration using chocolatey.infrastructure.app.configuration; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class ConfigurationOptionsSpec { @@ -78,9 +78,9 @@ public void Should_set_help_options_by_default() { setOptions = set => { - set.Contains("h").ShouldBeTrue(); - set.Contains("help").ShouldBeTrue(); - set.Contains("?").ShouldBeTrue(); + set.Contains("h").Should().BeTrue(); + set.Contains("help").Should().BeTrue(); + set.Contains("?").Should().BeTrue(); }; because(); } @@ -88,7 +88,7 @@ public void Should_set_help_options_by_default() [Fact] public void Should_not_have_set_other_options_by_default() { - setOptions = set => { set.Contains("dude").ShouldBeFalse(); }; + setOptions = set => { set.Contains("dude").Should().BeFalse(); }; because(); } @@ -99,8 +99,8 @@ public void Should_show_help_menu_when_help_is_requested() because(); - config.HelpRequested.ShouldBeTrue(); - config.ShowOnlineHelp.ShouldBeFalse(); + config.HelpRequested.Should().BeTrue(); + config.ShowOnlineHelp.Should().BeFalse(); } [Fact] @@ -111,8 +111,8 @@ public void Should_show_online_help_menu_when_help_is_requested() because(); - config.HelpRequested.ShouldBeTrue(); - config.ShowOnlineHelp.ShouldBeTrue(); + config.HelpRequested.Should().BeTrue(); + config.ShowOnlineHelp.Should().BeTrue(); } [Fact] @@ -122,14 +122,14 @@ public void Should_have_a_helpMessage_with_contents_when_help_is_requested() because(); - helpMessageContents.ToString().ShouldNotBeEmpty(); + helpMessageContents.ToString().Should().NotBeEmpty(); } [Fact] public void Should_not_run_validate_configuration_when_help_is_requested() { args.Add("-h"); - validateConfiguration = () => { "should".ShouldEqual("not be reached"); }; + validateConfiguration = () => { "should".Should().Be("not be reached"); }; because(); } @@ -142,7 +142,7 @@ public void Should_run_validate_configuration_unless_help_is_requested() because(); - wasCalled.ShouldBeTrue(); + wasCalled.Should().BeTrue(); } [Fact] @@ -152,12 +152,12 @@ public void Should_give_an_empty_unparsed_args_to_after_parse() afterParse = list => { wasCalled = true; - list.ShouldBeEmpty(); + list.Should().BeEmpty(); }; because(); - wasCalled.ShouldBeTrue(); + wasCalled.Should().BeTrue(); } [Fact] @@ -168,12 +168,12 @@ public void Should_give_an_empty_unparsed_args_to_after_parse_when_all_specified afterParse = list => { wasCalled = true; - list.ShouldBeEmpty(); + list.Should().BeEmpty(); }; because(); - wasCalled.ShouldBeTrue(); + wasCalled.Should().BeTrue(); } [Fact] @@ -184,12 +184,12 @@ public void Should_give_unparsed_args_to_after_parse_when_not_picked_up_by_an_op afterParse = list => { wasCalled = true; - list.ShouldContain(args.First()); + list.Should().Contain(args.First()); }; because(); - wasCalled.ShouldBeTrue(); + wasCalled.Should().BeTrue(); } [Fact] @@ -200,13 +200,13 @@ public void Should_find_command_name_in_unparsed_args_if_not_set_otherwise() afterParse = list => { wasCalled = true; - list.ShouldContain(args.First()); + list.Should().Contain(args.First()); }; because(); - config.CommandName.ShouldEqual("dude"); - wasCalled.ShouldBeTrue(); + config.CommandName.Should().Be("dude"); + wasCalled.Should().BeTrue(); } [Fact] @@ -217,14 +217,14 @@ public void Should_set_help_requested_if_command_name_is_starts_with_a_prefix() afterParse = list => { wasCalled = true; - list.ShouldContain(args.First()); + list.Should().Contain(args.First()); }; because(); - config.CommandName.ShouldNotEqual("dude"); - config.HelpRequested.ShouldBeTrue(); - wasCalled.ShouldBeTrue(); + config.CommandName.Should().NotBe("dude"); + config.HelpRequested.Should().BeTrue(); + wasCalled.Should().BeTrue(); } [Fact] @@ -233,7 +233,7 @@ public void Should_add_an_option_for_bob_when_specified() setOptions = set => { set.Add("bob", "sets the bob switch", option => config.Verbose = option != null); }; because(); - config.Verbose.ShouldBeFalse(); + config.Verbose.Should().BeFalse(); } [Fact] @@ -244,7 +244,7 @@ public void Should_set_option_for_tim_to_true_when_specified_with_dash() because(); - config.Verbose.ShouldBeTrue(); + config.Verbose.Should().BeTrue(); } [Fact] @@ -254,7 +254,7 @@ public void Should_set_option_for_tina_to_true_when_specified_with_two_dashes() args.Add("--tina"); because(); - config.Verbose.ShouldBeTrue(); + config.Verbose.Should().BeTrue(); } [Fact] @@ -265,7 +265,7 @@ public void Should_set_option_for_gena_to_true_when_specified_with_forward_slash because(); - config.Verbose.ShouldBeTrue(); + config.Verbose.Should().BeTrue(); } [Fact] @@ -282,9 +282,9 @@ public void Should_set_option_when_specified_as_single_dash_for_timmy_and_other_ because(); - config.SkipPackageInstallProvider.ShouldBeTrue(); - config.Debug.ShouldBeTrue(); - config.Verbose.ShouldBeTrue(); + config.SkipPackageInstallProvider.Should().BeTrue(); + config.Debug.Should().BeTrue(); + config.Verbose.Should().BeTrue(); } [Fact] @@ -301,10 +301,10 @@ public void Should_set_option_when_specified_as_single_dash_for_lo_and_other_opt because(); - config.SkipPackageInstallProvider.ShouldBeTrue(); - config.Debug.ShouldBeTrue(); - config.ListCommand.LocalOnly.ShouldBeTrue(); - helpMessageContents.ToString().ShouldBeEmpty(); + config.SkipPackageInstallProvider.Should().BeTrue(); + config.Debug.Should().BeTrue(); + config.ListCommand.LocalOnly.Should().BeTrue(); + helpMessageContents.ToString().Should().BeEmpty(); } [Fact] @@ -315,8 +315,8 @@ public void Should_show_help_menu_when_passing_bundled_options_that_do_not_exist because(); - config.Debug.ShouldBeFalse(); - helpMessageContents.ToString().ShouldNotBeEmpty(); + config.Debug.Should().BeFalse(); + helpMessageContents.ToString().Should().NotBeEmpty(); } [Fact] @@ -326,7 +326,7 @@ public void Should_successfully_parse_help_option() because(); - config.UnsuccessfulParsing.ShouldBeFalse(); + config.UnsuccessfulParsing.Should().BeFalse(); } [Fact] @@ -336,7 +336,7 @@ public void Should_not_parse_unknown_option() because(); - config.UnsuccessfulParsing.ShouldBeTrue(); + config.UnsuccessfulParsing.Should().BeTrue(); } } } diff --git a/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNuGetProjectContextSpecs.cs b/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNuGetProjectContextSpecs.cs index 053119336..371bcf5c1 100644 --- a/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNuGetProjectContextSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNuGetProjectContextSpecs.cs @@ -21,7 +21,7 @@ namespace chocolatey.tests.infrastructure.app.nuget using NuGet.Common; using NuGet.ProjectManagement; using NUnit.Framework; - using Should; + using FluentAssertions; public class ChocolateyNuGetProjectContextSpecs { @@ -139,7 +139,7 @@ public void Should_report_warning_when_resolving_file_conflicts() var result = Service.ResolveFileConflict(message); - result.ShouldEqual(FileConflictAction.OverwriteAll); + result.Should().Be(FileConflictAction.OverwriteAll); Logger.Verify(l => l.LogWarning("File conflict, overwriting all: Some kind of message"), Times.Once); diff --git a/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNugetLoggerSpecs.cs b/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNugetLoggerSpecs.cs index 1c704d843..c8aa53d3e 100644 --- a/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNugetLoggerSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNugetLoggerSpecs.cs @@ -20,7 +20,7 @@ namespace chocolatey.tests.infrastructure.app.nuget using chocolatey.infrastructure.app.nuget; using NuGet.Common; using NUnit.Framework; - using Should; + using FluentAssertions; using LogLevel = chocolatey.tests.LogLevel; using NuGetLogLevel = NuGet.Common.LogLevel; @@ -56,10 +56,10 @@ public void Should_log_debug_level_with_nuget_prefix_on_all_lines_when_calling_L _logger.LogDebug(testMessage); var loggerName = LogLevel.Debug.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -71,10 +71,10 @@ public void Should_log_debug_level_with_nuget_prefix_when_calling_LogDebug() _logger.LogDebug(testMessage); var loggerName = LogLevel.Debug.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -86,10 +86,10 @@ public void Should_log_error_level_with_nuget_prefix_on_all_lines_when_calling_L _logger.LogError(testMessage); var loggerName = LogLevel.Error.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -101,10 +101,10 @@ public void Should_log_error_level_with_nuget_prefix_when_calling_LogError() _logger.LogError(testMessage); var loggerName = LogLevel.Error.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [TestCase(NuGetLogLevel.Debug, LogLevel.Debug, "Test debug message", "[NuGet] Test debug message")] @@ -114,10 +114,10 @@ public void Should_log_error_level_with_nuget_prefix_when_calling_LogError() public void Should_log_expected_log_level_when_calling_Log_with_log_message(NuGetLogLevel nugetLogLevel, LogLevel logLevel, string testMessage, string expectedMessage) { _logger.Log(new LogMessage(nugetLogLevel, testMessage)); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(logLevel.ToStringSafe()); - MockLogger.Messages[logLevel.ToStringSafe()].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(logLevel.ToStringSafe()); + MockLogger.Messages[logLevel.ToStringSafe()].Should().Contain(expectedMessage); } [TestCase(NuGetLogLevel.Debug, LogLevel.Debug, "Test debug message", "[NuGet] Test debug message")] @@ -127,10 +127,10 @@ public void Should_log_expected_log_level_when_calling_Log_with_log_message(NuGe public void Should_log_expected_log_level_when_calling_Log_with_nuget_log_level(NuGetLogLevel nugetLogLevel, LogLevel logLevel, string testMessage, string expectedMessage) { _logger.Log(nugetLogLevel, testMessage); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(logLevel.ToStringSafe()); - MockLogger.Messages[logLevel.ToStringSafe()].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(logLevel.ToStringSafe()); + MockLogger.Messages[logLevel.ToStringSafe()].Should().Contain(expectedMessage); } [TestCase(NuGetLogLevel.Debug, LogLevel.Debug, "Test debug message", "[NuGet] Test debug message")] @@ -140,10 +140,10 @@ public void Should_log_expected_log_level_when_calling_Log_with_nuget_log_level( public async Task Should_log_expected_log_level_when_calling_LogAsync_with_nuget_log_level(NuGetLogLevel nugetLogLevel, LogLevel logLevel, string testMessage, string expectedMessage) { await _logger.LogAsync(nugetLogLevel, testMessage); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(logLevel.ToStringSafe()); - MockLogger.Messages[logLevel.ToStringSafe()].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(logLevel.ToStringSafe()); + MockLogger.Messages[logLevel.ToStringSafe()].Should().Contain(expectedMessage); } [TestCase(NuGetLogLevel.Debug, LogLevel.Debug, "Test debug message", "[NuGet] Test debug message")] @@ -153,10 +153,10 @@ public async Task Should_log_expected_log_level_when_calling_LogAsync_with_nuget public async Task Should_log_expected_log_level_when_calling_LogAsync_with_nuget_log_message(NuGetLogLevel nugetLogLevel, LogLevel logLevel, string testMessage, string expectedMessage) { await _logger.LogAsync(new LogMessage(nugetLogLevel, testMessage)); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(logLevel.ToStringSafe()); - MockLogger.Messages[logLevel.ToStringSafe()].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(logLevel.ToStringSafe()); + MockLogger.Messages[logLevel.ToStringSafe()].Should().Contain(expectedMessage); } [Fact] @@ -168,10 +168,10 @@ public void Should_log_info_level_with_nuget_prefix_on_all_lines_when_calling_Lo _logger.LogInformationSummary(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -183,10 +183,10 @@ public void Should_log_info_level_with_nuget_prefix_when_calling_LogInformationS _logger.LogInformationSummary(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [TestCase(NuGetLogLevel.Verbose, "Test verbose message", "[NuGet] Test verbose message")] @@ -194,10 +194,10 @@ public void Should_log_info_level_with_nuget_prefix_when_calling_LogInformationS public void Should_log_verbose_level_when_calling_Log_with_nuget_log_level(NuGetLogLevel nuGetLogLevel, string testMessage, string expectedMessage) { _logger.Log(nuGetLogLevel, testMessage); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain("Info"); - MockLogger.Messages["Info"].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain("Info"); + MockLogger.Messages["Info"].Should().Contain(expectedMessage); } [TestCase(NuGetLogLevel.Verbose, "Test verbose message", "[NuGet] Test verbose message")] @@ -205,10 +205,10 @@ public void Should_log_verbose_level_when_calling_Log_with_nuget_log_level(NuGet public void Should_log_verbose_level_when_calling_Log_with_nuget_log_message(NuGetLogLevel nuGetLogLevel, string testMessage, string expectedMessage) { _logger.Log(new LogMessage(nuGetLogLevel, testMessage)); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain("Info"); - MockLogger.Messages["Info"].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain("Info"); + MockLogger.Messages["Info"].Should().Contain(expectedMessage); } [TestCase(NuGetLogLevel.Verbose, "Test verbose message", "[NuGet] Test verbose message")] @@ -216,10 +216,10 @@ public void Should_log_verbose_level_when_calling_Log_with_nuget_log_message(NuG public async Task Should_log_verbose_level_when_calling_LogAsync_with_nuget_log_level(NuGetLogLevel nuGetLogLevel, string testMessage, string expectedMessage) { await _logger.LogAsync(nuGetLogLevel, testMessage); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain("Info"); - MockLogger.Messages["Info"].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain("Info"); + MockLogger.Messages["Info"].Should().Contain(expectedMessage); } [TestCase(NuGetLogLevel.Verbose, "Test verbose message", "[NuGet] Test verbose message")] @@ -227,10 +227,10 @@ public async Task Should_log_verbose_level_when_calling_LogAsync_with_nuget_log_ public async Task Should_log_verbose_level_when_calling_LogAsync_with_nuget_log_message(NuGetLogLevel nuGetLogLevel, string testMessage, string expectedMessage) { await _logger.LogAsync(new LogMessage(nuGetLogLevel, testMessage)); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain("Info"); - MockLogger.Messages["Info"].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain("Info"); + MockLogger.Messages["Info"].Should().Contain(expectedMessage); } [Fact] @@ -242,10 +242,10 @@ public void Should_log_verbose_level_with_nuget_prefix_on_all_lines_when_calling _logger.LogInformation(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -257,10 +257,10 @@ public void Should_log_verbose_level_with_nuget_prefix_on_all_lines_when_calling _logger.LogMinimal(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -272,10 +272,10 @@ public void Should_log_verbose_level_with_nuget_prefix_on_all_lines_when_calling _logger.LogVerbose(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -287,10 +287,10 @@ public void Should_log_verbose_level_with_nuget_prefix_when_calling_LogInformati _logger.LogInformation(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -302,10 +302,10 @@ public void Should_log_verbose_level_with_nuget_prefix_when_calling_LogMinimal() _logger.LogMinimal(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -317,10 +317,10 @@ public void Should_log_verbose_level_with_nuget_prefix_when_calling_LogVerbose() _logger.LogVerbose(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(2); - MockLogger.LoggerNames.ShouldContain("Verbose"); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().Contain("Verbose"); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -332,10 +332,10 @@ public void Should_log_warn_level_with_nuget_prefix_on_all_lines_when_calling_Lo _logger.LogWarning(testMessage); var loggerName = LogLevel.Warn.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [Fact] @@ -347,10 +347,10 @@ public void Should_log_warn_level_with_nuget_prefix_when_calling_LogWarning() _logger.LogWarning(testMessage); var loggerName = LogLevel.Warn.ToStringSafe(); - MockLogger.LoggerNames.Count.ShouldEqual(1); - MockLogger.LoggerNames.ShouldContain(typeof(ChocolateyNugetLogger).FullName); - MockLogger.Messages.Keys.ShouldContain(loggerName); - MockLogger.Messages[loggerName].ShouldContain(expectedMessage); + MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); + MockLogger.Messages.Keys.Should().Contain(loggerName); + MockLogger.Messages[loggerName].Should().Contain(expectedMessage); } [TestCase("")] @@ -361,8 +361,8 @@ public void Should_not_output_whitespace_only_line_in_multiline_logging(string t var expectedValue = "[NuGet] I will be containing{0}[NuGet]{0}[NuGet] some whitespace".FormatWith(Environment.NewLine); _logger.Log(NuGetLogLevel.Minimal, testValue); - MockLogger.Messages.Keys.ShouldContain("Info"); - MockLogger.Messages["Info"].ShouldContain(expectedValue); + MockLogger.Messages.Keys.Should().Contain("Info"); + MockLogger.Messages["Info"].Should().Contain(expectedValue); } [TestCase(null)] @@ -372,8 +372,8 @@ public void Should_only_output_prefix_for_null_or_empty_values(string testValue) { _logger.Log(NuGetLogLevel.Minimal, testValue); - MockLogger.Messages.Keys.ShouldContain("Info"); - MockLogger.Messages["Info"].ShouldContain("[NuGet]"); + MockLogger.Messages.Keys.Should().Contain("Info"); + MockLogger.Messages["Info"].Should().Contain("[NuGet]"); } [TestCase("\n\n\n\n\n")] @@ -383,8 +383,8 @@ public void Should_only_output_prefixes_on_every_line(string testValue) var expectedValue = "[NuGet]{0}[NuGet]{0}[NuGet]{0}[NuGet]{0}[NuGet]".FormatWith(Environment.NewLine); _logger.Log(NuGetLogLevel.Information, testValue); - MockLogger.Messages.Keys.ShouldContain("Info"); - MockLogger.Messages["Info"].ShouldContain(expectedValue); + MockLogger.Messages.Keys.Should().Contain("Info"); + MockLogger.Messages["Info"].Should().Contain(expectedValue); } } } diff --git a/src/chocolatey.tests/infrastructure.app/nuget/NugetCommonSpecs.cs b/src/chocolatey.tests/infrastructure.app/nuget/NugetCommonSpecs.cs index e1cc4baa8..f4927ee7d 100644 --- a/src/chocolatey.tests/infrastructure.app/nuget/NugetCommonSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/nuget/NugetCommonSpecs.cs @@ -28,7 +28,7 @@ namespace chocolatey.tests.infrastructure.app.nuget using NuGet.Packaging; using NuGet.Protocol; using NuGet.Protocol.Core.Types; - using Should; + using FluentAssertions; public class NugetCommonSpecs { @@ -67,7 +67,7 @@ public void Should_create_repository_when_source_is_null() because(); - packageRepositories.Count().ShouldEqual(0); + packageRepositories.Count().Should().Be(0); } [Fact] @@ -80,9 +80,9 @@ public void Should_parse_http_source() because(); - packageRepositories.First().PackageSource.TrySourceAsUri.ShouldNotBeNull(); - packageRepositories.First().PackageSource.SourceUri.ToStringSafe().ShouldEqual(source); - packageRepositories.First().PackageSource.IsHttp.ShouldBeTrue(); + packageRepositories.First().PackageSource.TrySourceAsUri.Should().NotBeNull(); + packageRepositories.First().PackageSource.SourceUri.ToStringSafe().Should().Be(source); + packageRepositories.First().PackageSource.IsHttp.Should().BeTrue(); } [Fact] @@ -95,9 +95,9 @@ public void Should_parse_https_source() because(); - packageRepositories.First().PackageSource.TrySourceAsUri.ShouldNotBeNull(); - packageRepositories.First().PackageSource.SourceUri.ToStringSafe().ShouldEqual(source); - packageRepositories.First().PackageSource.IsHttps.ShouldBeTrue(); + packageRepositories.First().PackageSource.TrySourceAsUri.Should().NotBeNull(); + packageRepositories.First().PackageSource.SourceUri.ToStringSafe().Should().Be(source); + packageRepositories.First().PackageSource.IsHttps.Should().BeTrue(); } [Fact] @@ -109,10 +109,10 @@ public void Should_parse_absolute_path_source() because(); - packageRepositories.First().PackageSource.TrySourceAsUri.ShouldNotBeNull(); + packageRepositories.First().PackageSource.TrySourceAsUri.Should().NotBeNull(); packageRepositories.First().PackageSource.SourceUri.ToStringSafe() - .ShouldEqual(("file:///" + source).Replace("\\","/")); - packageRepositories.First().PackageSource.IsLocal.ShouldBeTrue(); + .Should().Be(("file:///" + source).Replace("\\","/")); + packageRepositories.First().PackageSource.IsLocal.Should().BeTrue(); } [Fact] @@ -125,10 +125,10 @@ public void Should_parse_relative_path_source() because(); - packageRepositories.First().PackageSource.TrySourceAsUri.ShouldNotBeNull(); + packageRepositories.First().PackageSource.TrySourceAsUri.Should().NotBeNull(); packageRepositories.First().PackageSource.SourceUri.ToStringSafe() - .ShouldEqual(("file:///" + fullsource).Replace("\\", "/")); - packageRepositories.First().PackageSource.IsLocal.ShouldBeTrue(); + .Should().Be(("file:///" + fullsource).Replace("\\", "/")); + packageRepositories.First().PackageSource.IsLocal.Should().BeTrue(); } [Fact] @@ -141,10 +141,10 @@ public void Should_parse_dot_relative_path_source() because(); - packageRepositories.First().PackageSource.TrySourceAsUri.ShouldNotBeNull(); + packageRepositories.First().PackageSource.TrySourceAsUri.Should().NotBeNull(); packageRepositories.First().PackageSource.SourceUri.ToStringSafe() - .ShouldEqual(("file:///" + fullsource + "/").Replace("\\", "/")); - packageRepositories.First().PackageSource.IsLocal.ShouldBeTrue(); + .Should().Be(("file:///" + fullsource + "/").Replace("\\", "/")); + packageRepositories.First().PackageSource.IsLocal.Should().BeTrue(); } [Fact] @@ -156,11 +156,11 @@ public void Should_parse_unc_source() because(); - packageRepositories.First().PackageSource.TrySourceAsUri.ShouldNotBeNull(); + packageRepositories.First().PackageSource.TrySourceAsUri.Should().NotBeNull(); packageRepositories.First().PackageSource.SourceUri.ToStringSafe() - .ShouldEqual(("file:" + source).Replace("\\", "/")); - packageRepositories.First().PackageSource.IsLocal.ShouldBeTrue(); - packageRepositories.First().PackageSource.SourceUri.IsUnc.ShouldBeTrue(); + .Should().Be(("file:" + source).Replace("\\", "/")); + packageRepositories.First().PackageSource.IsLocal.Should().BeTrue(); + packageRepositories.First().PackageSource.SourceUri.IsUnc.Should().BeTrue(); } [Fact] @@ -176,7 +176,7 @@ public void Should_set_user_agent_string() // Change this when the NuGet version is updated. string nugetClientVersion = "6.4.1"; string expectedUserAgentString = "{0}/{1} via NuGet Client/{2}".FormatWith(ApplicationParameters.UserAgent, configuration.Information.ChocolateyProductVersion, nugetClientVersion); - UserAgent.UserAgentString.ShouldStartWith(expectedUserAgentString); + UserAgent.UserAgentString.Should().StartWith(expectedUserAgentString); } } } diff --git a/src/chocolatey.tests/infrastructure.app/services/ChocolateyConfigSettingsServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/ChocolateyConfigSettingsServiceSpecs.cs index 9635a373a..6e1b3cc4b 100644 --- a/src/chocolatey.tests/infrastructure.app/services/ChocolateyConfigSettingsServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/ChocolateyConfigSettingsServiceSpecs.cs @@ -8,8 +8,7 @@ using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.services; using Moq; - using Should; - using Assert = Should.Core.Assertions.Assert; + using FluentAssertions; public class ChocolateyConfigSettingsServiceSpecs { @@ -61,14 +60,14 @@ public override void Context() [Fact] public void Should_not_report_feature_being_unsupported() { - MockLogger.Messages["Warn"].ShouldNotContain("Feature '{0}' is not supported. Any change have no effect on running Chocolatey.".FormatWith(ApplicationParameters.Features.ChecksumFiles)); + MockLogger.Messages["Warn"].Should().NotContain("Feature '{0}' is not supported. Any change have no effect on running Chocolatey.".FormatWith(ApplicationParameters.Features.ChecksumFiles)); } [Fact] public void Should_report_feature_being_disabled() { - MockLogger.Messages.Keys.ShouldContain("Warn"); - MockLogger.Messages["Warn"].ShouldContain("Disabled {0}".FormatWith(ApplicationParameters.Features.ChecksumFiles)); + MockLogger.Messages.Keys.Should().Contain("Warn"); + MockLogger.Messages["Warn"].Should().Contain("Disabled {0}".FormatWith(ApplicationParameters.Features.ChecksumFiles)); } [Fact] @@ -102,13 +101,13 @@ public override void Context() [Fact] public void Should_not_contain_any_warnings() { - MockLogger.Messages.Keys.ShouldNotContain("Warn"); + MockLogger.Messages.Keys.Should().NotContain("Warn"); } [Fact] public void Should_throw_exception_on_unknown_feature() { - Assert.ThrowsDelegate action = () => + Action action = () => { var config = new ChocolateyConfiguration() { @@ -121,8 +120,8 @@ public void Should_throw_exception_on_unknown_feature() Service.DisableFeature(config); }; - Assert.Throws(action) - .Message.ShouldEqual("Feature 'unknown' not found"); + action.Should().Throw() + .WithMessage("Feature 'unknown' not found"); } } @@ -156,7 +155,7 @@ public override void Context() [Fact] public void Should_throw_exception_on_unsupported_feature() { - Assert.Throws(() => + Action action = () => { var config = new ChocolateyConfiguration() { @@ -167,7 +166,9 @@ public void Should_throw_exception_on_unsupported_feature() }; Service.DisableFeature(config); - }).Message.ShouldEqual("Feature '{0}' is not supported.".FormatWith(FeatureName)); + }; + action.Should().Throw() + .WithMessage("Feature '{0}' is not supported.".FormatWith(FeatureName)); } } @@ -208,14 +209,14 @@ public override void Context() [Fact] public void Should_not_report_feature_being_unsupported() { - MockLogger.Messages["Warn"].ShouldNotContain("Feature '{0}' is not supported. Any change have no effect on running Chocolatey.".FormatWith(ApplicationParameters.Features.ChecksumFiles)); + MockLogger.Messages["Warn"].Should().NotContain("Feature '{0}' is not supported. Any change have no effect on running Chocolatey.".FormatWith(ApplicationParameters.Features.ChecksumFiles)); } [Fact] public void Should_report_feature_being_enabled() { - MockLogger.Messages.Keys.ShouldContain("Warn"); - MockLogger.Messages["Warn"].ShouldContain("Enabled {0}".FormatWith(ApplicationParameters.Features.ChecksumFiles)); + MockLogger.Messages.Keys.Should().Contain("Warn"); + MockLogger.Messages["Warn"].Should().Contain("Enabled {0}".FormatWith(ApplicationParameters.Features.ChecksumFiles)); } [Fact] @@ -249,13 +250,13 @@ public override void Context() [Fact] public void Should_not_contain_any_warnings() { - MockLogger.Messages.Keys.ShouldNotContain("Warn"); + MockLogger.Messages.Keys.Should().NotContain("Warn"); } [Fact] public void Should_throw_exception_on_unknown_feature() { - Assert.ThrowsDelegate action = () => + Action action = () => { var config = new ChocolateyConfiguration() { @@ -268,8 +269,8 @@ public void Should_throw_exception_on_unknown_feature() Service.EnableFeature(config); }; - Assert.Throws(action) - .Message.ShouldEqual("Feature 'unknown' not found"); + action.Should().Throw() + .WithMessage("Feature 'unknown' not found"); } } @@ -303,7 +304,7 @@ public override void Context() [Fact] public void Should_throw_exception_on_unsupported_feature() { - Assert.Throws(() => + Action action = () => { var config = new ChocolateyConfiguration() { @@ -314,7 +315,10 @@ public void Should_throw_exception_on_unsupported_feature() }; Service.EnableFeature(config); - }).Message.ShouldEqual("Feature '{0}' is not supported.".FormatWith(FeatureName)); + } + ; + action.Should().Throw() + .WithMessage("Feature '{0}' is not supported.".FormatWith(FeatureName)); } } @@ -356,12 +360,12 @@ public override void Context() [Fact] public void Should_output_features_in_alphabetical_order() { - MockLogger.Messages.Keys.ShouldContain("Info"); + MockLogger.Messages.Keys.Should().Contain("Info"); var infoMessages = MockLogger.Messages["Info"]; - infoMessages.Count.ShouldEqual(2); - infoMessages[0].ShouldContain("allowEmptyChecksums"); - infoMessages[1].ShouldContain("virusCheck"); + infoMessages.Count.Should().Be(2); + infoMessages[0].Should().Contain("allowEmptyChecksums"); + infoMessages[1].Should().Contain("virusCheck"); } } @@ -403,12 +407,12 @@ public override void Context() [Fact] public void Should_output_config_in_alphabetical_order() { - MockLogger.Messages.Keys.ShouldContain("Info"); + MockLogger.Messages.Keys.Should().Contain("Info"); var infoMessages = MockLogger.Messages["Info"]; - infoMessages.Count.ShouldEqual(2); - infoMessages[0].ShouldContain("cacheLocation"); - infoMessages[1].ShouldContain("webRequestTimeoutSeconds"); + infoMessages.Count.Should().Be(2); + infoMessages[0].Should().Contain("cacheLocation"); + infoMessages[1].Should().Contain("webRequestTimeoutSeconds"); } } @@ -450,12 +454,12 @@ public override void Context() [Fact] public void Should_output_sources_in_alphabetical_order() { - MockLogger.Messages.Keys.ShouldContain("Info"); + MockLogger.Messages.Keys.Should().Contain("Info"); var infoMessages = MockLogger.Messages["Info"]; - infoMessages.Count.ShouldEqual(2); - infoMessages[0].ShouldContain("alpha"); - infoMessages[1].ShouldContain("beta"); + infoMessages.Count.Should().Be(2); + infoMessages[0].Should().Contain("alpha"); + infoMessages[1].Should().Contain("beta"); } } @@ -516,9 +520,9 @@ public void Should_throw_when_unknown_feature_name() _error = ex; } - _error.ShouldNotBeNull(); - _error.ShouldBeType(); - _error.Message.ShouldContain("No feature value by the name 'unknown'"); + _error.Should().NotBeNull(); + _error.Should().BeOfType(); + _error.Message.Should().Contain("No feature value by the name 'unknown'"); } } @@ -562,10 +566,10 @@ public override void Context() [Fact] public void Should_return_feature_status() { - MockLogger.Messages.Keys.ShouldContain("Info"); + MockLogger.Messages.Keys.Should().Contain("Info"); var infoMessages = MockLogger.Messages["Info"]; - infoMessages.Count.ShouldEqual(1); - infoMessages[0].ShouldContain("Enabled"); + infoMessages.Count.Should().Be(1); + infoMessages[0].Should().Contain("Enabled"); } } } diff --git a/src/chocolatey.tests/infrastructure.app/services/ChocolateyPackageServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/ChocolateyPackageServiceSpecs.cs index 80e7e02b7..055c768f5 100644 --- a/src/chocolatey.tests/infrastructure.app/services/ChocolateyPackageServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/ChocolateyPackageServiceSpecs.cs @@ -27,7 +27,7 @@ using chocolatey.infrastructure.services; using Moq; using NUnit.Framework; -using Should; +using FluentAssertions; using IFileSystem = chocolatey.infrastructure.filesystem.IFileSystem; namespace chocolatey.tests.infrastructure.app.services @@ -134,7 +134,7 @@ public override void Because() [Test] public void Should_return_package_that_should_have_been_installed() { - _result.Keys.ShouldContain("test-feature"); + _result.Keys.Should().Contain("test-feature"); } [Test] @@ -191,7 +191,7 @@ public void Should_throw_exception_when_full_path_is_passed_to_install_run() var ex = TryRun(Action); var message = GetExpectedLocalValue(directory, "my-package"); - ex.Message.ShouldEqual(message); + ex.Message.Should().Be(message); } [Fact] @@ -209,7 +209,7 @@ public void Should_throw_exception_when_full_file_prefixed_path_is_passed_to_ins var ex = TryRun(Action); var message = GetExpectedLocalValue(directory, "my-package"); - ex.Message.ShouldEqual(message); + ex.Message.Should().Be(message); } [Fact, Categories.Unc] @@ -227,7 +227,7 @@ public void Should_throw_exception_when_UNC_path_is_passed_to_install_run() var ex = TryRun(Action); var message = GetExpectedUncValue(directory, "my-package"); - ex.Message.ShouldEqual(message); + ex.Message.Should().Be(message); } [Fact] @@ -236,7 +236,7 @@ public void Should_throw_exception_when_remote_path_is_passed_to_install_run() Configuration.PackageNames = "https://test.com/repository/awesome-package.nupkg"; var ex = TryRun(Action); - ex.Message.ShouldEqual("Package name cannot point directly to a local, or remote file. Please use the --source argument and point it to a local file directory, UNC directory path or a NuGet feed instead."); + ex.Message.Should().Be("Package name cannot point directly to a local, or remote file. Please use the --source argument and point it to a local file directory, UNC directory path or a NuGet feed instead."); } [Fact] @@ -253,7 +253,7 @@ public void Should_throw_exception_when_passed_in_path_to_nupkg_is_relative_and_ var ex = TryRun(Action); var expectedMessage = GetExpectedLocalValue(Environment.CurrentDirectory, "test", "1.5.0"); - ex.Message.ShouldEqual(expectedMessage); + ex.Message.Should().Be(expectedMessage); } [Fact] @@ -270,7 +270,7 @@ public void Should_throw_exception_with_expected_message_when_installing_pre_rel var ex = TryRun(Action); var expectedMessage = GetExpectedLocalValue(Environment.CurrentDirectory, "test", "2.0.0-alpha", prerelease: true); - ex.Message.ShouldEqual(expectedMessage); + ex.Message.Should().Be(expectedMessage); } [Fact] @@ -284,7 +284,7 @@ public void Should_throw_exception_with_expected_message_when_installing_nupkg_a var ex = TryRun(Action); var expectedMessage = GetExpectedLocalValue(string.Empty, "test", "2.0.0", prerelease: false); - ex.Message.ShouldEqual(expectedMessage); + ex.Message.Should().Be(expectedMessage); } [Fact] @@ -294,7 +294,7 @@ public void Should_throw_exception_when_passed_in_path_to_nupkg_is_relative_and_ var ex = TryRun(Action); - ex.Message.ShouldEqual("Package name cannot point directly to a local, or remote file. Please use the --source argument and point it to a local file directory, UNC directory path or a NuGet feed instead."); + ex.Message.Should().Be("Package name cannot point directly to a local, or remote file. Please use the --source argument and point it to a local file directory, UNC directory path or a NuGet feed instead."); } [Fact] @@ -303,7 +303,7 @@ public void Should_throw_exception_when_nuspec_file_is_passed_as_package_name() Configuration.PackageNames = "test-package.nuspec"; var ex = TryRun(Action); - ex.Message.ShouldEqual("Package name cannot point directly to a package manifest file. Please create a package by running 'choco pack' on the .nuspec file first."); + ex.Message.Should().Be("Package name cannot point directly to a package manifest file. Please create a package by running 'choco pack' on the .nuspec file first."); } private string GetExpectedUncValue(string path, string name, string version = null, bool prerelease = false) @@ -373,7 +373,7 @@ private static Exception TryRun(Action action) } catch (Exception ex) { - ex.ShouldBeType(); + ex.Should().BeOfType(); return ex; } } diff --git a/src/chocolatey.tests/infrastructure.app/services/FilesServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/FilesServiceSpecs.cs index 2c8bc54c9..6e3ac5d7f 100644 --- a/src/chocolatey.tests/infrastructure.app/services/FilesServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/FilesServiceSpecs.cs @@ -28,7 +28,7 @@ namespace chocolatey.tests.infrastructure.app.services using chocolatey.infrastructure.results; using chocolatey.infrastructure.services; using Moq; - using Should; + using FluentAssertions; public class FilesServiceSpecs { @@ -138,13 +138,13 @@ public void Should_not_call_get_files() [Fact] public void Should_return_a_warning_if_the_install_directory_matches_choco_install_location() { - packageResult.Warning.ShouldBeTrue(); + packageResult.Warning.Should().BeTrue(); } [Fact] public void Should_return_null() { - result.ShouldBeNull(); + result.Should().BeNull(); } } @@ -174,13 +174,13 @@ public void Should_not_call_get_files() [Fact] public void Should_return_a_warning_if_the_install_directory_matches_choco_install_location() { - packageResult.Warning.ShouldBeTrue(); + packageResult.Warning.Should().BeTrue(); } [Fact] public void Should_return_null() { - result.ShouldBeNull(); + result.Should().BeNull(); } } @@ -210,13 +210,13 @@ public void Should_not_call_get_files() [Fact] public void Should_return_a_non_null_object() { - result.ShouldNotBeNull(); + result.Should().NotBeNull(); } [Fact] public void Should_return_empty_package_files() { - result.Files.ShouldBeEmpty(); + result.Files.Should().BeEmpty(); } } @@ -249,19 +249,19 @@ public override void Because() [Fact] public void Should_return_a_PackageFiles_object() { - result.ShouldNotBeNull(); + result.Should().NotBeNull(); } [Fact] public void Should_contain_package_files() { - result.Files.ShouldNotBeEmpty(); + result.Files.Should().NotBeEmpty(); } [Fact] public void Should_contain_the_correct_number_of_package_files() { - result.Files.Count.ShouldEqual(files.Count); + result.Files.Count.Should().Be(files.Count); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/services/NugetServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/NugetServiceSpecs.cs index 2450e67b7..4d94a13b6 100644 --- a/src/chocolatey.tests/infrastructure.app/services/NugetServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/NugetServiceSpecs.cs @@ -27,7 +27,7 @@ namespace chocolatey.tests.infrastructure.app.services using Moq; using NuGet.Common; using NuGet.Packaging; - using Should; + using FluentAssertions; using IFileSystem = chocolatey.infrastructure.filesystem.IFileSystem; public class NugetServiceSpecs @@ -310,8 +310,8 @@ public void Generated_package_should_be_in_current_directory() because(); var infos = MockLogger.MessagesFor(tests.LogLevel.Info); - infos.Count.ShouldEqual(1); - infos[0].ShouldEqual("Chocolatey would have searched for a nuspec file in \"c:\\projects\\chocolatey\" and attempted to compile it."); + infos.Count.Should().Be(1); + infos[0].Should().Be("Chocolatey would have searched for a nuspec file in \"c:\\projects\\chocolatey\" and attempted to compile it."); } [Fact] @@ -324,8 +324,8 @@ public void Generated_package_should_be_in_specified_directory() because(); var infos = MockLogger.MessagesFor(tests.LogLevel.Info); - infos.Count.ShouldEqual(1); - infos[0].ShouldEqual("Chocolatey would have searched for a nuspec file in \"c:\\packages\" and attempted to compile it."); + infos.Count.Should().Be(1); + infos[0].Should().Be("Chocolatey would have searched for a nuspec file in \"c:\\packages\" and attempted to compile it."); } } } diff --git a/src/chocolatey.tests/infrastructure.app/services/RegistryServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/RegistryServiceSpecs.cs index 2f43bec8e..16a065701 100644 --- a/src/chocolatey.tests/infrastructure.app/services/RegistryServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/RegistryServiceSpecs.cs @@ -22,7 +22,7 @@ namespace chocolatey.tests.infrastructure.app.services using Microsoft.Win32; using Moq; using NUnit.Framework; - using Should; + using FluentAssertions; using Registry = chocolatey.infrastructure.app.domain.Registry; public class RegistryServiceSpecs @@ -66,7 +66,7 @@ public override void Because() [Fact] public void Should_not_be_null() { - _result.ShouldNotBeNull(); + _result.Should().NotBeNull(); } } @@ -91,25 +91,25 @@ public override void Because() [Fact] public void Should_return_a_non_null_value() { - _result.ShouldNotBeNull(); + _result.Should().NotBeNull(); } [Fact] public void Should_return_a_value_of_type_RegistryKey() { - _result.ShouldBeType(); + _result.Should().BeOfType(); } [Fact] public void Should_contain_keys() { - _result.GetSubKeyNames().ShouldNotBeEmpty(); + _result.GetSubKeyNames().Should().NotBeEmpty(); } [Fact] public void Should_contain_values() { - Service.GetKey(_hive, "Environment").GetValueNames().ShouldNotBeEmpty(); + Service.GetKey(_hive, "Environment").GetValueNames().Should().NotBeEmpty(); } } @@ -140,7 +140,7 @@ public void Should_not_error() [Fact] public void Should_return_null_key() { - _result.ShouldBeNull(); + _result.Should().BeNull(); } } diff --git a/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs index e9b4cd544..420c504ee 100644 --- a/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs @@ -24,7 +24,7 @@ namespace chocolatey.tests.infrastructure.app.services using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.rules; using chocolatey.infrastructure.services; - using Should; + using FluentAssertions; public class RulesServiceSpecs : TinySpec { @@ -62,12 +62,12 @@ public override void Because() [Fact] public void GetsRulesFromService() { - _detectedRules.Count().ShouldEqual(4); + _detectedRules.Count().Should().Be(4); IEnumerable ruleIds = _detectedRules.Select(t => t.Id); - ruleIds.ShouldContain(UnsupportedElementUsed); - ruleIds.ShouldContain(EmptyRequiredElement); - ruleIds.ShouldContain(InvalidTypeElement); - ruleIds.ShouldContain(MissingElementOnRequiringLicenseAcceptance); + ruleIds.Should().Contain(UnsupportedElementUsed); + ruleIds.Should().Contain(EmptyRequiredElement); + ruleIds.Should().Contain(InvalidTypeElement); + ruleIds.Should().Contain(MissingElementOnRequiringLicenseAcceptance); } } } diff --git a/src/chocolatey.tests/infrastructure.app/services/TemplateServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/TemplateServiceSpecs.cs index 6e719aa1f..78d2c13cb 100644 --- a/src/chocolatey.tests/infrastructure.app/services/TemplateServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/TemplateServiceSpecs.cs @@ -30,7 +30,7 @@ namespace chocolatey.tests.infrastructure.app.services using Moq; using NuGet.Common; using NUnit.Framework; - using Should; + using FluentAssertions; using LogLevel = tests.LogLevel; public class TemplateServiceSpecs @@ -80,8 +80,8 @@ public void Should_log_current_directory_if_no_outputdirectory() because(); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.ShouldEqual(1); - infos[0].ShouldEqual("Would have generated a new package specification at c:\\chocolatey\\Bob"); + infos.Count.Should().Be(1); + infos[0].Should().Be("Would have generated a new package specification at c:\\chocolatey\\Bob"); } [Fact] @@ -92,8 +92,8 @@ public void Should_log_output_directory_if_outputdirectory_is_specified() because(); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.ShouldEqual(1); - infos[0].ShouldEqual("Would have generated a new package specification at c:\\packages\\Bob"); + infos.Count.Should().Be(1); + infos[0].Should().Be("Would have generated a new package specification at c:\\packages\\Bob"); } } @@ -132,8 +132,8 @@ public void Should_write_file_withe_replaced_tokens() because(); var debugs = MockLogger.MessagesFor(LogLevel.Debug); - debugs.Count.ShouldEqual(1); - debugs[0].ShouldEqual("Bob"); + debugs.Count.Should().Be(1); + debugs[0].Should().Be("Bob"); } [Fact] @@ -144,12 +144,12 @@ public void Should_log_info_if_regular_output() because(); var debugs = MockLogger.MessagesFor(LogLevel.Debug); - debugs.Count.ShouldEqual(1); - debugs[0].ShouldEqual("Bob"); + debugs.Count.Should().Be(1); + debugs[0].Should().Be("Bob"); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.ShouldEqual(1); - infos[0].ShouldEqual(string.Format(@"Generating template to a file{0} at 'c:\packages\bob.nuspec'", Environment.NewLine)); + infos.Count.Should().Be(1); + infos[0].Should().Be(string.Format(@"Generating template to a file{0} at 'c:\packages\bob.nuspec'", Environment.NewLine)); } } @@ -202,9 +202,9 @@ public void Should_throw_exception() errorMessage = ex.Message; } - errored.ShouldBeTrue(); - errorMessage.ShouldEqual(string.Format("The location for the template already exists. You can:{0} 1. Remove 'c:\\chocolatey\\Bob'{0} 2. Use --force{0} 3. Specify a different name", Environment.NewLine)); - verifiedDirectoryPath.ShouldEqual("c:\\chocolatey\\Bob"); + errored.Should().BeTrue(); + errorMessage.Should().Be(string.Format("The location for the template already exists. You can:{0} 1. Remove 'c:\\chocolatey\\Bob'{0} 2. Use --force{0} 3. Specify a different name", Environment.NewLine)); + verifiedDirectoryPath.Should().Be("c:\\chocolatey\\Bob"); } [Fact] @@ -225,9 +225,9 @@ public void Should_throw_exception_even_with_outputdirectory() errorMessage = ex.Message; } - errored.ShouldBeTrue(); - errorMessage.ShouldEqual(string.Format("The location for the template already exists. You can:{0} 1. Remove 'c:\\packages\\Bob'{0} 2. Use --force{0} 3. Specify a different name", Environment.NewLine)); - verifiedDirectoryPath.ShouldEqual("c:\\packages\\Bob"); + errored.Should().BeTrue(); + errorMessage.Should().Be(string.Format("The location for the template already exists. You can:{0} 1. Remove 'c:\\packages\\Bob'{0} 2. Use --force{0} 3. Specify a different name", Environment.NewLine)); + verifiedDirectoryPath.Should().Be("c:\\packages\\Bob"); } } @@ -294,15 +294,15 @@ public void Should_generate_all_files_and_directories() because(); var directories = directoryCreated.ToList(); - directories.Count.ShouldEqual(2, "There should be 2 directories, but there was: " + string.Join(", ", directories)); - directories[0].ShouldEqual("c:\\chocolatey\\Bob"); - directories[1].ShouldEqual("c:\\chocolatey\\Bob\\tools"); + directories.Count.Should().Be(2, "There should be 2 directories, but there was: " + string.Join(", ", directories)); + directories[0].Should().Be("c:\\chocolatey\\Bob"); + directories[1].Should().Be("c:\\chocolatey\\Bob\\tools"); - files.Count.ShouldEqual(2, "There should be 2 files, but there was: " + string.Join(", ", files)); - files[0].ShouldEqual("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); - files[1].ShouldEqual("c:\\chocolatey\\Bob\\random.txt"); + files.Count.Should().Be(2, "There should be 2 files, but there was: " + string.Join(", ", files)); + files[0].Should().Be("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); + files[1].Should().Be("c:\\chocolatey\\Bob\\random.txt"); - MockLogger.MessagesFor(LogLevel.Info).Last().ShouldEqual(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); + MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); } [Fact] @@ -313,15 +313,15 @@ public void Should_generate_all_files_and_directories_even_with_outputdirectory( because(); var directories = directoryCreated.ToList(); - directories.Count.ShouldEqual(2, "There should be 2 directories, but there was: " + string.Join(", ", directories)); - directories[0].ShouldEqual("c:\\packages\\Bob"); - directories[1].ShouldEqual("c:\\packages\\Bob\\tools"); + directories.Count.Should().Be(2, "There should be 2 directories, but there was: " + string.Join(", ", directories)); + directories[0].Should().Be("c:\\packages\\Bob"); + directories[1].Should().Be("c:\\packages\\Bob\\tools"); - files.Count.ShouldEqual(2, "There should be 2 files, but there was: " + string.Join(", ", files)); - files[0].ShouldEqual("c:\\packages\\Bob\\__name_replace__.nuspec"); - files[1].ShouldEqual("c:\\packages\\Bob\\random.txt"); + files.Count.Should().Be(2, "There should be 2 files, but there was: " + string.Join(", ", files)); + files[0].Should().Be("c:\\packages\\Bob\\__name_replace__.nuspec"); + files[1].Should().Be("c:\\packages\\Bob\\random.txt"); - MockLogger.MessagesFor(LogLevel.Info).Last().ShouldEqual(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); + MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); } } @@ -392,18 +392,18 @@ public void Should_generate_all_files_and_directories() because(); var directories = directoryCreated.ToList(); - directories.Count.ShouldEqual(3, "There should be 3 directories, but there was: " + string.Join(", ", directories)); - directories[0].ShouldEqual("c:\\chocolatey\\Bob"); - directories[1].ShouldEqual("c:\\chocolatey\\Bob\\tools"); - directories[2].ShouldEqual("c:\\chocolatey\\Bob\\tools\\lower"); + directories.Count.Should().Be(3, "There should be 3 directories, but there was: " + string.Join(", ", directories)); + directories[0].Should().Be("c:\\chocolatey\\Bob"); + directories[1].Should().Be("c:\\chocolatey\\Bob\\tools"); + directories[2].Should().Be("c:\\chocolatey\\Bob\\tools\\lower"); - files.Count.ShouldEqual(4, "There should be 4 files, but there was: " + string.Join(", ", files)); - files[0].ShouldEqual("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); - files[1].ShouldEqual("c:\\chocolatey\\Bob\\random.txt"); - files[2].ShouldEqual("c:\\chocolatey\\Bob\\tools\\chocolateyInstall.ps1"); - files[3].ShouldEqual("c:\\chocolatey\\Bob\\tools\\lower\\another.ps1"); + files.Count.Should().Be(4, "There should be 4 files, but there was: " + string.Join(", ", files)); + files[0].Should().Be("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); + files[1].Should().Be("c:\\chocolatey\\Bob\\random.txt"); + files[2].Should().Be("c:\\chocolatey\\Bob\\tools\\chocolateyInstall.ps1"); + files[3].Should().Be("c:\\chocolatey\\Bob\\tools\\lower\\another.ps1"); - MockLogger.MessagesFor(LogLevel.Info).Last().ShouldEqual(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); + MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); } [Fact] @@ -414,18 +414,18 @@ public void Should_generate_all_files_and_directories_even_with_outputdirectory( because(); var directories = directoryCreated.ToList(); - directories.Count.ShouldEqual(3, "There should be 3 directories, but there was: " + string.Join(", ", directories)); - directories[0].ShouldEqual("c:\\packages\\Bob"); - directories[1].ShouldEqual("c:\\packages\\Bob\\tools"); - directories[2].ShouldEqual("c:\\packages\\Bob\\tools\\lower"); + directories.Count.Should().Be(3, "There should be 3 directories, but there was: " + string.Join(", ", directories)); + directories[0].Should().Be("c:\\packages\\Bob"); + directories[1].Should().Be("c:\\packages\\Bob\\tools"); + directories[2].Should().Be("c:\\packages\\Bob\\tools\\lower"); - files.Count.ShouldEqual(4, "There should be 4 files, but there was: " + string.Join(", ", files)); - files[0].ShouldEqual("c:\\packages\\Bob\\__name_replace__.nuspec"); - files[1].ShouldEqual("c:\\packages\\Bob\\random.txt"); - files[2].ShouldEqual("c:\\packages\\Bob\\tools\\chocolateyInstall.ps1"); - files[3].ShouldEqual("c:\\packages\\Bob\\tools\\lower\\another.ps1"); + files.Count.Should().Be(4, "There should be 4 files, but there was: " + string.Join(", ", files)); + files[0].Should().Be("c:\\packages\\Bob\\__name_replace__.nuspec"); + files[1].Should().Be("c:\\packages\\Bob\\random.txt"); + files[2].Should().Be("c:\\packages\\Bob\\tools\\chocolateyInstall.ps1"); + files[3].Should().Be("c:\\packages\\Bob\\tools\\lower\\another.ps1"); - MockLogger.MessagesFor(LogLevel.Info).Last().ShouldEqual(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); + MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); } } @@ -496,20 +496,20 @@ public void Should_generate_all_files_and_directories() because(); var directories = directoryCreated.ToList(); - directories.Count.ShouldEqual(5, "There should be 5 directories, but there was: " + string.Join(", ", directories)); - directories[0].ShouldEqual("c:\\chocolatey\\Bob"); - directories[1].ShouldEqual("c:\\chocolatey\\Bob\\tools"); - directories[2].ShouldEqual("c:\\chocolatey\\Bob\\tools\\lower"); - directories[3].ShouldEqual("c:\\chocolatey\\Bob\\empty"); - directories[4].ShouldEqual("c:\\chocolatey\\Bob\\empty\\nested"); + directories.Count.Should().Be(5, "There should be 5 directories, but there was: " + string.Join(", ", directories)); + directories[0].Should().Be("c:\\chocolatey\\Bob"); + directories[1].Should().Be("c:\\chocolatey\\Bob\\tools"); + directories[2].Should().Be("c:\\chocolatey\\Bob\\tools\\lower"); + directories[3].Should().Be("c:\\chocolatey\\Bob\\empty"); + directories[4].Should().Be("c:\\chocolatey\\Bob\\empty\\nested"); - files.Count.ShouldEqual(4, "There should be 4 files, but there was: " + string.Join(", ", files)); - files[0].ShouldEqual("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); - files[1].ShouldEqual("c:\\chocolatey\\Bob\\random.txt"); - files[2].ShouldEqual("c:\\chocolatey\\Bob\\tools\\chocolateyInstall.ps1"); - files[3].ShouldEqual("c:\\chocolatey\\Bob\\tools\\lower\\another.ps1"); + files.Count.Should().Be(4, "There should be 4 files, but there was: " + string.Join(", ", files)); + files[0].Should().Be("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); + files[1].Should().Be("c:\\chocolatey\\Bob\\random.txt"); + files[2].Should().Be("c:\\chocolatey\\Bob\\tools\\chocolateyInstall.ps1"); + files[3].Should().Be("c:\\chocolatey\\Bob\\tools\\lower\\another.ps1"); - MockLogger.MessagesFor(LogLevel.Info).Last().ShouldEqual(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); + MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); } [Fact] @@ -520,20 +520,20 @@ public void Should_generate_all_files_and_directories_even_with_outputdirectory( because(); var directories = directoryCreated.ToList(); - directories.Count.ShouldEqual(5, "There should be 5 directories, but there was: " + string.Join(", ", directories)); - directories[0].ShouldEqual("c:\\packages\\Bob"); - directories[1].ShouldEqual("c:\\packages\\Bob\\tools"); - directories[2].ShouldEqual("c:\\packages\\Bob\\tools\\lower"); - directories[3].ShouldEqual("c:\\packages\\Bob\\empty"); - directories[4].ShouldEqual("c:\\packages\\Bob\\empty\\nested"); + directories.Count.Should().Be(5, "There should be 5 directories, but there was: " + string.Join(", ", directories)); + directories[0].Should().Be("c:\\packages\\Bob"); + directories[1].Should().Be("c:\\packages\\Bob\\tools"); + directories[2].Should().Be("c:\\packages\\Bob\\tools\\lower"); + directories[3].Should().Be("c:\\packages\\Bob\\empty"); + directories[4].Should().Be("c:\\packages\\Bob\\empty\\nested"); - files.Count.ShouldEqual(4, "There should be 4 files, but there was: " + string.Join(", ", files)); - files[0].ShouldEqual("c:\\packages\\Bob\\__name_replace__.nuspec"); - files[1].ShouldEqual("c:\\packages\\Bob\\random.txt"); - files[2].ShouldEqual("c:\\packages\\Bob\\tools\\chocolateyInstall.ps1"); - files[3].ShouldEqual("c:\\packages\\Bob\\tools\\lower\\another.ps1"); + files.Count.Should().Be(4, "There should be 4 files, but there was: " + string.Join(", ", files)); + files[0].Should().Be("c:\\packages\\Bob\\__name_replace__.nuspec"); + files[1].Should().Be("c:\\packages\\Bob\\random.txt"); + files[2].Should().Be("c:\\packages\\Bob\\tools\\chocolateyInstall.ps1"); + files[3].Should().Be("c:\\packages\\Bob\\tools\\lower\\another.ps1"); - MockLogger.MessagesFor(LogLevel.Info).Last().ShouldEqual(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); + MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); } } @@ -571,7 +571,7 @@ public void Should_use_null_value_for_template() { because(); - config.NewCommand.TemplateName.ShouldBeNull(); + config.NewCommand.TemplateName.Should().BeNull(); } } @@ -616,7 +616,7 @@ public void Should_use_template_name_from_configuration() { because(); - config.NewCommand.TemplateName.ShouldEqual("msi"); + config.NewCommand.TemplateName.Should().Be("msi"); } } @@ -662,7 +662,7 @@ public void Should_use_template_name_from_command_line_option() { because(); - config.NewCommand.TemplateName.ShouldEqual("zip"); + config.NewCommand.TemplateName.Should().Be("zip"); } } @@ -696,7 +696,7 @@ public void Should_use_null_value_for_template() { because(); - config.NewCommand.TemplateName.ShouldBeNull(); + config.NewCommand.TemplateName.Should().BeNull(); } } @@ -731,7 +731,7 @@ public void Should_use_null_value_for_template() { because(); - config.NewCommand.TemplateName.ShouldBeNull(); + config.NewCommand.TemplateName.Should().BeNull(); } } @@ -777,7 +777,7 @@ public void Should_use_template_name_from_command_line_option() { because(); - config.NewCommand.TemplateName.ShouldEqual("zip"); + config.NewCommand.TemplateName.Should().Be("zip"); } } @@ -824,7 +824,7 @@ public void Should_use_template_name_from_command_line_option() { because(); - config.NewCommand.TemplateName.ShouldEqual("zip"); + config.NewCommand.TemplateName.Should().Be("zip"); } } @@ -849,8 +849,8 @@ public void Should_log_template_location_if_no_template_name() because(); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.ShouldEqual(1); - infos[0].ShouldEqual("Would have listed templates in {0}".FormatWith(ApplicationParameters.TemplatesLocation)); + infos.Count.Should().Be(1); + infos[0].Should().Be("Would have listed templates in {0}".FormatWith(ApplicationParameters.TemplatesLocation)); } [Fact] @@ -860,8 +860,8 @@ public void Should_log_template_name_if_template_name() because(); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.ShouldEqual(1); - infos[0].ShouldEqual("Would have listed information about {0}".FormatWith(config.TemplateCommand.Name)); + infos.Count.Should().Be(1); + infos[0].Should().Be("Would have listed information about {0}".FormatWith(config.TemplateCommand.Name)); } } } diff --git a/src/chocolatey.tests/infrastructure.app/utility/ArgumentsUtilitySpecs.cs b/src/chocolatey.tests/infrastructure.app/utility/ArgumentsUtilitySpecs.cs index a0b6c88cc..a21daa2b9 100644 --- a/src/chocolatey.tests/infrastructure.app/utility/ArgumentsUtilitySpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/utility/ArgumentsUtilitySpecs.cs @@ -2,7 +2,7 @@ { using chocolatey.infrastructure.app.utility; using NUnit.Framework; - using Should; + using FluentAssertions; public class ArgumentsUtilitySpecs { @@ -55,7 +55,7 @@ public override void Because() [Fact] public void Should_return_expected_result() { - _result.ShouldEqual(_expectedResult); + _result.Should().Be(_expectedResult); } } } diff --git a/src/chocolatey.tests/infrastructure.app/utility/PackageUtilitySpecs.cs b/src/chocolatey.tests/infrastructure.app/utility/PackageUtilitySpecs.cs index f1a489596..ea81e2d30 100644 --- a/src/chocolatey.tests/infrastructure.app/utility/PackageUtilitySpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/utility/PackageUtilitySpecs.cs @@ -19,7 +19,7 @@ namespace chocolatey.tests.infrastructure.app.utility using chocolatey.infrastructure.app.configuration; using chocolatey.infrastructure.platforms; using NUnit.Framework; - using Should; + using FluentAssertions; public class PackageUtilitySpecs { @@ -67,7 +67,7 @@ public override void Because() [Fact] public void Should_return_expected_result() { - _result.ShouldEqual(_expectedResult); + _result.Should().Be(_expectedResult); } } } diff --git a/src/chocolatey.tests/infrastructure/commandline/InteractivePromptSpecs.cs b/src/chocolatey.tests/infrastructure/commandline/InteractivePromptSpecs.cs index 183b03c63..41dad6121 100644 --- a/src/chocolatey.tests/infrastructure/commandline/InteractivePromptSpecs.cs +++ b/src/chocolatey.tests/infrastructure/commandline/InteractivePromptSpecs.cs @@ -21,7 +21,7 @@ namespace chocolatey.tests.infrastructure.commandline using chocolatey.infrastructure.adapters; using chocolatey.infrastructure.commandline; using Moq; - using Should; + using FluentAssertions; public class InteractivePromptSpecs { @@ -73,7 +73,7 @@ public void Should_error_when_the_choicelist_is_null() errored = true; } - errored.ShouldBeTrue(); + errored.Should().BeTrue(); console.Verify(c => c.ReadLine(), Times.Never); } @@ -94,8 +94,8 @@ public void Should_error_when_the_choicelist_is_empty() errorMessage = ex.Message; } - errored.ShouldBeTrue(); - errorMessage.ShouldContain("No choices passed in."); + errored.Should().BeTrue(); + errorMessage.Should().Contain("No choices passed in."); console.Verify(c => c.ReadLine(), Times.Never); } @@ -118,7 +118,7 @@ public void Should_error_when_the_prompt_input_is_null() errored = true; } - errored.ShouldBeTrue(); + errored.Should().BeTrue(); console.Verify(c => c.ReadLine(), Times.Never); } @@ -144,9 +144,9 @@ public void Should_error_when_the_default_choice_is_not_in_list() errorMessage = ex.Message; } - result.ShouldNotEqual("maybe"); - errored.ShouldBeTrue(); - errorMessage.ShouldEqual("Default choice value must be one of the given choices."); + result.Should().NotBe("maybe"); + errored.Should().BeTrue(); + errorMessage.Should().Be("Default choice value must be one of the given choices."); console.Verify(c => c.ReadLine(), Times.Never); } } @@ -171,7 +171,7 @@ public void Should_return_null_when_no_answer_given() { console.Setup(c => c.ReadLine()).Returns(""); //Enter pressed var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -179,7 +179,7 @@ public void Should_return_first_choice_when_1_is_given() { console.Setup(c => c.ReadLine()).Returns("1"); var result = prompt(); - result.ShouldEqual(choices[0]); + result.Should().Be(choices[0]); } [Fact] @@ -187,7 +187,7 @@ public void Should_return_first_choice_when_value_of_choice_is_given() { console.Setup(c => c.ReadLine()).Returns("yes"); var result = prompt(); - result.ShouldEqual(choices[0]); + result.Should().Be(choices[0]); } [Fact] @@ -195,7 +195,7 @@ public void Should_return_second_choice_when_2_is_given() { console.Setup(c => c.ReadLine()).Returns("2"); var result = prompt(); - result.ShouldEqual(choices[1]); + result.Should().Be(choices[1]); } [Fact] @@ -203,7 +203,7 @@ public void Should_return_null_choice_when_3_is_given() { console.Setup(c => c.ReadLine()).Returns("3"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -211,7 +211,7 @@ public void Should_return_null_choice_when_4_is_given() { console.Setup(c => c.ReadLine()).Returns("4"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -219,7 +219,7 @@ public void Should_return_null_choice_when_0_is_given() { console.Setup(c => c.ReadLine()).Returns("0"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -227,7 +227,7 @@ public void Should_return_null_choice_when_negative_1_is_given() { console.Setup(c => c.ReadLine()).Returns("-1"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -235,7 +235,7 @@ public void Should_return_null_choice_when_alphabetical_characters_are_given() { console.Setup(c => c.ReadLine()).Returns("abc"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } } @@ -268,7 +268,7 @@ public void Should_error_when_no_answer_given() { errored = true; } - errored.ShouldBeTrue(); + errored.Should().BeTrue(); console.Verify(c => c.ReadLine(), Times.AtLeast(8)); } @@ -277,7 +277,7 @@ public void Should_return_first_choice_when_1_is_given() { console.Setup(c => c.ReadLine()).Returns("1"); var result = prompt(); - result.ShouldEqual(choices[0]); + result.Should().Be(choices[0]); } [Fact] @@ -285,7 +285,7 @@ public void Should_return_second_choice_when_2_is_given() { console.Setup(c => c.ReadLine()).Returns("2"); var result = prompt(); - result.ShouldEqual(choices[1]); + result.Should().Be(choices[1]); } [Fact] @@ -302,7 +302,7 @@ public void Should_error_when_any_choice_not_available_is_given() { errored = true; } - errored.ShouldBeTrue(); + errored.Should().BeTrue(); console.Verify(c => c.ReadLine(), Times.AtLeast(8)); } } @@ -327,7 +327,7 @@ public void Should_return_default_when_no_answer_given() { console.Setup(c => c.ReadLine()).Returns(""); //Enter pressed var result = prompt(); - result.ShouldEqual(choices[1]); + result.Should().Be(choices[1]); } [Fact] @@ -335,7 +335,7 @@ public void Should_return_first_choice_when_1_is_given() { console.Setup(c => c.ReadLine()).Returns("1"); var result = prompt(); - result.ShouldEqual(choices[0]); + result.Should().Be(choices[0]); } [Fact] @@ -343,7 +343,7 @@ public void Should_return_second_choice_when_2_is_given() { console.Setup(c => c.ReadLine()).Returns("2"); var result = prompt(); - result.ShouldEqual(choices[1]); + result.Should().Be(choices[1]); } [Fact] @@ -351,7 +351,7 @@ public void Should_return_null_choice_when_3_is_given() { console.Setup(c => c.ReadLine()).Returns("3"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -359,7 +359,7 @@ public void Should_return_null_choice_when_4_is_given() { console.Setup(c => c.ReadLine()).Returns("4"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -367,7 +367,7 @@ public void Should_return_null_choice_when_0_is_given() { console.Setup(c => c.ReadLine()).Returns("0"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -375,7 +375,7 @@ public void Should_return_null_choice_when_negative_1_is_given() { console.Setup(c => c.ReadLine()).Returns("-1"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } [Fact] @@ -383,7 +383,7 @@ public void Should_return_null_choice_when_alphabetical_characters_are_given() { console.Setup(c => c.ReadLine()).Returns("abc"); var result = prompt(); - result.ShouldBeNull(); + result.Should().BeNull(); } } @@ -407,7 +407,7 @@ public void Should_error_when_no_answer_given() { console.Setup(c => c.ReadLine()).Returns(""); //Enter pressed var result = prompt(); - result.ShouldEqual(choices[0]); + result.Should().Be(choices[0]); } [Fact] @@ -415,7 +415,7 @@ public void Should_return_first_choice_when_1_is_given() { console.Setup(c => c.ReadLine()).Returns("1"); var result = prompt(); - result.ShouldEqual(choices[0]); + result.Should().Be(choices[0]); } [Fact] @@ -423,7 +423,7 @@ public void Should_return_second_choice_when_2_is_given() { console.Setup(c => c.ReadLine()).Returns("2"); var result = prompt(); - result.ShouldEqual(choices[1]); + result.Should().Be(choices[1]); } [Fact] @@ -440,7 +440,7 @@ public void Should_error_when_any_choice_not_available_is_given() { errored = true; } - errored.ShouldBeTrue(); + errored.Should().BeTrue(); console.Verify(c => c.ReadLine(), Times.AtLeast(8)); } } @@ -470,7 +470,7 @@ public void Should_error_when_the_choicelist_is_null() errored = true; } - errored.ShouldBeTrue(); + errored.Should().BeTrue(); console.Verify(c => c.ReadLine(), Times.Never); } @@ -491,8 +491,8 @@ public void Should_error_when_the_choicelist_is_empty() errorMessage = ex.Message; } - errored.ShouldBeTrue(); - errorMessage.ShouldContain("No choices passed in."); + errored.Should().BeTrue(); + errorMessage.Should().Contain("No choices passed in."); console.Verify(c => c.ReadLine(), Times.Never); } @@ -517,8 +517,8 @@ public void Should_error_when_the_prompt_input_is_null() errorMessage = ex.Message; } - errored.ShouldBeTrue(); - errorMessage.ShouldContain("Value for prompt cannot be null."); + errored.Should().BeTrue(); + errorMessage.Should().Contain("Value for prompt cannot be null."); console.Verify(c => c.ReadLine(), Times.Never); } @@ -543,8 +543,8 @@ public void Should_error_when_the_choicelist_contains_empty_values() errorMessage = ex.Message; } - errored.ShouldBeTrue(); - errorMessage.ShouldContain("Some choices are empty."); + errored.Should().BeTrue(); + errorMessage.Should().Contain("Some choices are empty."); console.Verify(c => c.ReadLine(), Times.Never); } @@ -569,8 +569,8 @@ public void Should_error_when_the_choicelist_has_multiple_items_with_same_first_ errorMessage = ex.Message; } - errored.ShouldBeTrue(); - errorMessage.ShouldContain("Multiple choices have the same first letter."); + errored.Should().BeTrue(); + errorMessage.Should().Contain("Multiple choices have the same first letter."); console.Verify(c => c.ReadLine(), Times.Never); } } @@ -604,7 +604,7 @@ public void Should_error_when_no_answer_given() { errored = true; } - errored.ShouldBeTrue(); + errored.Should().BeTrue(); console.Verify(c => c.ReadLine(), Times.AtLeast(8)); } @@ -613,7 +613,7 @@ public void Should_return_yes_when_yes_is_given() { console.Setup(c => c.ReadLine()).Returns("yes"); var result = prompt(); - result.ShouldEqual("yes"); + result.Should().Be("yes"); } [Fact] @@ -621,7 +621,7 @@ public void Should_return_yes_when_y_is_given() { console.Setup(c => c.ReadLine()).Returns("y"); var result = prompt(); - result.ShouldEqual("yes"); + result.Should().Be("yes"); } [Fact] @@ -629,7 +629,7 @@ public void Should_return_no_choice_when_no_is_given() { console.Setup(c => c.ReadLine()).Returns("no"); var result = prompt(); - result.ShouldEqual("no"); + result.Should().Be("no"); } [Fact] @@ -637,7 +637,7 @@ public void Should_return_no_choice_when_n_is_given() { console.Setup(c => c.ReadLine()).Returns("n"); var result = prompt(); - result.ShouldEqual("no"); + result.Should().Be("no"); } [Fact] @@ -654,7 +654,7 @@ public void Should_error_when_any_choice_not_available_is_given() { errored = true; } - errored.ShouldBeTrue(); + errored.Should().BeTrue(); console.Verify(c => c.ReadLine(), Times.AtLeast(8)); } } @@ -685,7 +685,7 @@ public void Should_return_all_when_full_all_answer_is_given() { console.Setup(c => c.ReadLine()).Returns("all - yes to all"); var result = prompt(); - result.ShouldEqual("all - yes to all"); + result.Should().Be("all - yes to all"); } [Fact] @@ -693,7 +693,7 @@ public void Should_return_all_when_only_all_is_given() { console.Setup(c => c.ReadLine()).Returns("all"); var result = prompt(); - result.ShouldEqual("all - yes to all"); + result.Should().Be("all - yes to all"); } } } diff --git a/src/chocolatey.tests/infrastructure/commands/CommandExecutorSpecs.cs b/src/chocolatey.tests/infrastructure/commands/CommandExecutorSpecs.cs index df582b738..cc91a9399 100644 --- a/src/chocolatey.tests/infrastructure/commands/CommandExecutorSpecs.cs +++ b/src/chocolatey.tests/infrastructure/commands/CommandExecutorSpecs.cs @@ -22,7 +22,7 @@ namespace chocolatey.tests.infrastructure.commands using chocolatey.infrastructure.commands; using chocolatey.infrastructure.filesystem; using Moq; - using Should; + using FluentAssertions; public class CommandExecutorSpecs { @@ -94,7 +94,7 @@ public void Should_call_ExitCode() [Fact] public void Should_return_an_exit_code_of_zero_when_finished() { - result.ShouldEqual(0); + result.Should().Be(0); } } @@ -123,7 +123,7 @@ public void Should_call_WaitForExit() [Fact] public void Should_return_an_exit_code_of_negative_one_since_it_timed_out() { - result.ShouldEqual(-1); + result.Should().Be(-1); } [Fact] @@ -145,7 +145,7 @@ public override void Because() [Fact] public void Should_have_an_exit_code_of_negative_one_as_it_didnt_wait_for_finish() { - result.ShouldEqual(-1); + result.Should().Be(-1); } [Fact] diff --git a/src/chocolatey.tests/infrastructure/commands/ExternalCommandArgsBuilderSpecs.cs b/src/chocolatey.tests/infrastructure/commands/ExternalCommandArgsBuilderSpecs.cs index ddd08c029..faedb4128 100644 --- a/src/chocolatey.tests/infrastructure/commands/ExternalCommandArgsBuilderSpecs.cs +++ b/src/chocolatey.tests/infrastructure/commands/ExternalCommandArgsBuilderSpecs.cs @@ -20,7 +20,7 @@ namespace chocolatey.tests.infrastructure.commands using System.Collections.Generic; using chocolatey.infrastructure.app.configuration; using chocolatey.infrastructure.commands; - using Should; + using FluentAssertions; public class ExternalCommandArgsBuilderSpecs { @@ -53,7 +53,7 @@ public void Should_add_a_parameter_if_property_value_is_set() { ArgumentOption = "-source " }); - buildConfigs().ShouldEqual("-source " + configuration.Sources); + buildConfigs().Should().Be("-source " + configuration.Sources); } [Fact] @@ -66,7 +66,7 @@ public void Should_add_a_parameter_if_property_value_is_sub_property() { ArgumentOption = "-apikey " }); - buildConfigs().ShouldEqual("-apikey " + configuration.ApiKeyCommand.Key); + buildConfigs().Should().Be("-apikey " + configuration.ApiKeyCommand.Key); } [Fact] @@ -79,7 +79,7 @@ public void Should_skip_a_parameter_that_does_not_match_the_case_of_the_property { ArgumentOption = "-source " }); - buildConfigs().ShouldEqual(""); + buildConfigs().Should().Be(""); } [Fact] @@ -92,7 +92,7 @@ public void Should_add_a_parameter_that_does_not_match_the_case_of_the_property_ { ArgumentOption = "-source " }); - ExternalCommandArgsBuilder.BuildArguments(configuration, ignoreCaseDictionary).ShouldEqual("-source yo"); + ExternalCommandArgsBuilder.BuildArguments(configuration, ignoreCaseDictionary).Should().Be("-source yo"); } [Fact] @@ -106,7 +106,7 @@ public void Should_not_override_ArgumentValue_with_the_property_value_for_a_para ArgumentOption = "-source ", ArgumentValue = "bob" }); - buildConfigs().ShouldEqual("-source bob"); + buildConfigs().Should().Be("-source bob"); } [Fact] @@ -119,7 +119,7 @@ public void Should_skip_a_parameter_if_property_value_has_no_value() { ArgumentOption = "-version " }); - buildConfigs().ShouldEqual(""); + buildConfigs().Should().Be(""); } [Fact] @@ -133,7 +133,7 @@ public void Should_add_a_parameter_when_Required_set_true_even_if_property_has_n ArgumentOption = "install", Required = true }); - buildConfigs().ShouldEqual("install"); + buildConfigs().Should().Be("install"); } [Fact] @@ -146,7 +146,7 @@ public void Should_skip_a_parameter_not_found_in_the_properties_object() { ArgumentOption = "install" }); - buildConfigs().ShouldEqual(""); + buildConfigs().Should().Be(""); } [Fact] @@ -160,7 +160,7 @@ public void Should_add_a_parameter_not_found_in_the_properties_object_when_Requi ArgumentOption = "install", Required = true }); - buildConfigs().ShouldEqual("install"); + buildConfigs().Should().Be("install"); } [Fact] @@ -173,7 +173,7 @@ public void Should_add_a_boolean_as_a_switch_when_true() { ArgumentOption = "-verbose" }); - buildConfigs().ShouldEqual("-verbose"); + buildConfigs().Should().Be("-verbose"); } [Fact] @@ -186,7 +186,7 @@ public void Should_skip_a_boolean_as_a_switch_when_false() { ArgumentOption = "-pre" }); - buildConfigs().ShouldEqual(""); + buildConfigs().Should().Be(""); } [Fact] @@ -200,7 +200,7 @@ public void Should_quote_a_value_when_QuoteValue_is_set_to_true() ArgumentOption = "-source ", QuoteValue = true }); - buildConfigs().ShouldEqual("-source \"yo\""); + buildConfigs().Should().Be("-source \"yo\""); } [Fact] @@ -213,7 +213,7 @@ public void Should_auto_quote_an_argument_value_with_spaces() { ArgumentOption = "-command " }); - buildConfigs().ShouldEqual("-command \"{0}\"".FormatWith(configuration.CommandName)); + buildConfigs().Should().Be("-command \"{0}\"".FormatWith(configuration.CommandName)); } [Fact] @@ -227,7 +227,7 @@ public void Should_not_quote_an_argument_option_with_spaces() ArgumentOption = "-source you know = ", QuoteValue = true }); - buildConfigs().ShouldEqual("-source you know = \"yo\""); + buildConfigs().Should().Be("-source you know = \"yo\""); } [Fact] @@ -241,7 +241,7 @@ public void Should_use_only_the_value_when_UseValueOnly_is_set_to_true() ArgumentOption = "-source ", UseValueOnly = true }); - buildConfigs().ShouldEqual("yo"); + buildConfigs().Should().Be("yo"); } [Fact] @@ -257,7 +257,7 @@ public void Should_use_only_the_value_when_UseValueOnly_and_Required_is_set_to_t UseValueOnly = true, Required = true }); - buildConfigs().ShouldEqual("bob"); + buildConfigs().Should().Be("bob"); } [Fact] @@ -271,7 +271,7 @@ public void Should_not_add_a_value_when_UseValueOnly_is_set_to_true_and_no_value ArgumentOption = "-version ", UseValueOnly = true }); - buildConfigs().ShouldEqual(""); + buildConfigs().Should().Be(""); } [Fact] @@ -291,7 +291,7 @@ public void Should_separate_arguments_by_one_space() { ArgumentOption = "-source " }); - buildConfigs().ShouldEqual("install -source yo"); + buildConfigs().Should().Be("install -source yo"); } [Fact] @@ -336,7 +336,7 @@ public void Should_add_items_in_order_based_on_the_dictionary() Required = true }); - buildConfigs().ShouldEqual("install -outputdirectory \"bob\" -source \"{0}\" -noninteractive -nocache".FormatWith(configuration.Sources)); + buildConfigs().Should().Be("install -outputdirectory \"bob\" -source \"{0}\" -noninteractive -nocache".FormatWith(configuration.Sources)); } } } diff --git a/src/chocolatey.tests/infrastructure/commands/PowershellExecutorSpecs.cs b/src/chocolatey.tests/infrastructure/commands/PowershellExecutorSpecs.cs index 02adc4c89..7af79650b 100644 --- a/src/chocolatey.tests/infrastructure/commands/PowershellExecutorSpecs.cs +++ b/src/chocolatey.tests/infrastructure/commands/PowershellExecutorSpecs.cs @@ -22,7 +22,7 @@ namespace chocolatey.tests.infrastructure.commands using chocolatey.infrastructure.filesystem; using Moq; using NUnit.Framework; - using Should; + using FluentAssertions; public class PowershellExecutorSpecs { @@ -55,19 +55,19 @@ public override void Because() [Fact] public void Should_not_return_null() { - result.ShouldNotBeNull(); + result.Should().NotBeNull(); } [Fact] public void Should_find_powershell() { - result.ShouldNotBeEmpty(); + result.Should().NotBeEmpty(); } [Fact] public void Should_return_the_sysnative_path() { - result.ShouldEqual(expected); + result.Should().Be(expected); } } @@ -92,7 +92,7 @@ public override void Because() [Fact] public void Should_return_system32_path() { - result.ShouldEqual(expected); + result.Should().Be(expected); } } diff --git a/src/chocolatey.tests/infrastructure/configuration/ConfigSpecs.cs b/src/chocolatey.tests/infrastructure/configuration/ConfigSpecs.cs index 952ab866f..038ac9051 100644 --- a/src/chocolatey.tests/infrastructure/configuration/ConfigSpecs.cs +++ b/src/chocolatey.tests/infrastructure/configuration/ConfigSpecs.cs @@ -18,7 +18,7 @@ namespace chocolatey.tests.infrastructure.configuration { using chocolatey.infrastructure.app.configuration; using chocolatey.infrastructure.configuration; - using Should; + using FluentAssertions; public class ConfigSpecs { @@ -39,7 +39,7 @@ public override void Because() [Fact] public void Should_be_of_type_ChocolateyConfiguration() { - Config.GetConfigurationSettings().ShouldBeType(); + Config.GetConfigurationSettings().Should().BeOfType(); } } @@ -57,7 +57,7 @@ public override void Because() [Fact] public void Should_use_the_overridden_type() { - Config.GetConfigurationSettings().ShouldBeType(); + Config.GetConfigurationSettings().Should().BeOfType(); } } } diff --git a/src/chocolatey.tests/infrastructure/cryptography/CryptoHashProviderSpecs.cs b/src/chocolatey.tests/infrastructure/cryptography/CryptoHashProviderSpecs.cs index b11a7714a..e589ec5c9 100644 --- a/src/chocolatey.tests/infrastructure/cryptography/CryptoHashProviderSpecs.cs +++ b/src/chocolatey.tests/infrastructure/cryptography/CryptoHashProviderSpecs.cs @@ -24,7 +24,7 @@ namespace chocolatey.tests.infrastructure.cryptography using chocolatey.infrastructure.cryptography; using chocolatey.infrastructure.filesystem; using Moq; - using Should; + using FluentAssertions; public class CryptoHashProviderSpecs { @@ -62,7 +62,7 @@ public void Should_provide_the_correct_hash_based_on_a_checksum() { var expected = BitConverter.ToString(SHA256.Create().ComputeHash(byteArray)).Replace("-", string.Empty); - result.ShouldEqual(expected); + result.Should().Be(expected); } } @@ -91,7 +91,7 @@ public override void Because() [Fact] public void Should_log_a_warning() { - MockLogger.MessagesFor(LogLevel.Warn).Count.ShouldEqual(1); + MockLogger.MessagesFor(LogLevel.Warn).Count.Should().Be(1); } [Fact] @@ -103,7 +103,7 @@ public void Should_not_throw_an_error_itself() [Fact] public void Should_provide_an_unchanging_hash_for_a_file_too_big_to_hash() { - result.ShouldEqual(ApplicationParameters.HashProviderFileTooBig); + result.Should().Be(ApplicationParameters.HashProviderFileTooBig); } } } diff --git a/src/chocolatey.tests/infrastructure/events/EventSubscriptionManagerSpecs.cs b/src/chocolatey.tests/infrastructure/events/EventSubscriptionManagerSpecs.cs index f21c45ba0..67a051205 100644 --- a/src/chocolatey.tests/infrastructure/events/EventSubscriptionManagerSpecs.cs +++ b/src/chocolatey.tests/infrastructure/events/EventSubscriptionManagerSpecs.cs @@ -22,7 +22,7 @@ namespace chocolatey.tests.infrastructure.events using chocolatey.infrastructure.services; using context; using NUnit.Framework; - using Should; + using FluentAssertions; public class EventSubscriptionManagerSpecs { @@ -65,25 +65,25 @@ public override void Because() [Fact] public void Should_have_called_the_action() { - _wasCalled.ShouldBeTrue(); + _wasCalled.Should().BeTrue(); } [Fact] public void Should_have_passed_the_message() { - _localFakeEvent.ShouldEqual(Event); + _localFakeEvent.Should().Be(Event); } [Fact] public void Should_have_passed_the_name_correctly() { - _localFakeEvent.Name.ShouldEqual("yo"); + _localFakeEvent.Name.Should().Be("yo"); } [Fact] public void Should_have_passed_the_digits_correctly() { - _localFakeEvent.Digits.ShouldEqual(12d); + _localFakeEvent.Digits.Should().Be(12d); } } @@ -117,13 +117,13 @@ public override void Because() public void Should_wait_the_event_to_complete() { Console.WriteLine("event complete should be above this"); - _wasCalled.ShouldBeTrue(); + _wasCalled.Should().BeTrue(); } [Fact] public void Should_have_passed_the_message() { - _localFakeEvent.ShouldEqual(Event); + _localFakeEvent.Should().Be(Event); } } @@ -153,25 +153,25 @@ public override void Because() [Fact] public void Should_have_called_the_action() { - _wasCalled.ShouldBeTrue(); + _wasCalled.Should().BeTrue(); } [Fact] public void Should_have_passed_the_message() { - _localFakeEvent.ShouldEqual(Event); + _localFakeEvent.Should().Be(Event); } [Fact] public void Should_have_passed_the_name_correctly() { - _localFakeEvent.Name.ShouldEqual("yo"); + _localFakeEvent.Name.Should().Be("yo"); } [Fact] public void Should_have_passed_the_digits_correctly() { - _localFakeEvent.Digits.ShouldEqual(12d); + _localFakeEvent.Digits.Should().Be(12d); } } @@ -201,13 +201,13 @@ public override void Because() [Fact] public void Should_not_have_called_the_action() { - _wasCalled.ShouldBeFalse(); + _wasCalled.Should().BeFalse(); } [Fact] public void Should_not_have_passed_the_message() { - _localFakeEvent.ShouldNotEqual(Event); + _localFakeEvent.Should().NotBe(Event); } } @@ -253,7 +253,7 @@ public override void Because() public void Should_throw_an_error() { Assert.Throws(() => SubscriptionManager.Publish(null)); - _errored.ShouldBeTrue(); + _errored.Should().BeTrue(); } } } diff --git a/src/chocolatey.tests/infrastructure/filesystem/DotNetFileSystemSpecs.cs b/src/chocolatey.tests/infrastructure/filesystem/DotNetFileSystemSpecs.cs index 39a7ccf29..618468f76 100644 --- a/src/chocolatey.tests/infrastructure/filesystem/DotNetFileSystemSpecs.cs +++ b/src/chocolatey.tests/infrastructure/filesystem/DotNetFileSystemSpecs.cs @@ -24,7 +24,7 @@ namespace chocolatey.tests.infrastructure.filesystem using chocolatey.infrastructure.platforms; using Moq; using NUnit.Framework; - using Should; + using FluentAssertions; public class DotNetFileSystemSpecs { @@ -47,37 +47,37 @@ public override void Because() [Fact] public void GetFullPath_should_return_the_full_path_to_an_item() { - FileSystem.GetFullPath("test.txt").ShouldEqual(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.txt")); + FileSystem.GetFullPath("test.txt").Should().Be(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.txt")); } [Fact] public void GetFileNameWithoutExtension_should_return_a_file_name_without_an_extension() { - FileSystem.GetFilenameWithoutExtension("test.txt").ShouldEqual("test"); + FileSystem.GetFilenameWithoutExtension("test.txt").Should().Be("test"); } [Fact] public void GetFileNameWithoutExtension_should_return_a_file_name_without_an_extension_even_with_a_full_path() { - FileSystem.GetFilenameWithoutExtension("C:\\temp\\test.txt").ShouldEqual("test"); + FileSystem.GetFilenameWithoutExtension("C:\\temp\\test.txt").Should().Be("test"); } [Fact] public void GetExtension_should_return_the_extension_of_the_filename() { - FileSystem.GetFileExtension("test.txt").ShouldEqual(".txt"); + FileSystem.GetFileExtension("test.txt").Should().Be(".txt"); } [Fact] public void GetExtension_should_return_the_extension_of_the_filename_even_with_a_full_path() { - FileSystem.GetFileExtension("C:\\temp\\test.txt").ShouldEqual(".txt"); + FileSystem.GetFileExtension("C:\\temp\\test.txt").Should().Be(".txt"); } [Fact] public void GetDirectoryName_should_return_the_directory_of_the_path_to_the_file() { - FileSystem.GetDirectoryName("C:\\temp\\test.txt").ShouldEqual( + FileSystem.GetDirectoryName("C:\\temp\\test.txt").Should().Be( Platform.GetPlatform() == PlatformType.Windows ? "C:\\temp" : "C:/temp"); @@ -86,7 +86,7 @@ public void GetDirectoryName_should_return_the_directory_of_the_path_to_the_file [Fact] public void Combine_should_combine_the_file_paths_of_all_the_included_items_together() { - FileSystem.CombinePaths("C:\\temp", "yo", "filename.txt").ShouldEqual( + FileSystem.CombinePaths("C:\\temp", "yo", "filename.txt").Should().Be( Platform.GetPlatform() == PlatformType.Windows ? "C:\\temp\\yo\\filename.txt" : "C:/temp/yo/filename.txt"); @@ -95,7 +95,7 @@ public void Combine_should_combine_the_file_paths_of_all_the_included_items_toge [Fact] public void Combine_should_combine_when_paths_have_backslashes_in_subpaths() { - FileSystem.CombinePaths("C:\\temp", "yo\\timmy", "filename.txt").ShouldEqual( + FileSystem.CombinePaths("C:\\temp", "yo\\timmy", "filename.txt").Should().Be( Platform.GetPlatform() == PlatformType.Windows ? "C:\\temp\\yo\\timmy\\filename.txt" : "C:/temp/yo/timmy/filename.txt"); @@ -104,7 +104,7 @@ public void Combine_should_combine_when_paths_have_backslashes_in_subpaths() [Fact] public void Combine_should_combine_when_paths_start_with_backslashes_in_subpaths() { - FileSystem.CombinePaths("C:\\temp", "\\yo", "filename.txt").ShouldEqual( + FileSystem.CombinePaths("C:\\temp", "\\yo", "filename.txt").Should().Be( Platform.GetPlatform() == PlatformType.Windows ? "C:\\temp\\yo\\filename.txt" : "C:/temp/yo/filename.txt"); @@ -113,7 +113,7 @@ public void Combine_should_combine_when_paths_start_with_backslashes_in_subpaths [Fact] public void Combine_should_combine_when_paths_start_with_forwardslashes_in_subpaths() { - FileSystem.CombinePaths("C:\\temp", "/yo", "filename.txt").ShouldEqual( + FileSystem.CombinePaths("C:\\temp", "/yo", "filename.txt").Should().Be( Platform.GetPlatform() == PlatformType.Windows ? "C:\\temp\\yo\\filename.txt" : "C:/temp/yo/filename.txt"); @@ -155,41 +155,38 @@ private void reset() [Fact] public void GetExecutablePath_should_find_existing_executable() { - FileSystem.GetExecutablePath("cmd").ToLowerSafe().ShouldEqual( + FileSystem.GetExecutablePath("cmd").ToLowerSafe().Should().BeEquivalentTo( Platform.GetPlatform() == PlatformType.Windows ? "c:\\windows\\system32\\cmd.exe" - : "cmd", - StringComparer.OrdinalIgnoreCase - ); + : "cmd"); } [Fact] public void GetExecutablePath_should_find_existing_executable_with_extension() { - FileSystem.GetExecutablePath("cmd.exe").ToLowerSafe().ShouldEqual( + FileSystem.GetExecutablePath("cmd.exe").ToLowerSafe().Should().BeEquivalentTo( Platform.GetPlatform() == PlatformType.Windows ? "c:\\windows\\system32\\cmd.exe" - : "cmd.exe", - StringComparer.OrdinalIgnoreCase + : "cmd.exe" ); } [Fact] public void GetExecutablePath_should_return_same_value_when_executable_is_not_found() { - FileSystem.GetExecutablePath("daslakjsfdasdfwea").ShouldEqual("daslakjsfdasdfwea"); + FileSystem.GetExecutablePath("daslakjsfdasdfwea").Should().Be("daslakjsfdasdfwea"); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_null() { - FileSystem.GetExecutablePath(null).ShouldEqual(string.Empty); + FileSystem.GetExecutablePath(null).Should().Be(string.Empty); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_empty_string() { - FileSystem.GetExecutablePath(string.Empty).ShouldEqual(string.Empty); + FileSystem.GetExecutablePath(string.Empty).Should().Be(string.Empty); } } @@ -217,33 +214,33 @@ public void GetExecutablePath_should_find_existing_executable() { if (Platform.GetPlatform() == PlatformType.Windows) { - FileSystem.GetExecutablePath("ls").ShouldEqual("ls"); + FileSystem.GetExecutablePath("ls").Should().Be("ls"); } else { new string[] { "/bin/ls", "/usr/bin/ls" - }.ShouldContain(FileSystem.GetExecutablePath("ls")); + }.Should().Contain(FileSystem.GetExecutablePath("ls")); } } [Fact] public void GetExecutablePath_should_return_same_value_when_executable_is_not_found() { - FileSystem.GetExecutablePath("daslakjsfdasdfwea").ShouldEqual("daslakjsfdasdfwea"); + FileSystem.GetExecutablePath("daslakjsfdasdfwea").Should().Be("daslakjsfdasdfwea"); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_null() { - FileSystem.GetExecutablePath(null).ShouldEqual(string.Empty); + FileSystem.GetExecutablePath(null).Should().Be(string.Empty); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_empty_string() { - FileSystem.GetExecutablePath(string.Empty).ShouldEqual(string.Empty); + FileSystem.GetExecutablePath(string.Empty).Should().Be(string.Empty); } } } diff --git a/src/chocolatey.tests/infrastructure/guards/EnsureSpecs.cs b/src/chocolatey.tests/infrastructure/guards/EnsureSpecs.cs index 2db5c954c..55e57efc1 100644 --- a/src/chocolatey.tests/infrastructure/guards/EnsureSpecs.cs +++ b/src/chocolatey.tests/infrastructure/guards/EnsureSpecs.cs @@ -20,7 +20,7 @@ namespace chocolatey.tests.infrastructure.guards using chocolatey.infrastructure.app.configuration; using chocolatey.infrastructure.guards; using Moq; - using Should; + using FluentAssertions; public class EnsureSpecs { @@ -44,14 +44,14 @@ public override void Because() [Fact] public void Should_return_a_type_of_object_for_ensuring() { - result.ShouldBeType>(); + result.Should().BeOfType>(); } [Fact] public void Should_have_the_value_specified() { var bobEnsure = result as Ensure; - bobEnsure.Value.ShouldEqual(bob); + bobEnsure.Value.Should().Be(bob); } } @@ -68,14 +68,14 @@ public override void Because() [Fact] public void Should_return_a_ensure_string_type() { - result.ShouldBeType(); + result.Should().BeOfType(); } [Fact] public void Should_have_the_value_specified() { var bobEnsure = result as EnsureString; - bobEnsure.Value.ShouldEqual(bob); + bobEnsure.Value.Should().Be(bob); } } @@ -92,7 +92,7 @@ public void When_testing_a_string_against_null_value_should_fail() Action a = () => Ensure.That(() => test).NotNullOrWhitespace(); - a.ShouldThrow(); + a.Should().Throw(); } [Fact] @@ -100,7 +100,7 @@ public void When_testing_a_string_against_an_empty_value_should_fail() { Action a = () => Ensure.That(() => string.Empty).NotNullOrWhitespace(); - a.ShouldThrow(); + a.Should().Throw(); } [Fact] @@ -110,7 +110,7 @@ public void When_testing_a_string_against_a_whitespace_value_should_fail() Action a = () => Ensure.That(() => test).NotNullOrWhitespace(); - a.ShouldThrow(); + a.Should().Throw(); } [Fact] @@ -128,7 +128,7 @@ public void When_testing_a_string_without_expected_extension_should_fail() Action a = () => Ensure.That(() => test).HasExtension(".jpg", ".bmp", ".gif"); - a.ShouldThrow(); + a.Should().Throw(); } [Fact] @@ -169,8 +169,8 @@ public void When_testing_a_null_string_against_is_not_null_should_throw_an_Argum exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("cannot be null."); } [Fact] @@ -196,8 +196,8 @@ public void When_testing_a_null_Func_against_is_not_null_should_throw_an_Argumen exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("cannot be null."); } [Fact] @@ -223,8 +223,8 @@ public void When_testing_an_uninstantiated_class_against_is_not_null_should_thro exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("cannot be null."); } [Fact] @@ -245,8 +245,8 @@ public void When_testing_meets_with_null_ensureFunction_against_string_value_sho exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("Value for ensureFunction cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("Value for ensureFunction cannot be null."); } [Fact] @@ -267,9 +267,9 @@ public void When_testing_meets_with_null_exceptionAction_against_string_value_th exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("exceptionAction"); - exceptionMessage.ShouldContain("cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("exceptionAction"); + exceptionMessage.Should().Contain("cannot be null."); } [Fact] @@ -290,9 +290,9 @@ public void When_testing_meets_with_null_exceptionAction_against_string_value_th exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("exceptionAction"); - exceptionMessage.ShouldContain("cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("exceptionAction"); + exceptionMessage.Should().Contain("cannot be null."); } [Fact] @@ -313,9 +313,9 @@ public void When_testing_meets_with_null_ensureFunction_against_null_value_shoul exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("ensureFunction"); - exceptionMessage.ShouldContain("cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("ensureFunction"); + exceptionMessage.Should().Contain("cannot be null."); } [Fact] @@ -336,9 +336,9 @@ public void When_testing_meets_with_null_exceptionAction_against_null_value_shou exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("exceptionAction"); - exceptionMessage.ShouldContain("cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("exceptionAction"); + exceptionMessage.Should().Contain("cannot be null."); } [Fact] @@ -359,9 +359,9 @@ public void When_testing_meets_with_null_everything_should_throw_ArgumentNullExc exceptionMessage = ex.Message; } - exceptionType.ShouldBeType(); - exceptionMessage.ShouldContain("ensureFunction"); - exceptionMessage.ShouldContain("cannot be null."); + exceptionType.Should().BeOfType(); + exceptionMessage.Should().Contain("ensureFunction"); + exceptionMessage.Should().Contain("cannot be null."); } } @@ -395,19 +395,19 @@ public override void Because() [Fact] public void Should_not_invoke_the_exceptionAction() { - exceptionActionInvoked.ShouldBeFalse(); + exceptionActionInvoked.Should().BeFalse(); } [Fact] public void Should_not_return_a_specified_exception_since_there_was_no_failure() { - exceptionType.ShouldBeNull(); + exceptionType.Should().BeNull(); } [Fact] public void Should_not_return_the_specified_error_message() { - exceptionMessage.ShouldNotContain("this is what we throw."); + exceptionMessage.Should().NotContain("this is what we throw."); } [Fact] @@ -447,19 +447,19 @@ public override void Because() [Fact] public void Should_invoke_the_exceptionAction() { - exceptionActionInvoked.ShouldBeTrue(); + exceptionActionInvoked.Should().BeTrue(); } [Fact] public void Should_return_the_specified_exception_of_type_ApplicationException() { - exceptionType.ShouldBeType(); + exceptionType.Should().BeOfType(); } [Fact] public void Should_return_the_specified_error_message() { - exceptionMessage.ShouldContain("this is what we throw."); + exceptionMessage.Should().Contain("this is what we throw."); } [Fact] @@ -499,25 +499,25 @@ public override void Because() [Fact] public void Should_not_invoke_the_exceptionAction() { - exceptionActionInvoked.ShouldBeFalse(); + exceptionActionInvoked.Should().BeFalse(); } [Fact] public void Should_throw_an_error() { - exceptionType.ShouldNotBeNull(); + exceptionType.Should().NotBeNull(); } [Fact] public void Should_not_return_the_specified_exception_of_type_ApplicationException() { - exceptionType.ShouldNotBeType(); + exceptionType.Should().NotBeOfType(); } [Fact] public void Should_not_return_the_specified_error_message() { - exceptionMessage.ShouldNotContain("this is what we throw."); + exceptionMessage.Should().NotContain("this is what we throw."); } //[Fact] @@ -530,9 +530,9 @@ public void Should_not_return_the_specified_error_message() // public void Should_log_the_error_we_expect() // { // var messages = MockLogger.MessagesFor(LogLevel.Error); - // messages.ShouldNotBeEmpty(); - // messages.Count.ShouldEqual(1); - // messages[0].ShouldContain("Trying to call ensureFunction on"); + // messages.Should().NotBeEmpty(); + // messages.Count.Should().Be(1); + // messages[0].Should().Contain("Trying to call ensureFunction on"); // } } } diff --git a/src/chocolatey.tests/infrastructure/information/VersionInformationSpecs.cs b/src/chocolatey.tests/infrastructure/information/VersionInformationSpecs.cs index 645d6a2e1..b1138e00a 100644 --- a/src/chocolatey.tests/infrastructure/information/VersionInformationSpecs.cs +++ b/src/chocolatey.tests/infrastructure/information/VersionInformationSpecs.cs @@ -18,7 +18,7 @@ namespace chocolatey.tests.infrastructure.information { using System; using chocolatey.infrastructure.information; - using Should; + using FluentAssertions; public class VersionInformationSpecs { @@ -41,25 +41,25 @@ public override void Because() [Fact] public void Should_not_be_null() { - result.ShouldNotBeNull(); + result.Should().NotBeNull(); } [Fact] public void Should_not_be_empty() { - result.ShouldNotBeEmpty(); + result.Should().NotBeEmpty(); } [Fact] public void Should_be_transferable_to_Version() { - new Version(result).ShouldNotBeNull(); + new Version(result).Should().NotBeNull(); } [Fact] public void Should_not_equal_zero_dot_zero_dot_zero_dot_zero() { - result.ShouldNotEqual("0.0.0.0"); + result.Should().NotBe("0.0.0.0"); } } } diff --git a/src/chocolatey.tests/infrastructure/platforms/PlatformSpecs.cs b/src/chocolatey.tests/infrastructure/platforms/PlatformSpecs.cs index 543cde798..8e3058aeb 100644 --- a/src/chocolatey.tests/infrastructure/platforms/PlatformSpecs.cs +++ b/src/chocolatey.tests/infrastructure/platforms/PlatformSpecs.cs @@ -21,7 +21,7 @@ namespace chocolatey.tests.infrastructure.platforms using chocolatey.infrastructure.filesystem; using chocolatey.infrastructure.platforms; using Moq; - using Should; + using FluentAssertions; using Environment = System.Environment; public class PlatformSpecs @@ -50,7 +50,7 @@ public override void Because() [Fact] public void Should_not_be_Unknown() { - result.ShouldNotEqual(PlatformType.Unknown); + result.Should().NotBe(PlatformType.Unknown); } } @@ -72,7 +72,7 @@ public override void Because() [Fact] public void Should_return_Windows() { - result.ShouldEqual(PlatformType.Windows); + result.Should().Be(PlatformType.Windows); } } @@ -94,7 +94,7 @@ public override void Because() [Fact] public void Should_return_Mac() { - result.ShouldEqual(PlatformType.Mac); + result.Should().Be(PlatformType.Mac); } } @@ -117,7 +117,7 @@ public override void Because() [Fact] public void Should_return_Linux() { - result.ShouldEqual(PlatformType.Linux); + result.Should().Be(PlatformType.Linux); } } @@ -140,7 +140,7 @@ public override void Because() [Fact] public void Should_return_Mac() { - result.ShouldEqual(PlatformType.Mac); + result.Should().Be(PlatformType.Mac); } } } diff --git a/src/chocolatey.tests/infrastructure/tokens/TokenReplacerSpecs.cs b/src/chocolatey.tests/infrastructure/tokens/TokenReplacerSpecs.cs index d3f48a2be..1463a66d3 100644 --- a/src/chocolatey.tests/infrastructure/tokens/TokenReplacerSpecs.cs +++ b/src/chocolatey.tests/infrastructure/tokens/TokenReplacerSpecs.cs @@ -19,7 +19,7 @@ namespace chocolatey.tests.infrastructure.tokens using System.Collections.Generic; using chocolatey.infrastructure.app.configuration; using chocolatey.infrastructure.tokens; - using Should; + using FluentAssertions; public class TokenReplacerSpecs { @@ -43,67 +43,67 @@ public override void Because() [Fact] public void When_given_brace_brace_CommandName_brace_brace_should_replace_with_the_Name_from_the_configuration() { - TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[CommandName]]").ShouldEqual("Hi! My name is " + name); + TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[CommandName]]").Should().Be("Hi! My name is " + name); } [Fact] public void When_given_brace_CommandName_brace_should_NOT_replace_the_value() { - TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [CommandName]").ShouldEqual("Hi! My name is [CommandName]"); + TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [CommandName]").Should().Be("Hi! My name is [CommandName]"); } [Fact] public void When_given_a_value_that_is_the_name_of_a_configuration_item_but_is_not_properly_tokenized_it_should_NOT_replace_the_value() { - TokenReplacer.ReplaceTokens(configuration, "Hi! My name is CommandName").ShouldEqual("Hi! My name is CommandName"); + TokenReplacer.ReplaceTokens(configuration, "Hi! My name is CommandName").Should().Be("Hi! My name is CommandName"); } [Fact] public void When_given_brace_brace_commandname_brace_brace_should_replace_with_the_Name_from_the_configuration() { - TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[commandname]]").ShouldEqual("Hi! My name is " + name); + TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[commandname]]").Should().Be("Hi! My name is " + name); } [Fact] public void When_given_brace_brace_COMMANDNAME_brace_brace_should_replace_with_the_Name_from_the_configuration() { - TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[COMMANDNAME]]").ShouldEqual("Hi! My name is " + name); + TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[COMMANDNAME]]").Should().Be("Hi! My name is " + name); } [Fact] public void When_given_brace_brace_cOMmAnDnAMe_brace_brace_should_replace_with_the_Name_from_the_configuration() { - TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[cOMmAnDnAMe]]").ShouldEqual("Hi! My name is " + name); + TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[cOMmAnDnAMe]]").Should().Be("Hi! My name is " + name); } [Fact] public void If_given_brace_brace_Version_brace_brace_should_NOT_replace_with_the_Name_from_the_configuration() { - TokenReplacer.ReplaceTokens(configuration, "Go to [[Version]]").ShouldNotContain(name); + TokenReplacer.ReplaceTokens(configuration, "Go to [[Version]]").Should().NotContain(name); } [Fact] public void If_given_a_value_that_is_not_set_should_return_that_value_as_string_Empty() { - TokenReplacer.ReplaceTokens(configuration, "Go to [[Version]]").ShouldEqual("Go to " + string.Empty); + TokenReplacer.ReplaceTokens(configuration, "Go to [[Version]]").Should().Be("Go to " + string.Empty); } [Fact] public void If_given_a_value_that_does_not_exist_should_return_the_original_value_unchanged() { - TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[DataBase]]").ShouldEqual("Hi! My name is [[DataBase]]"); + TokenReplacer.ReplaceTokens(configuration, "Hi! My name is [[DataBase]]").Should().Be("Hi! My name is [[DataBase]]"); } [Fact] public void If_given_an_empty_value_should_return_the_empty_value() { - TokenReplacer.ReplaceTokens(configuration, "").ShouldEqual(""); + TokenReplacer.ReplaceTokens(configuration, "").Should().Be(""); } [Fact] public void If_given_an_null_value_should_return_the_ll_value() { - TokenReplacer.ReplaceTokens(configuration, null).ShouldEqual(""); + TokenReplacer.ReplaceTokens(configuration, null).Should().Be(""); } } @@ -120,7 +120,7 @@ public override void Because() [Fact] public void When_given_a_proper_token_it_should_replace_with_the_dictionary_value() { - TokenReplacer.ReplaceTokens(tokens, "Hi! My name is [[dude]]").ShouldEqual("Hi! My name is " + value); + TokenReplacer.ReplaceTokens(tokens, "Hi! My name is [[dude]]").Should().Be("Hi! My name is " + value); } } } diff --git a/src/chocolatey.tests/infrastructure/tolerance/FaultToleranceSpecs.cs b/src/chocolatey.tests/infrastructure/tolerance/FaultToleranceSpecs.cs index 935bd0487..f11eb8df0 100644 --- a/src/chocolatey.tests/infrastructure/tolerance/FaultToleranceSpecs.cs +++ b/src/chocolatey.tests/infrastructure/tolerance/FaultToleranceSpecs.cs @@ -19,7 +19,7 @@ namespace chocolatey.tests.infrastructure.tolerance using System; using chocolatey.infrastructure.tolerance; using NUnit.Framework; - using Should; + using FluentAssertions; public class FaultToleranceSpecs { @@ -52,7 +52,7 @@ public void Should_not_allow_the_number_of_retries_to_be_zero() { }); - m.ShouldThrow(); + m.Should().Throw(); } [Fact] @@ -62,7 +62,7 @@ public void Should_throw_an_error_if_retries_are_reached() Action m = () => FaultTolerance.Retry(2, () => { throw new Exception("YIKES"); }, waitDurationMilliseconds: 0); - m.ShouldThrow(); + m.Should().Throw(); } [Fact] @@ -79,7 +79,7 @@ public void Should_log_warning_each_time() // don't care } - MockLogger.MessagesFor(LogLevel.Warn).Count.ShouldEqual(2); + MockLogger.MessagesFor(LogLevel.Warn).Count.Should().Be(2); } [Fact] @@ -104,7 +104,7 @@ public void Should_retry_the_number_of_times_specified() // don't care } - i.ShouldEqual(10); + i.Should().Be(10); } [Fact] @@ -115,9 +115,9 @@ public void Should_return_immediately_when_successful() var i = 0; FaultTolerance.Retry(3, () => { i += 1; }, waitDurationMilliseconds: 0); - i.ShouldEqual(1); + i.Should().Be(1); - MockLogger.MessagesFor(LogLevel.Warn).Count.ShouldEqual(0); + MockLogger.MessagesFor(LogLevel.Warn).Count.Should().Be(0); } } @@ -137,7 +137,7 @@ public void Should_log_an_error_message() "You have an error" ); - MockLogger.MessagesFor(LogLevel.Error).Count.ShouldEqual(1); + MockLogger.MessagesFor(LogLevel.Error).Count.Should().Be(1); } [Fact] @@ -150,7 +150,7 @@ public void Should_log_the_expected_error_message() "You have an error" ); - MockLogger.MessagesFor(LogLevel.Error)[0].ShouldEqual("You have an error:{0} This is the message".FormatWith(Environment.NewLine)); + MockLogger.MessagesFor(LogLevel.Error)[0].Should().Be("You have an error:{0} This is the message".FormatWith(Environment.NewLine)); } [Fact] @@ -164,7 +164,7 @@ public void Should_log_a_warning_message_when_set_to_warn() logWarningInsteadOfError: true ); - MockLogger.MessagesFor(LogLevel.Warn).Count.ShouldEqual(1); + MockLogger.MessagesFor(LogLevel.Warn).Count.Should().Be(1); } [Fact] @@ -178,7 +178,7 @@ public void Should_throw_an_error_if_throwError_set_to_true() throwError: true ); - m.ShouldThrow(); + m.Should().Throw(); } [Fact] @@ -193,7 +193,7 @@ public void Should_still_throw_an_error_when_warn_is_set_if_throwError_set_to_tr throwError: true ); - m.ShouldThrow(); + m.Should().Throw(); } } } From 51efab5b7eee7c874611a2cab846c3c8afc2034c Mon Sep 17 00:00:00 2001 From: TheCakeIsNaOH Date: Fri, 18 Nov 2022 14:24:54 -0600 Subject: [PATCH 09/52] (#2893) Switch Unit and Integration tests to langVersion 7.3 This is to allow Visual Studio 2017 to build the project. Otherwise, code in the FluentAssertions library will cause errors when build with VS2017. --- .../chocolatey.tests.integration.csproj | 1 + src/chocolatey.tests/chocolatey.tests.csproj | 1 + src/chocolatey/chocolatey.csproj | 1 + 3 files changed, 3 insertions(+) diff --git a/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj b/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj index 4f32cc30f..c53a33df8 100644 --- a/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj +++ b/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj @@ -13,6 +13,7 @@ chocolatey.tests.integration chocolatey.tests.integration v4.8 + 7.3 512 ..\ true diff --git a/src/chocolatey.tests/chocolatey.tests.csproj b/src/chocolatey.tests/chocolatey.tests.csproj index 6a9d93f20..e37e7d021 100644 --- a/src/chocolatey.tests/chocolatey.tests.csproj +++ b/src/chocolatey.tests/chocolatey.tests.csproj @@ -13,6 +13,7 @@ chocolatey.tests chocolatey.tests v4.8 + 7.3 512 ..\ diff --git a/src/chocolatey/chocolatey.csproj b/src/chocolatey/chocolatey.csproj index be3c9cab5..930bb5524 100644 --- a/src/chocolatey/chocolatey.csproj +++ b/src/chocolatey/chocolatey.csproj @@ -12,6 +12,7 @@ chocolatey chocolatey v4.8 + 7.3 512 ..\ From c853166bd04ce62e12f936f23fd7f9a8421053a7 Mon Sep 17 00:00:00 2001 From: TheCakeIsNaOH Date: Tue, 20 Dec 2022 08:43:08 -0600 Subject: [PATCH 10/52] (#2893) Update tests to use to FluentAssertions style This updates tests to use new ways of writing assertions that are available in FluentAssertions but where not in Should --- .../builders/ConfigurationBuilderSpecs.cs | 4 +- .../services/FilesServiceSpecs.cs | 2 +- .../filesystem/DotNetFileSystemSpecs.cs | 17 +- .../scenarios/InfoScenarios.cs | 90 +- .../scenarios/InstallScenarios.cs | 1183 ++++----------- .../scenarios/ListScenarios.cs | 38 +- .../scenarios/PackScenarios.cs | 21 +- .../scenarios/PinScenarios.cs | 23 +- .../scenarios/SearchScenarios.cs | 91 +- .../scenarios/UninstallScenarios.cs | 276 ++-- .../scenarios/UpgradeScenarios.cs | 1331 ++++++----------- .../commands/ChocolateyExportCommandSpecs.cs | 3 +- .../commands/ChocolateyNewCommandSpecs.cs | 22 +- .../commands/ChocolateyPackCommandSpecs.cs | 2 +- .../commands/ChocolateyPinCommandSpecs.cs | 6 +- .../ChocolateyUnpackSelfCommandSpecs.cs | 2 +- .../nuget/ChocolateyNugetLoggerSpecs.cs | 44 +- .../nuget/NugetCommonSpecs.cs | 2 +- .../ChocolateyConfigSettingsServiceSpecs.cs | 8 +- .../services/FilesServiceSpecs.cs | 2 +- .../services/NugetServiceSpecs.cs | 8 +- .../services/RulesServiceSpecs.cs | 14 +- .../services/TemplateServiceSpecs.cs | 136 +- .../cryptography/CryptoHashProviderSpecs.cs | 2 +- .../filesystem/DotNetFileSystemSpecs.cs | 12 +- .../infrastructure/guards/EnsureSpecs.cs | 2 +- .../tolerance/FaultToleranceSpecs.cs | 8 +- 27 files changed, 1124 insertions(+), 2225 deletions(-) diff --git a/src/chocolatey.tests.integration/infrastructure.app/builders/ConfigurationBuilderSpecs.cs b/src/chocolatey.tests.integration/infrastructure.app/builders/ConfigurationBuilderSpecs.cs index 683ae280e..f8a5555b2 100644 --- a/src/chocolatey.tests.integration/infrastructure.app/builders/ConfigurationBuilderSpecs.cs +++ b/src/chocolatey.tests.integration/infrastructure.app/builders/ConfigurationBuilderSpecs.cs @@ -140,7 +140,7 @@ public void ShouldHaveProxyConfiguration() if (!SystemSet && !ArgumentSet && !ConfigSet && !EnvironmentVariableSet) { - Configuration.Proxy.Location.Should().Be(string.Empty); + Configuration.Proxy.Location.Should().BeEmpty(); return; } @@ -211,7 +211,7 @@ public void ShouldBypassProxy() if (!ArgumentSet && !ConfigSet && !EnvironmentVariableSet) { - Configuration.Proxy.BypassList.Should().Be(string.Empty); + Configuration.Proxy.BypassList.Should().BeEmpty(); return; } diff --git a/src/chocolatey.tests.integration/infrastructure.app/services/FilesServiceSpecs.cs b/src/chocolatey.tests.integration/infrastructure.app/services/FilesServiceSpecs.cs index 37c167a4f..65c37ccd9 100644 --- a/src/chocolatey.tests.integration/infrastructure.app/services/FilesServiceSpecs.cs +++ b/src/chocolatey.tests.integration/infrastructure.app/services/FilesServiceSpecs.cs @@ -101,7 +101,7 @@ public void Should_log_a_warning_about_locked_files() [Fact] public void Should_return_a_special_code_for_locked_files() { - _result.Files.FirstOrDefault(x => x.Path == _theLockedFile).Checksum.Should().Be(ApplicationParameters.HashProviderFileLocked); + _result.Files.Should().ContainSingle(x => x.Path == _theLockedFile).Which.Checksum.Should().Be(ApplicationParameters.HashProviderFileLocked); } } } diff --git a/src/chocolatey.tests.integration/infrastructure/filesystem/DotNetFileSystemSpecs.cs b/src/chocolatey.tests.integration/infrastructure/filesystem/DotNetFileSystemSpecs.cs index 449598011..af2d2f778 100644 --- a/src/chocolatey.tests.integration/infrastructure/filesystem/DotNetFileSystemSpecs.cs +++ b/src/chocolatey.tests.integration/infrastructure/filesystem/DotNetFileSystemSpecs.cs @@ -23,6 +23,7 @@ namespace chocolatey.tests.integration.infrastructure.filesystem using chocolatey.infrastructure.platforms; using NUnit.Framework; using FluentAssertions; + using FluentAssertions.Extensions; public class DotNetFileSystemSpecs { @@ -85,13 +86,13 @@ public void GetExecutablePath_should_return_same_value_when_executable_is_not_fo [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_null() { - FileSystem.GetExecutablePath(null).Should().Be(string.Empty); + FileSystem.GetExecutablePath(null).Should().BeEmpty(); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_empty_string() { - FileSystem.GetExecutablePath(string.Empty).Should().Be(string.Empty); + FileSystem.GetExecutablePath(string.Empty).Should().BeEmpty(); } } @@ -130,8 +131,7 @@ public void GetFiles_should_return_files_that_meet_the_pattern() var actual = FileSystem.GetFiles(ContextPath, "chocolateyInstall.ps1", SearchOption.AllDirectories).ToList(); FileSystem.DeleteFile(filePath); - actual.Should().NotBeEmpty(); - actual.Count().Should().Be(1); + actual.Should().ContainSingle(); } [Fact] @@ -145,8 +145,7 @@ public void GetFiles_should_return_files_that_meet_the_pattern_regardless_of_cas var actual = FileSystem.GetFiles(ContextPath, "chocolateyinstall.ps1", SearchOption.AllDirectories).ToList(); FileSystem.DeleteFile(filePath); - actual.Should().NotBeEmpty(); - actual.Count().Should().Be(1); + actual.Should().ContainSingle(); } [Fact] @@ -205,7 +204,7 @@ public override void Because() [Fact] public void Visible_file_should_now_be_hidden() { - ((FileAttributes)FileSystem.GetFileInfoFor(SourceFile).Attributes & FileAttributes.Hidden).Should().Be(FileAttributes.Hidden); + ((FileAttributes)FileSystem.GetFileInfoFor(SourceFile).Attributes).Should().HaveFlag(FileAttributes.Hidden); } public override void AfterObservations() @@ -232,7 +231,7 @@ public override void Because() [Fact] public void Readonly_file_should_no_longer_be_readonly() { - ((FileAttributes)FileSystem.GetFileInfoFor(SourceFile).Attributes & FileAttributes.ReadOnly).Should().NotBe(FileAttributes.ReadOnly); + ((FileAttributes)FileSystem.GetFileInfoFor(SourceFile).Attributes).Should().NotHaveFlag(FileAttributes.ReadOnly); } } @@ -351,7 +350,7 @@ public override void Because() [Fact] public void Should_have_correct_modified_date() { - FileSystem.GetFileModifiedDate(TheTestFile).ToShortDateString().Should().Be(DateTime.Now.AddDays(-1).ToShortDateString()); + FileSystem.GetFileModifiedDate(TheTestFile).Should().BeCloseTo(1.Days().Before(DateTime.Now), 5.Seconds()); } } } diff --git a/src/chocolatey.tests.integration/scenarios/InfoScenarios.cs b/src/chocolatey.tests.integration/scenarios/InfoScenarios.cs index 0b0e3a864..ca6c30e64 100644 --- a/src/chocolatey.tests.integration/scenarios/InfoScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/InfoScenarios.cs @@ -83,8 +83,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage 1.0.0"); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage 1.0.0")); } [Fact] @@ -93,15 +93,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.1.0.0" + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate))); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1 packages found.")); } } @@ -122,8 +122,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage 1.0.0"); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage 1.0.0")); } [Fact] @@ -132,15 +132,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.1.0.0" + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate))); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1 packages found.")); } } @@ -161,8 +161,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage 1.0.0"); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage 1.0.0")); } [Fact] @@ -171,15 +171,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.1.0.0" + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate))); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1 packages found.")); } } @@ -202,8 +202,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage {0}".FormatWith(NormalizedVersion)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage {0}".FormatWith(NormalizedVersion))); } [Fact] @@ -212,15 +212,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.{0}".FormatWith(NonNormalizedVersion) + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate))); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1 packages found.")); } } @@ -245,8 +245,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage {0}".FormatWith(NormalizedVersion)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage {0}".FormatWith(NormalizedVersion))); } [Fact] @@ -255,15 +255,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.{0}".FormatWith(NonNormalizedVersion) + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate))); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1 packages found.")); } } @@ -288,8 +288,8 @@ public override void Context() [Fact] public void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage {0}".FormatWith(NormalizedVersion)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage {0}".FormatWith(NormalizedVersion))); } [Fact] @@ -298,15 +298,15 @@ public void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.{0}".FormatWith(NonNormalizedVersion) + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate))); } [Fact] public void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1 packages found.")); } } @@ -336,8 +336,8 @@ public override void Because() [Fact] public new void Should_log_standalone_header_with_package_name_and_version() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain("installpackage 1.0.0"); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage 1.0.0")); } [Fact] @@ -346,15 +346,15 @@ public new void Should_log_package_information() var lastWriteDate = File.GetLastWriteTimeUtc(Path.Combine("PackageOutput", "installpackage.1.0.0" + NuGetConstants.PackageExtension)) .ToShortDateString(); - MockLogger.Messages.Keys.Should().Contain(LogLevel.Info.ToStringSafe()); - MockLogger.Messages[LogLevel.Info.ToStringSafe()].Should().Contain(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(" Title: installpackage | Published: {0}\r\n Number of Downloads: n/a | Downloads for this version: n/a\r\n Package url\r\n Chocolatey Package Source: n/a\r\n Tags: installpackage admin\r\n Software Site: n/a\r\n Software License: n/a\r\n Summary: __REPLACE__\r\n Description: __REPLACE__\r\n".FormatWith(lastWriteDate))); } [Fact] public new void Should_log_package_count_as_warning() { - MockLogger.Messages.Keys.Should().Contain(LogLevel.Warn.ToStringSafe()); - MockLogger.Messages[LogLevel.Warn.ToStringSafe()].Should().Contain("1 packages found."); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1 packages found.")); } } @@ -372,7 +372,7 @@ public override void Context() [Fact] public void Should_show_only_one_result() { - Results.Count.Should().Be(1, "Expected 1 package to be returned!"); + Results.Should().ContainSingle("Expected 1 package to be returned!"); } [Fact] @@ -422,7 +422,7 @@ public override void Context() [Fact] public void Should_show_only_one_result() { - Results.Count.Should().Be(1, "Expected 1 package to be returned!"); + Results.Should().ContainSingle( "Expected 1 package to be returned!"); } [Fact] @@ -478,7 +478,7 @@ public override void Context() [Fact] public void Should_show_only_one_result() { - Results.Count.Should().Be(1, "Expected 1 package to be returned!"); + Results.Should().ContainSingle( "Expected 1 package to be returned!"); } [Fact] diff --git a/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs b/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs index fb2c89fce..a6b5a36cb 100644 --- a/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs @@ -33,6 +33,7 @@ namespace chocolatey.tests.integration.scenarios using NuGet.Packaging; using NUnit.Framework; using FluentAssertions; + using FluentAssertions.Execution; using IFileSystem = chocolatey.infrastructure.filesystem.IFileSystem; public class InstallScenarios @@ -83,13 +84,8 @@ public void Should_not_install_a_package_in_the_lib_directory() [Fact] public void Should_contain_a_message_that_it_would_have_used_Nuget_to_install_a_package() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("would have used NuGet to install packages")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToString()) + .WhoseValue.Should().Contain(m => m.Contains("would have used NuGet to install packages")); } [Fact] @@ -97,13 +93,17 @@ public void Should_contain_a_message_that_it_would_have_used_Nuget_to_install_a_ [Platform(Exclude = "Mono")] public void Should_contain_a_message_that_it_would_have_run_a_powershell_script() { - MockLogger.ContainsMessage("chocolateyinstall.ps1", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should() + .ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("chocolateyinstall.ps1")); } [Fact] public void Should_not_contain_a_message_that_it_would_have_run_powershell_modification_script() { - MockLogger.ContainsMessage("chocolateyBeforeModify.ps1", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should() + .ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("chocolateyBeforeModify.ps1")); } } @@ -132,25 +132,16 @@ public void Should_not_install_a_package_in_the_lib_directory() [Fact] public void Should_contain_a_message_that_it_would_have_used_Nuget_to_install_a_package() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("would have used NuGet to install packages")) expectedMessage = true; - } + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToString()) + .WhoseValue.Should().Contain(m => m.Contains("would have used NuGet to install packages")); - expectedMessage.Should().BeTrue(); } [Fact] public void Should_contain_a_message_that_it_was_unable_to_find_package() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Error).OrEmpty()) - { - if (message.Contains("somethingnonexisting not installed. The package was not found with the source(s) listed")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToString()) + .WhoseValue.Should().Contain(m => m.Contains("somethingnonexisting not installed. The package was not found with the source(s) listed")); } } @@ -196,7 +187,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be(TestVersion()); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be(TestVersion()); } } @@ -268,15 +259,9 @@ public void Should_have_a_console_shim_that_is_set_for_non_gui_access() stdErrAction: (s, e) => messages.Add(e.Data) ); - var messageFound = false; - - foreach (var message in messages.OrEmpty()) - { - if (string.IsNullOrWhiteSpace(message)) continue; - if (message.Contains("is gui? False")) messageFound = true; - } - - messageFound.Should().BeTrue("GUI false message not found"); + messages.Should() + .NotBeNullOrEmpty() + .And.Contain(m => m.Contains("is gui? False"), "GUI false message not found"); } [Fact] @@ -295,27 +280,17 @@ public void Should_have_a_graphical_shim_that_is_set_for_gui_access() stdErrAction: (s, e) => messages.Add(e.Data) ); - var messageFound = false; - - foreach (var message in messages.OrEmpty()) - { - if (string.IsNullOrWhiteSpace(message)) continue; - if (message.Contains("is gui? True")) messageFound = true; - } - - messageFound.Should().BeTrue("GUI true message not found"); + messages.Should() + .NotBeNullOrEmpty() + .And.Contain(m => m.Contains("is gui? True"), "GUI true message not found"); } [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should() + .ContainKey(LogLevel.Warn.ToString()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -355,7 +330,9 @@ public void Should_have_executed_chocolateyInstall_script() { var message = "installpackage v{0} has been installed".FormatWith(TestVersion()); - MockLogger.ContainsMessage(message, LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should() + .ContainKey(LogLevel.Info.ToString()) + .WhoseValue.Should().Contain(m => m.Contains(message)); } protected string TestVersion() @@ -440,89 +417,55 @@ public void Should_install_the_dependency_in_the_lib_directory() [Fact] public void Should_contain_a_warning_message_that_it_installed_4_out_of_5_packages_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("5/6")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("5/6")); } [Fact] public void Should_contain_a_message_that_upgradepackage_with_an_expected_specified_version_was_installed() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("upgradepackage v1.0.0")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage v1.0.0")); } [Fact] public void Should_have_a_successful_package_result_for_all_but_expected_missing_package() { - foreach (var packageResult in Results) - { - if (packageResult.Value.Name.IsEqualTo("missingpackage")) continue; - - packageResult.Value.Success.Should().BeTrue(); - } + Results.Where(r => !r.Value.Name.IsEqualTo("missingpackage")) + .Should().AllSatisfy(p => p.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_a_successful_package_result_for_missing_package() { - foreach (var packageResult in Results) - { - if (!packageResult.Value.Name.IsEqualTo("missingpackage")) continue; - - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().Contain(r => r.Value.Name.IsEqualTo("missingpackage")) + .Which.Value.Success.Should().BeFalse(); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_specify_config_file_is_being_used_in_message() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("Installing from config file:")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Installing from config file:")); } [Fact] public void Should_print_out_package_from_config_file_in_message() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("installpackage")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage")); } } @@ -556,35 +499,23 @@ public void Should_still_have_the_expected_version_of_the_package_installed() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_install_any_packages() { - bool installWarning = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installWarning = true; - } - - installWarning.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] public void Should_contain_a_message_about_force_to_reinstall() { - bool installWarning = false; - foreach (var messageType in MockLogger.Messages.OrEmpty()) - { - foreach (var message in messageType.Value) - { - if (message.Contains("Use --force to reinstall")) installWarning = true; - } - } - - installWarning.Should().BeTrue(); + MockLogger.Messages.Should() + .ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Use --force to reinstall")); } [Fact] @@ -641,7 +572,7 @@ public void Should_install_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -663,13 +594,8 @@ public void Should_delete_the_rollback() [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -757,13 +683,8 @@ public void Should_delete_the_rollback() [Fact] public void Should_contain_a_message_that_it_was_unsuccessful() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -834,7 +755,7 @@ public void Should_reinstall_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -851,13 +772,8 @@ public void Should_not_be_able_delete_the_rollback() [Fact] public void Should_contain_a_message_that_it_installed_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -934,7 +850,7 @@ public void Should_still_have_the_package_installed_with_the_expected_version_of var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -949,13 +865,8 @@ public void Should_delete_the_rollback() [Fact] public void Should_contain_a_message_that_it_was_unable_to_reinstall_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -1004,13 +915,8 @@ public void Should_not_install_a_package_in_the_lib_directory() [Fact] public void Should_contain_a_warning_message_that_it_did_not_install_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -1034,31 +940,16 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("The package was not found")) errorFound = true; - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("The package was not found"))); } [Fact] @@ -1095,13 +986,8 @@ public void Should_not_install_a_package_in_the_lib_directory() [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_install_a_package() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -1125,31 +1011,16 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("The package was not found")) errorFound = true; - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("The package was not found"))); } } @@ -1190,13 +1061,8 @@ public void Should_put_a_package_in_the_lib_bad_directory() [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_install_a_package() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -1220,31 +1086,16 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("chocolateyInstall.ps1")) errorFound = true; - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("chocolateyInstall.ps1"))); } } @@ -1294,13 +1145,8 @@ public void Should_install_the_expected_version_of_the_package() [Fact] public void Should_contain_a_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -1374,13 +1220,8 @@ public void Should_put_a_package_in_the_lib_bad_directory() [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_install_a_package() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -1404,31 +1245,16 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("chocolateyInstall.ps1")) errorFound = true; - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("chocolateyInstall.ps1"))); } } @@ -1479,56 +1305,39 @@ public void Should_install_the_expected_version_of_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_installed_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("3/3")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("3/3")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - foreach (var packageResult in Results) - { - packageResult.Value.Version.Should().Be("1.0.0"); - } + Results.Should().AllSatisfy(r => r.Value.Version.Should().Be("1.0.0")); } } @@ -1575,7 +1384,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -1593,56 +1402,39 @@ public void Should_not_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_it_installed_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_a_version_of_one_dot_zero_dot_zero() { - foreach (var packageResult in Results) - { - packageResult.Value.Version.Should().Be("1.0.0"); - } + Results.Should().AllSatisfy(r => r.Value.Version.Should().Be("1.0.0")); } } @@ -1696,7 +1488,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -1723,7 +1515,7 @@ public void Should_reinstall_the_floating_dependency_with_the_latest_version_tha var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -1733,47 +1525,33 @@ public void Should_reinstall_the_exact_same_version_of_the_exact_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("3/3")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("3/3")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -1821,7 +1599,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -1839,7 +1617,7 @@ public void Should_not_touch_the_floating_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -1849,47 +1627,33 @@ public void Should_not_touch_the_exact_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -1938,7 +1702,7 @@ public void Should_reinstall_the_exact_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -1959,40 +1723,26 @@ public void Should_remove_the_exact_dependency() [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -2029,78 +1779,42 @@ public void Should_not_install_the_dependency_in_the_lib_directory() [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_install_any_packages() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] public void Should_not_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeFalse()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - - foreach (var packageResult in Results) - { - foreach (var message in packageResult.Value.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => m.MessageType == ResultType.Error)); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - - foreach (var packageResult in Results) - { - foreach (var message in packageResult.Value.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("Unable to resolve dependency 'isdependency")) errorFound = true; - } - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("Unable to resolve dependency 'isdependency"))); } } @@ -2142,7 +1856,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.1.0"); } } @@ -2157,13 +1871,8 @@ public void Should_not_install_the_dependency_in_the_lib_directory() [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -2232,7 +1941,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.6.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.6.0"); } } @@ -2250,47 +1959,33 @@ public void Should_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("3/3")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("3/3")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -2322,40 +2017,26 @@ public void Should_not_install_the_package_in_the_lib_directory() [Fact] public void Should_contain_a_message_that_is_was_unable_to_install_any_packages() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] public void Should_not_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeFalse()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -2400,47 +2081,33 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.6.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.6.0"); } } [Fact] public void Should_contain_a_message_that_it_installed_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -2477,85 +2144,49 @@ public void Should_not_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_install_any_packages() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] public void Should_not_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeFalse()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - - foreach (var packageResult in Results) - { - foreach (var message in packageResult.Value.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => m.MessageType == ResultType.Error)); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - - foreach (var packageResult in Results) - { - foreach (var message in packageResult.Value.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("Unable to resolve dependency 'isdependency")) errorFound = true; - } - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("Unable to resolve dependency 'isdependency"))); } } @@ -2601,47 +2232,33 @@ public void Should_upgrade_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.1"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.1"); } } [Fact] public void Should_contain_a_message_that_it_installed_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("installed 2/2")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installed 2/2")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -2687,7 +2304,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -2697,66 +2314,40 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_it_was_unable_to_install_any_packages() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("installed 0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installed 0/1")); } [Fact] public void Should_not_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeFalse()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - - foreach (var packageResult in Results) - { - foreach (var message in packageResult.Value.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => m.MessageType == ResultType.Error)); } } @@ -2799,66 +2390,40 @@ public void Should_not_downgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_message_that_it_was_unable_to_install_any_packages() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("installed 0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installed 0/1")); } [Fact] public void Should_not_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeFalse()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - - foreach (var packageResult in Results) - { - foreach (var message in packageResult.Value.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => m.MessageType == ResultType.Error)); } } @@ -2916,7 +2481,7 @@ public void Should_install_the_expected_version_of_the_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "childdependencywithlooserversiondependency", "childdependencywithlooserversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -2926,47 +2491,33 @@ public void Should_install_the_expected_version_of_the_constrained_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_installed_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("3/3")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("3/3")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -3323,20 +2874,15 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -3398,13 +2944,14 @@ public override void Because() [Fact] public void Should_have_no_sources_enabled_result() { - MockLogger.ContainsMessage("Installation was NOT successful. There are no sources enabled for", LogLevel.Error).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Installation was NOT successful. There are no sources enabled for")); } [Fact] public void Should_not_install_any_packages() { - Results.Count().Should().Be(0); + Results.Should().BeEmpty(); } } @@ -3439,7 +2986,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3473,13 +3020,8 @@ public void Should_install_hook_scripts_to_folder() [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -3552,7 +3094,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3624,15 +3166,9 @@ public void Should_have_a_console_shim_that_is_set_for_non_gui_access() stdErrAction: (s, e) => messages.Add(e.Data) ); - var messageFound = false; - - foreach (var message in messages.OrEmpty()) - { - if (string.IsNullOrWhiteSpace(message)) continue; - if (message.Contains("is gui? False")) messageFound = true; - } - - messageFound.Should().BeTrue("GUI false message not found"); + messages.Should() + .NotBeNullOrEmpty() + .And.Contain(m => m.Contains("is gui? False"), "GUI false message not found"); } [Fact] @@ -3651,27 +3187,16 @@ public void Should_have_a_graphical_shim_that_is_set_for_gui_access() stdErrAction: (s, e) => messages.Add(e.Data) ); - var messageFound = false; - - foreach (var message in messages.OrEmpty()) - { - if (string.IsNullOrWhiteSpace(message)) continue; - if (message.Contains("is gui? True")) messageFound = true; - } - - messageFound.Should().BeTrue("GUI true message not found"); + messages.Should() + .NotBeNullOrEmpty() + .And.Contain(m => m.Contains("is gui? True"), "GUI true message not found"); } [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -3709,7 +3234,8 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - MockLogger.ContainsMessage("installpackage v1.0.0 has been installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage v1.0.0 has been installed")); } [Fact] @@ -3717,7 +3243,8 @@ public void Should_have_executed_chocolateyInstall_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_all_hook_script() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-install-all.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -3725,7 +3252,8 @@ public void Should_have_executed_pre_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_all_hook_script() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-install-all.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -3733,7 +3261,8 @@ public void Should_have_executed_post_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_installpackage_hook_script() { - MockLogger.ContainsMessage("pre-install-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-install-installpackage.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -3741,7 +3270,8 @@ public void Should_have_executed_pre_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_installpackage_hook_script() { - MockLogger.ContainsMessage("post-install-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-install-installpackage.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -3749,7 +3279,8 @@ public void Should_have_executed_post_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_uninstall_hook_script() { - MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("post-uninstall-all.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -3757,7 +3288,8 @@ public void Should_not_have_executed_uninstall_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_upgradepackage_hook_script() { - MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-install-upgradepackage.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -3765,7 +3297,8 @@ public void Should_not_have_executed_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_beforemodify_hook_script() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for installpackage 1.0.0")); } } @@ -3808,7 +3341,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3880,15 +3413,9 @@ public void Should_have_a_console_shim_that_is_set_for_non_gui_access() stdErrAction: (s, e) => messages.Add(e.Data) ); - var messageFound = false; - - foreach (var message in messages.OrEmpty()) - { - if (string.IsNullOrWhiteSpace(message)) continue; - if (message.Contains("is gui? False")) messageFound = true; - } - - messageFound.Should().BeTrue("GUI false message not found"); + messages.Should() + .NotBeNullOrEmpty() + .And.Contain(m => m.Contains("is gui? False"), "GUI false message not found"); } [Fact] @@ -3907,27 +3434,16 @@ public void Should_have_a_graphical_shim_that_is_set_for_gui_access() stdErrAction: (s, e) => messages.Add(e.Data) ); - var messageFound = false; - - foreach (var message in messages.OrEmpty()) - { - if (string.IsNullOrWhiteSpace(message)) continue; - if (message.Contains("is gui? True")) messageFound = true; - } - - messageFound.Should().BeTrue("GUI true message not found"); + messages.Should() + .NotBeNullOrEmpty() + .And.Contain(m => m.Contains("is gui? True"), "GUI true message not found"); } [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -3965,7 +3481,8 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_not_have_executed_chocolateyInstall_script() { - MockLogger.ContainsMessage("portablepackage v1.0.0 has been installed", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("portablepackage v1.0.0 has been installed")); } [Fact] @@ -3973,7 +3490,8 @@ public void Should_not_have_executed_chocolateyInstall_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_all_hook_script() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-install-all.ps1 hook ran for portablepackage 1.0.0")); } [Fact] @@ -3981,7 +3499,8 @@ public void Should_have_executed_pre_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_all_hook_script() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-install-all.ps1 hook ran for portablepackage 1.0.0")); } [Fact] @@ -3989,7 +3508,8 @@ public void Should_have_executed_post_all_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_uninstall_hook_script() { - MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("post-uninstall-all.ps1 hook ran for portablepackage 1.0.0")); } [Fact] @@ -3997,7 +3517,8 @@ public void Should_not_have_executed_uninstall_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_upgradepackage_hook_script() { - MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-install-upgradepackage.ps1 hook ran for portablepackage 1.0.0")); } [Fact] @@ -4005,7 +3526,8 @@ public void Should_not_have_executed_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_beforemodify_hook_script() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for portablepackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for portablepackage 1.0.0")); } } @@ -4074,13 +3596,8 @@ public void Should_not_create_an_hooks_folder_for_the_package() [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -4118,7 +3635,8 @@ public void Should_have_a_version_of_two_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_reported_package_installed() { - MockLogger.ContainsMessage("isdependency 2.0.0 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("isdependency 2.0.0 Installed")); } } @@ -4142,10 +3660,7 @@ public override void Because() [Fact] public void Should_not_report_success() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeFalse()); } [Fact] @@ -4159,30 +3674,22 @@ public void Should_not_install_a_package_in_the_lib_directory() [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_report_package_not_found() { - foreach (var packageResult in Results) - { - var message = packageResult.Value.Messages.First(); - message.MessageType.Should().Be(ResultType.Error); - message.Message.Should().StartWith("non-existing not installed. The package was not found with the source(s) listed."); - } + Results.Should().AllSatisfy(r => r.Value.Messages.First().MessageType.Should().Be(ResultType.Error)) + .And.AllSatisfy(p => + p.Value.Messages.First().Message.Should() + .StartWith("non-existing not installed. The package was not found with the source(s) listed.")); } } @@ -4229,10 +3736,7 @@ public void Should_install_a_package_in_the_lib_directory() [Fact] public void Should_install_lower_version_of_package() { - foreach (var packageResult in Results) - { - packageResult.Value.Version.Should().Be("1.0.0"); - } + Results.Should().AllSatisfy(r => r.Value.Version.Should().Be("1.0.0")); } [Fact] @@ -4251,28 +3755,19 @@ public void Should_have_installed_expected_version_in_lib_directory() [Fact] public void Should_not_have_inconclusive_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_success_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } } @@ -4327,37 +3822,25 @@ public void Should_have_installed_expected_version_in_lib_directory() [Fact] public void Should_install_lower_version_of_package() { - foreach (var packageResult in Results) - { - packageResult.Value.Version.Should().Be("1.0.0"); - } + Results.Should().AllSatisfy(r => r.Value.Version.Should().Be("1.0.0")); } [Fact] public void Should_not_have_inconclusive_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_success_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } } @@ -4441,28 +3924,19 @@ public void Should_report_installed_version_of_package(string name, string versi [Fact] public void Should_not_have_inconclusive_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_success_package_results() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } } @@ -4510,7 +3984,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -4533,13 +4007,8 @@ public void Should_not_create_an_hooks_folder_for_the_package() [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -4577,7 +4046,8 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - MockLogger.ContainsMessage("UpperCase 1.0.0 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("UpperCase 1.0.0 Installed")); } } @@ -4618,7 +4088,7 @@ public void Should_install_the_expected_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -4641,24 +4111,15 @@ public void Should_not_create_an_hooks_folder_for_the_package() [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] public void Should_contain_a_warning_message_about_unsupported_elements() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("Issues found with nuspec elements")) upgradeMessage = true; - } - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Issues found with nuspec elements")); } [Fact] @@ -4696,7 +4157,8 @@ public void Should_have_a_version_of_one_dot_zero_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - MockLogger.ContainsMessage("unsupportedelements 1.0.0 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("unsupportedelements 1.0.0 Installed")); } } @@ -4763,13 +4225,8 @@ public void Should_not_create_an_hooks_folder_for_the_package() [Fact] public void Should_contain_a_warning_message_that_it_installed_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -4799,7 +4256,7 @@ public void Config_should_match_package_result_name() [Fact] public void Result_should_have_the_correct_version() { - _packageResult.Version.Should().Be(NonNormalizedVersion); + _packageResult.Version.Should().Be(NormalizedVersion); } [Fact] @@ -4807,9 +4264,10 @@ public void Result_should_have_the_correct_version() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script() { - var message = "installpackage v{0} has been installed".FormatWith(NonNormalizedVersion); + var message = "installpackage v{0} has been installed".FormatWith(NormalizedVersion); - MockLogger.ContainsMessage(message, LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(message)); } [Fact] @@ -4864,15 +4322,9 @@ public void Should_have_a_console_shim_that_is_set_for_non_gui_access() stdErrAction: (s, e) => messages.Add(e.Data) ); - var messageFound = false; - - foreach (var message in messages.OrEmpty()) - { - if (string.IsNullOrWhiteSpace(message)) continue; - if (message.Contains("is gui? False")) messageFound = true; - } - - messageFound.Should().BeTrue("GUI false message not found"); + messages.Should() + .NotBeNullOrEmpty() + .And.Contain(m => m.Contains("is gui? False"), "GUI false message not found"); } [Fact] @@ -4891,15 +4343,9 @@ public void Should_have_a_graphical_shim_that_is_set_for_gui_access() stdErrAction: (s, e) => messages.Add(e.Data) ); - var messageFound = false; - - foreach (var message in messages.OrEmpty()) - { - if (string.IsNullOrWhiteSpace(message)) continue; - if (message.Contains("is gui? True")) messageFound = true; - } - - messageFound.Should().BeTrue("GUI true message not found"); + messages.Should() + .NotBeNullOrEmpty() + .And.Contain(m => m.Contains("is gui? True"), "GUI true message not found"); } } @@ -4984,7 +4430,7 @@ public void Should_install_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", TargetPackageName, "{0}.nupkg".FormatWith(TargetPackageName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } @@ -4994,14 +4440,15 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", DependencyName, "{0}.nupkg".FormatWith(DependencyName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_installed_successfully() { - MockLogger.ContainsMessage("installed 2/2", LogLevel.Warn).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installed 2/2")); } [Fact] @@ -5009,7 +4456,8 @@ public void Should_contain_a_message_that_everything_installed_successfully() [Platform(Exclude = "Mono")] public void Should_not_run_target_package_beforeModify_for_upgraded_version() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "2.0.0"))); } [Fact] @@ -5017,7 +4465,8 @@ public void Should_not_run_target_package_beforeModify_for_upgraded_version() [Platform(Exclude = "Mono")] public void Should_run_already_installed_dependency_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"))); } [Fact] @@ -5025,34 +4474,26 @@ public void Should_run_already_installed_dependency_package_beforeModify() [Platform(Exclude = "Mono")] public void Should_not_run_dependency_package_beforeModify_for_upgraded_version() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "2.0.0"))); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } } diff --git a/src/chocolatey.tests.integration/scenarios/ListScenarios.cs b/src/chocolatey.tests.integration/scenarios/ListScenarios.cs index d0a838c3e..4398502ac 100644 --- a/src/chocolatey.tests.integration/scenarios/ListScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/ListScenarios.cs @@ -22,6 +22,7 @@ namespace chocolatey.tests.integration.scenarios using chocolatey.infrastructure.results; using NuGet.Configuration; using FluentAssertions; + using FluentAssertions.Execution; public class ListScenarios { @@ -80,10 +81,14 @@ public void Should_contain_a_summary() [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Searching for package information")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Running list with the following filter")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Start of List")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("End of List")); } } @@ -138,8 +143,9 @@ public void Should_contain_packages_and_versions_with_a_pipe_between_them() [Fact] public void Should_only_have_messages_related_to_package_information() { - var count = MockLogger.MessagesFor(LogLevel.Info).OrEmpty().Count(); - count.Should().Be(2); + MockLogger.Messages.Should() + .ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().HaveCount(2); } [Fact] @@ -157,10 +163,7 @@ public void Should_not_contain_a_summary() [Fact] public void Should_not_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeFalse(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeFalse(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeFalse(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeFalse(); + MockLogger.Messages.Should().NotContainKey(LogLevel.Debug.ToStringSafe()); } } @@ -241,10 +244,17 @@ public void Should_contain_a_summary() [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); + using (new AssertionScope()) + { + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Searching for package information")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Running list with the following filter")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Start of List")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("End of List")); + } } } } diff --git a/src/chocolatey.tests.integration/scenarios/PackScenarios.cs b/src/chocolatey.tests.integration/scenarios/PackScenarios.cs index 0eb37f7c9..c79b3b720 100644 --- a/src/chocolatey.tests.integration/scenarios/PackScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/PackScenarios.cs @@ -29,6 +29,7 @@ namespace chocolatey.tests.integration.scenarios using NUnit.Framework; using FluentAssertions; + using FluentAssertions.Execution; public class PackScenarios { @@ -154,9 +155,13 @@ public override void AfterObservations() public void Generated_package_should_be_in_current_directory() { var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.Should().Be(2); - infos[0].Should().Be("Attempting to build package from 'myPackage.nuspec'."); - infos[1].Should().Be(string.Concat("Successfully created package '", PackagePath, "'")); + + using (new AssertionScope()) + { + infos.Should().HaveCount(2); + infos.Should().HaveElementAt(0, "Attempting to build package from 'myPackage.nuspec'."); + infos.Should().HaveElementAt(1, string.Concat("Successfully created package '", PackagePath, "'")); + } FileAssert.Exists(PackagePath); } @@ -426,9 +431,13 @@ public override void Because() public void Property_settings_should_be_logged_as_debug_messages() { var messages = MockLogger.MessagesFor(LogLevel.Debug); - messages.Count.Should().Be(2); - messages.Should().ContainEquivalentOf("Setting property 'commitId': 1234abcd"); - messages.Should().ContainEquivalentOf("Setting property 'version': 0.1.0"); + + using (new AssertionScope()) + { + messages.Should().HaveCount(2); + messages.Should().ContainEquivalentOf("Setting property 'commitId': 1234abcd"); + messages.Should().ContainEquivalentOf("Setting property 'version': 0.1.0"); + } } } diff --git a/src/chocolatey.tests.integration/scenarios/PinScenarios.cs b/src/chocolatey.tests.integration/scenarios/PinScenarios.cs index d7d910d12..51ac7baa0 100644 --- a/src/chocolatey.tests.integration/scenarios/PinScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/PinScenarios.cs @@ -31,6 +31,7 @@ namespace chocolatey.tests.integration.scenarios using NuGet.Configuration; using FluentAssertions; + using Moq; public class PinScenarios { @@ -83,9 +84,9 @@ public override void Because() [Fact] public void Should_not_contain_list_results() { - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).Should().BeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).Should().BeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).Should().BeFalse(); + MockLogger.Messages.Should() + .NotContainKeys(new string[] + { LogLevel.Info.ToStringSafe(), LogLevel.Warn.ToStringSafe(), LogLevel.Error.ToStringSafe() }); } [Fact] @@ -115,9 +116,11 @@ public override void Because() [Fact] public void Should_not_contain_list_results() { - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).Should().BeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).Should().BeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.0.0")); + MockLogger.Messages.Should() + .NotContainKeys(new string[] + { LogLevel.Warn.ToStringSafe(), LogLevel.Error.ToStringSafe() }); } [Fact] @@ -149,9 +152,11 @@ public override void Because() [Fact] public void Should_not_contain_list_results() { - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Info).Should().BeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Warn).Should().BeFalse(); - MockLogger.ContainsMessage("upgradepackage 1.0.0", LogLevel.Error).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.0.0")); + MockLogger.Messages.Should() + .NotContainKeys(new string[] + { LogLevel.Warn.ToStringSafe(), LogLevel.Error.ToStringSafe() }); } [Fact] diff --git a/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs b/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs index 8f435677e..4ca26e3f2 100644 --- a/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs @@ -74,7 +74,7 @@ public override void Because() [Fact] public void Should_only_pick_up_package_from_highest_priority() { - Results.Count.Should().Be(1); + Results.Should().ContainSingle(); Results[0].Name.Should().Be("upgradepackage"); Results[0].Version.Should().Be("1.0.0"); } @@ -111,7 +111,7 @@ public override void Because() [Fact] public void Should_only_pick_up_package_from_highest_priority() { - Results.Count.Should().Be(2); + Results.Should().HaveCount(2); Results[0].Name.Should().Be("upgradepackage"); Results[0].Version.Should().Be("1.1.1-beta"); Results[1].Name.Should().Be("upgradepackage"); @@ -151,7 +151,7 @@ public override void Because() [Fact] public void Should_pick_up_packages_from_all_feeds_except_those_with_same_name() { - Results.Count.Should().Be(4); + Results.Should().HaveCount(4); Results[0].Name.Should().Be("conflictingdependency"); Results[0].Version.Should().Be("2.0.0"); Results[1].Name.Should().Be("hasdependency"); @@ -200,10 +200,14 @@ public void Should_contain_a_summary() [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Searching for package information")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Running list with the following filter")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Start of List")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("End of List")); } } @@ -242,10 +246,14 @@ public void Should_contain_a_summary() [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Searching for package information")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Running list with the following filter")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Start of List")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("End of List")); } } @@ -291,10 +299,14 @@ public void Should_contain_a_summary() [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Searching for package information")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Running list with the following filter")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Start of List")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("End of List")); } } @@ -351,10 +363,14 @@ public void Should_contain_a_summary() [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Searching for package information")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Running list with the following filter")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Start of List")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("End of List")); } } @@ -375,13 +391,14 @@ public override void Because() [Fact] public void Should_have_no_sources_enabled_result() { - MockLogger.ContainsMessage("Unable to search for packages when there are no sources enabled for", LogLevel.Error).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Unable to search for packages when there are no sources enabled for")); } [Fact] public void Should_not_list_any_packages() { - Results.Count().Should().Be(0); + Results.Should().BeEmpty(); } } @@ -413,7 +430,7 @@ public void Should_not_error() [Fact] public void Should_find_exactly_one_result() { - Results.Count.Should().Be(1); + Results.Should().ContainSingle(); } [Fact] @@ -437,10 +454,14 @@ public void Should_contain_a_summary() [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Searching for package information")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Running list with the following filter")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Start of List")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("End of List")); } } @@ -474,7 +495,7 @@ public void Should_not_error() [Fact] public void Should_not_have_any_results() { - Results.Count.Should().Be(0); + Results.Should().BeEmpty(); } [Fact] @@ -492,10 +513,14 @@ public void Should_contain_a_summary() [Fact] public void Should_contain_debugging_messages() { - MockLogger.ContainsMessage("Searching for package information", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Running list with the following filter", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("Start of List", LogLevel.Debug).Should().BeTrue(); - MockLogger.ContainsMessage("End of List", LogLevel.Debug).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Searching for package information")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Running list with the following filter")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Start of List")); + MockLogger.Messages.Should().ContainKey(LogLevel.Debug.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("End of List")); } } @@ -528,7 +553,7 @@ public void Should_not_error() [Fact] public void Should_find_two_results() { - Results.Count.Should().Be(2); + Results.Should().HaveCount(2); } [Fact] @@ -576,7 +601,7 @@ public void Should_not_error() [Fact] public void Should_find_three_results() { - Results.Count.Should().Be(3); + Results.Should().HaveCount(3); } [Fact] diff --git a/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs b/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs index 3a36ba084..b010756ee 100644 --- a/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs @@ -83,13 +83,8 @@ public void Should_not_uninstall_a_package_from_the_lib_directory() [Fact] public void Should_contain_a_message_that_it_would_have_uninstalled_a_package() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("Would have uninstalled installpackage v1.0.0")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Would have uninstalled installpackage v1.0.0")); } [Fact] @@ -126,13 +121,8 @@ public override void Because() [Fact] public void Should_contain_a_message_that_it_was_unable_to_find_package() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Error).OrEmpty()) - { - if (message.Contains("somethingnonexisting is not installed. Cannot uninstall a non-existent package")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("somethingnonexisting is not installed. Cannot uninstall a non-existent package")); } } @@ -193,13 +183,8 @@ public void Should_delete_any_files_created_during_the_install() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -231,7 +216,8 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("installpackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage 1.0.0 Before Modification")); } [Fact] @@ -239,7 +225,8 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("installpackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage 1.0.0 Uninstalled")); } } @@ -294,13 +281,8 @@ public void Should_delete_a_shim_for_graphical_in_the_bin_directory() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -389,13 +371,8 @@ public void Should_delete_the_rollback() [Fact] public void Should_contain_a_message_that_it_uninstalled_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("uninstalled 1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("uninstalled 1/1")); } [Fact] @@ -476,13 +453,8 @@ public void Should_not_have_deleted_the_rollback_on_server() [Fact] public void Should_contain_a_message_that_it_uninstalled_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("uninstalled 1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("uninstalled 1/1")); } [Fact] @@ -567,29 +539,15 @@ public void Should_keep_locked_file_in_directory() [Fact] public void Should_contain_a_message_about_not_all_files_are_removed() { - bool expectedMessage = false; - - foreach (var message in MockLogger.MessagesFor(LogLevel.Error).OrEmpty()) - { - if (message.Contains("Unable to delete all existing package files. There will be leftover files requiring manual cleanup")) - { - expectedMessage = true; - } - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Unable to delete all existing package files. There will be leftover files requiring manual cleanup")); } [Fact] public void Should_contain_a_message_that_it_was_not_able_to_uninstall() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("uninstalled 0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("uninstalled 0/1")); } [Fact] @@ -678,13 +636,8 @@ public void Should_delete_a_shim_for_graphical_in_the_bin_directory() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -779,13 +732,8 @@ public void Should_delete_a_shim_for_graphical_in_the_bin_directory() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -888,13 +836,8 @@ public void Should_delete_a_shim_for_graphical_in_the_bin_directory() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -941,25 +884,15 @@ public override void Because() [Fact] public void Should_contain_a_message_that_it_was_unable_to_find_package() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Error).OrEmpty()) - { - if (message.Contains("somethingnonexisting is not installed. Cannot uninstall a non-existent package")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("somethingnonexisting is not installed. Cannot uninstall a non-existent package")); } [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -983,16 +916,7 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } } @@ -1048,13 +972,8 @@ public void Should_delete_the_rollback() [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_install_a_package() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -1078,31 +997,16 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - foreach (var message in packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("chocolateyUninstall.ps1")) errorFound = true; - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("chocolateyUninstall.ps1"))); } } @@ -1144,13 +1048,8 @@ public void Should_delete_the_rollback() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -1250,13 +1149,8 @@ public void Should_delete_any_files_created_during_the_install() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -1288,7 +1182,8 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("installpackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage 1.0.0 Before Modification")); } [Fact] @@ -1296,7 +1191,8 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("installpackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage 1.0.0 Uninstalled")); } [Fact] @@ -1304,7 +1200,8 @@ public void Should_have_executed_chocolateyUninstall_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_all_hook_script() { - MockLogger.ContainsMessage("pre-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-uninstall-all.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -1312,7 +1209,8 @@ public void Should_have_executed_pre_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_all_hook_script() { - MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-uninstall-all.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -1320,7 +1218,8 @@ public void Should_have_executed_post_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_installpackage_hook_script() { - MockLogger.ContainsMessage("pre-uninstall-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-uninstall-installpackage.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -1328,7 +1227,8 @@ public void Should_have_executed_pre_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_installpackage_hook_script() { - MockLogger.ContainsMessage("post-uninstall-installpackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-uninstall-installpackage.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -1336,7 +1236,8 @@ public void Should_have_executed_post_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_upgradepackage_hook_script() { - MockLogger.ContainsMessage("pre-uninstall-upgradepackage.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-uninstall-upgradepackage.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -1344,7 +1245,8 @@ public void Should_not_have_executed_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_beforemodify_hook_script() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for installpackage 1.0.0")); } [Fact] @@ -1352,7 +1254,8 @@ public void Should_have_executed_pre_beforemodify_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_beforemodify_hook_script() { - MockLogger.ContainsMessage("post-beforemodify-all.ps1 hook ran for installpackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-beforemodify-all.ps1 hook ran for installpackage 1.0.0")); } } @@ -1394,13 +1297,8 @@ public void Should_delete_the_rollback() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -1432,7 +1330,8 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("UpperCase 1.1.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("UpperCase 1.1.0 Before Modification")); } [Fact] @@ -1440,7 +1339,8 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("UpperCase 1.1.0 Uninstalled", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("UpperCase 1.1.0 Uninstalled")); } } @@ -1449,6 +1349,7 @@ public class When_uninstalling_a_package_with_non_normalized_version : Scenarios private PackageResult packageResult; private string NonNormalizedVersion = "0004.0004.00005.00"; + private string NormalizedVersion = "4.4.5"; public override void Context() { @@ -1512,13 +1413,8 @@ public void Should_delete_any_files_created_during_the_install() [Fact] public void Should_contain_a_warning_message_that_it_uninstalled_successfully() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("1/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("1/1")); } [Fact] @@ -1550,7 +1446,8 @@ public void Config_should_match_package_result_name() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script() { - MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NonNormalizedVersion), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage {0} Before Modification".FormatWith(NormalizedVersion))); } [Fact] @@ -1558,7 +1455,8 @@ public void Should_have_executed_chocolateyBeforeModify_script() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyUninstall_script() { - MockLogger.ContainsMessage("upgradepackage {0} Uninstalled".FormatWith(NonNormalizedVersion), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage {0} Uninstalled".FormatWith(NormalizedVersion))); } } @@ -1589,20 +1487,21 @@ public override void Because() public void Should_uninstall_the_package() { var packageFile = Path.Combine(Scenario.get_top_level(), "lib", TargetPackageName, "{0}.nupkg".FormatWith(TargetPackageName)); - File.Exists(packageFile).Should().BeFalse(); + FileAssert.DoesNotExist(packageFile); } [Fact] public void Should_uninstall_the_dependency() { var packageFile = Path.Combine(Scenario.get_top_level(), "lib", DependencyName, "{0}.nupkg".FormatWith(DependencyName)); - File.Exists(packageFile).Should().BeFalse(); + FileAssert.DoesNotExist(packageFile); } [Fact] public void Should_contain_a_message_that_everything_uninstalled_successfully() { - MockLogger.ContainsMessage("uninstalled 2/2", LogLevel.Warn).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("uninstalled 2/2")); } [Fact] @@ -1610,7 +1509,8 @@ public void Should_contain_a_message_that_everything_uninstalled_successfully() [Platform(Exclude = "Mono")] public void Should_run_target_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "1.0.0"))); } [Fact] @@ -1618,34 +1518,26 @@ public void Should_run_target_package_beforeModify() [Platform(Exclude = "Mono")] public void Should_run_dependency_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"))); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } diff --git a/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs b/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs index e4591a0f3..ead522283 100644 --- a/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs @@ -86,25 +86,15 @@ public void Should_contain_older_version_in_directory() [Fact] public void Should_contain_a_message_that_a_new_version_is_available() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source(s)")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source(s)")); } [Fact] public void Should_contain_a_message_that_a_package_can_be_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("can upgrade 1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("can upgrade 1/1")); } [Fact] @@ -133,25 +123,15 @@ public override void Because() [Fact] public void Should_contain_a_message_that_you_have_the_latest_version_available() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")); } [Fact] public void Should_contain_a_message_that_no_packages_can_be_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("can upgrade 0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("can upgrade 0/1")); } [Fact] @@ -180,25 +160,15 @@ public override void Because() [Fact] public void Should_contain_a_message_the_package_was_not_found() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Error).OrEmpty()) - { - if (message.Contains("nonexistentpackage not installed. The package was not found with the source(s) listed")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("nonexistentpackage not installed. The package was not found with the source(s) listed")); } [Fact] public void Should_contain_a_message_that_no_packages_can_be_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("can upgrade 0/0")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("can upgrade 0/0")); } } @@ -248,32 +218,22 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")); } [Fact] @@ -314,7 +274,8 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.0.0 Before Modification")); } [Fact] @@ -324,20 +285,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) - .Any(p => p.EndsWith("upgradepackage 1.1.0 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("upgradepackage 1.1.0 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.0.0 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.0 Before Modification")); } [Fact] @@ -345,7 +307,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.0 Installed")); } } @@ -372,25 +335,15 @@ public override void Because() [Fact] public void Should_contain_a_message_that_you_have_the_latest_version_available() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("upgradepackage v1.0.0 is the latest version available based on your source(s)")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage v1.0.0 is the latest version available based on your source(s)")); } [Fact] public void Should_contain_a_message_that_no_packages_were_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1 ")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1 ")); } [Fact] @@ -464,25 +417,15 @@ public override void Because() [Fact] public void Should_contain_a_message_that_you_have_the_latest_version_available() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("upgradepackage v1.1.0 is the latest version available based on your source(s)")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage v1.1.0 is the latest version available based on your source(s)")); } [Fact] public void Should_contain_a_message_that_no_packages_were_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1 ")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1 ")); } [Fact] @@ -507,7 +450,7 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } @@ -598,25 +541,15 @@ public void Should_upgrade_the_package() [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta2 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta2 is available based on your source")); } [Fact] @@ -657,7 +590,8 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.0.0 Before Modification")); } [Fact] @@ -667,20 +601,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) - .Any(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.0.0 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.1-beta2 Before Modification")); } [Fact] @@ -688,7 +623,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.1-beta2 Installed")); } } @@ -756,25 +692,15 @@ public void Should_upgrade_the_package() [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta.1 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta.1 is available based on your source")); } [Fact] @@ -815,7 +741,8 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.0.0 Before Modification")); } [Fact] @@ -825,20 +752,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) - .Any(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.0.0 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.1-beta.1 Before Modification")); } [Fact] @@ -846,7 +774,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.1-beta.1 Installed")); } } @@ -908,32 +837,22 @@ public void Should_upgrade_the_package() version.Version.ToStringSafe().Should().Be("1.1.1.0"); version.OriginalVersion.ToStringSafe().Should().Be("1.1.1-beta2"); - version.ToStringSafe().Should().Be("1.1.1-beta2"); + version.ToNormalizedStringChecked().Should().Be("1.1.1-beta2"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.1.1-beta installed. Version 1.1.1-beta2 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.1.1-beta installed. Version 1.1.1-beta2 is available based on your source")); } [Fact] @@ -971,7 +890,8 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.1-beta Before Modification")); } [Fact] @@ -981,20 +901,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.1.1-beta Before Modification")) - .Any(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.1-beta Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.1-beta2 Before Modification")); } [Fact] @@ -1002,7 +923,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.1-beta2 Installed")); } } @@ -1066,32 +988,22 @@ public void Should_upgrade_the_package() version.Version.ToStringSafe().Should().Be("1.1.1.0"); version.OriginalVersion.ToStringSafe().Should().Be("1.1.1-beta.1"); - version.ToStringSafe().Should().Be("1.1.1-beta.1"); + version.ToNormalizedStringChecked().Should().Be("1.1.1-beta.1"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.1.1-beta installed. Version 1.1.1-beta.1 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.1.1-beta installed. Version 1.1.1-beta.1 is available based on your source")); } [Fact] @@ -1129,7 +1041,8 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.1-beta Before Modification")); } [Fact] @@ -1139,20 +1052,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.1.1-beta Before Modification")) - .Any(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.1-beta Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.1-beta.1 Before Modification")); } [Fact] @@ -1160,7 +1074,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.1-beta.1 Installed")); } } @@ -1223,32 +1138,22 @@ public void Should_upgrade_the_package() version.Version.ToStringSafe().Should().Be("1.1.1.0"); version.OriginalVersion.ToStringSafe().Should().Be("1.1.1-beta2"); - version.ToStringSafe().Should().Be("1.1.1-beta2"); + version.ToNormalizedStringChecked().Should().Be("1.1.1-beta2"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.1.1-beta.1 installed. Version 1.1.1-beta2 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.1.1-beta.1 installed. Version 1.1.1-beta2 is available based on your source")); } [Fact] @@ -1286,7 +1191,8 @@ public void Should_match_the_upgrade_version_of_the_new_beta() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.1-beta.1 Before Modification")); } [Fact] @@ -1296,20 +1202,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.1.1-beta.1 Before Modification")) - .Any(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("upgradepackage 1.1.1-beta2 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta.1 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.1-beta.1 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.1-beta2 Before Modification")); } [Fact] @@ -1317,7 +1224,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.1-beta2 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.1-beta2 Installed")); } } @@ -1343,25 +1251,15 @@ public override void Because() [Fact] public void Should_contain_a_message_that_you_have_the_latest_version_available() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("upgradepackage v1.1.1-beta is newer")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage v1.1.1-beta is newer")); } [Fact] public void Should_contain_a_message_that_no_packages_were_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1 ")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1 ")); } [Fact] @@ -1389,7 +1287,7 @@ public void Should_be_the_same_version_of_the_package() var version = packageReader.NuspecReader.GetVersion(); version.Version.ToStringSafe().Should().Be("1.1.1.0"); version.OriginalVersion.Should().Be("1.1.1-beta"); - version.ToStringSafe().Should().Be("1.1.1-beta"); + version.ToNormalizedStringChecked().Should().Be("1.1.1-beta"); } } @@ -1441,25 +1339,15 @@ public override void Because() [Fact] public void Should_contain_a_message_that_you_have_the_latest_version_available() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("upgradepackage v1.1.1-beta is newer")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage v1.1.1-beta is newer")); } [Fact] public void Should_contain_a_message_that_no_packages_were_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1 ")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1 ")); } [Fact] @@ -1487,7 +1375,7 @@ public void Should_be_the_same_version_of_the_package() var version = packageReader.NuspecReader.GetVersion(); version.Version.ToStringSafe().Should().Be("1.1.1.0"); version.OriginalVersion.Should().Be("1.1.1-beta"); - version.ToStringSafe().Should().Be("1.1.1-beta"); + version.ToNormalizedStringChecked().Should().Be("1.1.1-beta"); } } @@ -1552,7 +1440,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } @@ -1575,25 +1463,15 @@ public void Should_contain_newer_version_in_directory() [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")); } [Fact] @@ -1649,25 +1527,15 @@ public override void Because() [Fact] public void Should_contain_a_message_that_you_have_the_latest_version_available() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")); } [Fact] public void Should_contain_a_message_that_no_packages_were_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1 ")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1 ")); } [Fact] @@ -1692,7 +1560,7 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -1741,25 +1609,15 @@ public override void Because() [Fact] public void Should_contain_a_message_that_you_have_the_latest_version_available() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Info).OrEmpty()) - { - if (message.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("installpackage v1.0.0 is the latest version available based on your source(s)")); } [Fact] public void Should_contain_a_message_that_the_package_was_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] @@ -1784,7 +1642,7 @@ public void Should_be_the_same_version_of_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -1875,7 +1733,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } @@ -1898,25 +1756,15 @@ public void Should_contain_newer_version_in_directory() [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")); } [Fact] @@ -1989,7 +1837,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } @@ -2024,25 +1872,15 @@ public void Should_contain_newer_version_in_directory() [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")); } [Fact] @@ -2125,32 +1963,22 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_was_not_able_to_upgrade() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")); } [Fact] @@ -2211,20 +2039,15 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] @@ -2294,20 +2117,15 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] @@ -2365,25 +2183,15 @@ public void Should_not_install_a_package_in_the_lib_directory() [Fact] public void Should_contain_a_message_the_package_was_not_found() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Error).OrEmpty()) - { - if (message.Contains("nonexistentpackage not installed. The package was not found with the source(s) listed")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("nonexistentpackage not installed. The package was not found with the source(s) listed")); } [Fact] public void Should_contain_a_message_that_no_packages_were_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1")); } [Fact] @@ -2407,31 +2215,16 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in _packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + _packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - foreach (var message in _packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("The package was not found")) errorFound = true; - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("The package was not found"))); } } @@ -2477,13 +2270,8 @@ public void Should_not_have_a_rollback_directory() [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] @@ -2536,13 +2324,8 @@ public void Should_not_install_a_package_in_the_lib_directory() [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_upgrade_a_package() { - bool notInstalled = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) notInstalled = true; - } - - notInstalled.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -2566,31 +2349,16 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in _packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + _packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - foreach (var message in _packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("Cannot upgrade a non-existent package")) errorFound = true; - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("Cannot upgrade a non-existent package"))); } } @@ -2626,7 +2394,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -2644,7 +2412,7 @@ public void Should_have_the_erroring_upgraded_package_in_the_lib_bad_directory() var packageFile = Path.Combine(Scenario.get_top_level(), "lib-bad", Configuration.PackageNames, "2.0.0", Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } @@ -2659,13 +2427,8 @@ public void Should_delete_the_rollback() [Fact] public void Should_contain_a_warning_message_that_it_was_unable_to_upgrade_a_package() { - bool installedSuccessfully = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("0/1")) installedSuccessfully = true; - } - - installedSuccessfully.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("0/1")); } [Fact] @@ -2689,31 +2452,16 @@ public void Should_not_have_warning_package_result() [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - foreach (var message in _packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - - errorFound.Should().BeTrue(); + _packageResult.Messages.Should().Contain(m => m.MessageType == ResultType.Error); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - foreach (var message in _packageResult.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("chocolateyInstall.ps1")) errorFound = true; - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("chocolateyInstall.ps1"))); } } @@ -2741,7 +2489,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.1.0"); } } @@ -2751,7 +2499,7 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.1.0"); } } @@ -2761,47 +2509,33 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_upgraded_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 3/3")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 3/3")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -2829,7 +2563,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -2839,7 +2573,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -2849,85 +2583,49 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_it_was_unable_to_upgrade_anything() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1")); } [Fact] public void Should_not_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeFalse()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_an_error_package_result() { - bool errorFound = false; - - foreach (var packageResult in Results) - { - foreach (var message in packageResult.Value.Messages) - { - if (message.MessageType == ResultType.Error) - { - errorFound = true; - } - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => m.MessageType == ResultType.Error)); } [Fact] public void Should_have_expected_error_in_package_result() { - bool errorFound = false; - - foreach (var packageResult in Results) - { - foreach (var message in packageResult.Value.Messages) - { - if (message.MessageType == ResultType.Error) - { - if (message.Message.Contains("Unable to resolve dependency 'isexactversiondependency")) errorFound = true; - } - } - } - - errorFound.Should().BeTrue(); + Results.Should().AllSatisfy(r => + r.Value.Messages.Should().Contain(m => + m.MessageType == ResultType.Error && + m.Message.Contains("Unable to resolve dependency 'isexactversiondependency"))); } } @@ -2956,7 +2654,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.1.0"); } } @@ -2966,7 +2664,7 @@ public void Should_not_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -2976,47 +2674,33 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_it_upgraded_only_the_package_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -3044,7 +2728,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } @@ -3054,7 +2738,7 @@ public void Should_not_upgrade_the_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3064,47 +2748,33 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_the_dependency_upgraded_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -3132,7 +2802,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.1.0"); } } @@ -3142,7 +2812,7 @@ public void Should_upgrade_the_parent_package_to_highest_version_that_meets_new_ var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.1.0"); } } @@ -3152,47 +2822,33 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_upgraded_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 3/3")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 3/3")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -3222,7 +2878,7 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.1.0"); } } @@ -3232,7 +2888,7 @@ public void Should_upgrade_the_parent_package_to_highest_version_that_meets_new_ var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.1.0"); } } @@ -3242,47 +2898,33 @@ public void Should_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_upgraded_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 3/3")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 3/3")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } @@ -3312,7 +2954,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } @@ -3322,7 +2964,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3332,63 +2974,42 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_upgraded_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_outputted_conflicting_upgrade_message() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("One or more unresolved package dependency constraints detected in the Chocolatey lib folder") - && message.Contains("hasdependency 1.0.0 constraint: isdependency (>= 1.0.0 && < 2.0.0)")) - { - expectedMessage = true; - } - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => + m.Contains("One or more unresolved package dependency constraints detected in the Chocolatey lib folder") + && m.Contains("hasdependency 1.0.0 constraint: isdependency (>= 1.0.0 && < 2.0.0)")); } } @@ -3420,7 +3041,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } @@ -3430,7 +3051,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3440,64 +3061,43 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_upgraded_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 2/2")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 2/2")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_outputted_conflicting_upgrade_message() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("One or more unresolved package dependency constraints detected in the Chocolatey lib folder") - && message.Contains("hasdependency 1.0.0 constraint: isexactversiondependency (= 1.0.0)") - && message.Contains("hasdependency 1.0.0 constraint: isdependency (>= 1.0.0 && < 2.0.0)")) - { - expectedMessage = true; - } - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => + m.Contains("One or more unresolved package dependency constraints detected in the Chocolatey lib folder") + && m.Contains("hasdependency 1.0.0 constraint: isexactversiondependency (= 1.0.0)") + && m.Contains("hasdependency 1.0.0 constraint: isdependency (>= 1.0.0 && < 2.0.0)")); } } @@ -3529,7 +3129,7 @@ public void Should_upgrade_the_package_to_highest_version_in_range() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } @@ -3539,7 +3139,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3549,63 +3149,42 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_upgraded_successfully() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_outputted_conflicting_upgrade_message() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("One or more unresolved package dependency constraints detected in the Chocolatey lib folder") - && message.Contains("hasdependency 1.0.0 constraint: isdependency (>= 1.0.0 && < 2.0.0)")) - { - expectedMessage = true; - } - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => + m.Contains("One or more unresolved package dependency constraints detected in the Chocolatey lib folder") + && m.Contains("hasdependency 1.0.0 constraint: isdependency (>= 1.0.0 && < 2.0.0)")); } } @@ -3636,7 +3215,7 @@ public void Should_not_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isdependency", "isdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3646,7 +3225,7 @@ public void Should_not_upgrade_parent_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "hasdependency", "hasdependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } @@ -3656,59 +3235,40 @@ public void Should_not_upgrade_the_exact_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", "isexactversiondependency", "isexactversiondependency.nupkg"); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.0.0"); } } [Fact] public void Should_contain_a_message_that_nothing_was_upgraded() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 0/1")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 0/1")); } [Fact] public void Should_have_an_error_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeFalse()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } [Fact] public void Should_have_outputted_expected_error_message() { - bool expectedMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Error).OrEmpty()) - { - if (message.Contains("Unable to resolve dependency chain. This may be caused by a parent package depending on this package, try specifying a specific version to use or don't ignore any dependencies!")) expectedMessage = true; - } - - expectedMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Unable to resolve dependency chain. This may be caused by a parent package depending on this package, try specifying a specific version to use or don't ignore any dependencies!")); } } @@ -3740,20 +3300,15 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] @@ -3843,20 +3398,15 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] @@ -3937,13 +3487,14 @@ public override void Because() [Fact] public void Should_have_no_sources_enabled_result() { - MockLogger.ContainsMessage("Upgrading was NOT successful. There are no sources enabled for", LogLevel.Error).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Error.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Upgrading was NOT successful. There are no sources enabled for")); } [Fact] public void Should_not_have_any_packages_upgraded() { - Results.Count().Should().Be(0); + Results.Should().BeEmpty(); } } @@ -3963,14 +3514,14 @@ public override void Because() [Fact] public void Should_report_for_all_installed_packages() { - Results.Count().Should().Be(3); + Results.Should().HaveCount(3); } [Fact] public void Should_upgrade_packages_with_upgrades() { var upgradePackageResult = Results.Where(x => x.Key == "upgradepackage").ToList(); - upgradePackageResult.Count.Should().Be(1, "upgradepackage must be there once"); + upgradePackageResult.Should().ContainSingle( "upgradepackage must be there once"); upgradePackageResult.First().Value.Version.Should().Be("1.1.0"); } @@ -3978,7 +3529,7 @@ public void Should_upgrade_packages_with_upgrades() public void Should_skip_packages_without_upgrades() { var installPackageResult = Results.Where(x => x.Key == "installpackage").ToList(); - installPackageResult.Count.Should().Be(1, "installpackage must be there once"); + installPackageResult.Should().ContainSingle( "installpackage must be there once"); installPackageResult.First().Value.Version.Should().Be("1.0.0"); } } @@ -4002,14 +3553,14 @@ public override void Because() [Fact] public void Should_report_for_all_installed_packages() { - Results.Count().Should().Be(3); + Results.Should().HaveCount(3); } [Fact] public void Should_upgrade_packages_with_upgrades() { var upgradePackageResult = Results.Where(x => x.Key == "upgradepackage").ToList(); - upgradePackageResult.Count.Should().Be(1, "upgradepackage must be there once"); + upgradePackageResult.Should().ContainSingle( "upgradepackage must be there once"); upgradePackageResult.First().Value.Version.Should().Be("1.1.1-beta2"); } @@ -4022,7 +3573,7 @@ public void Should_upgrade_upgradepackage() var version = packageReader.NuspecReader.GetVersion(); version.Version.ToStringSafe().Should().Be("1.1.1.0"); version.OriginalVersion.Should().Be("1.1.1-beta2"); - version.ToStringSafe().Should().Be("1.1.1-beta2"); + version.ToNormalizedStringChecked().Should().Be("1.1.1-beta2"); } } @@ -4030,7 +3581,7 @@ public void Should_upgrade_upgradepackage() public void Should_skip_packages_without_upgrades() { var installPackageResult = Results.Where(x => x.Key == "installpackage").ToList(); - installPackageResult.Count.Should().Be(1, "installpackage must be there once"); + installPackageResult.Should().ContainSingle( "installpackage must be there once"); installPackageResult.First().Value.Version.Should().Be("1.0.0"); } } @@ -4056,14 +3607,14 @@ public override void Because() [Fact] public void Should_report_for_all_installed_packages() { - Results.Count().Should().Be(3); + Results.Should().HaveCount(3); } [Fact] public void Should_upgrade_packages_with_upgrades() { var upgradePackageResult = Results.Where(x => x.Key == "upgradepackage").ToList(); - upgradePackageResult.Count.Should().Be(1, "upgradepackage must be there once"); + upgradePackageResult.Should().ContainSingle( "upgradepackage must be there once"); // available version will show as last stable upgradePackageResult.First().Value.Version.Should().Be("1.1.0"); } @@ -4077,7 +3628,7 @@ public void Should_not_upgrade_upgradepackage() var version = packageReader.NuspecReader.GetVersion(); version.Version.ToStringSafe().Should().Be("1.1.1.0"); version.OriginalVersion.Should().Be("1.1.1-beta"); - version.ToStringSafe().Should().Be("1.1.1-beta"); + version.ToNormalizedStringChecked().Should().Be("1.1.1-beta"); } } @@ -4085,7 +3636,7 @@ public void Should_not_upgrade_upgradepackage() public void Should_skip_packages_without_upgrades() { var installPackageResult = Results.Where(x => x.Key == "installpackage").ToList(); - installPackageResult.Count.Should().Be(1, "installpackage must be there once"); + installPackageResult.Should().ContainSingle( "installpackage must be there once"); installPackageResult.First().Value.Version.Should().Be("1.0.0"); } } @@ -4112,7 +3663,7 @@ public override void Because() [Fact] public void Should_have_a_single_package_result() { - Results.Count.Should().Be(1, "The returned package results do not have a single value!"); + Results.Should().ContainSingle( "The returned package results do not have a single value!"); } [Fact] @@ -4153,32 +3704,22 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.1-beta.1"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.1-beta.1"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta.1 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.1-beta.1 is available based on your source")); } [Fact] @@ -4219,7 +3760,8 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.0.0 Before Modification")); } [Fact] @@ -4229,20 +3771,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) - .Any(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("upgradepackage 1.1.1-beta.1 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.0.0 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.0 Before Modification")); } [Fact] @@ -4252,7 +3795,8 @@ public void Should_have_executed_chocolateyInstall_script_for_new_package() { const string expectedMessage = "upgradepackage 1.1.1-beta.1 Installed"; - MockLogger.ContainsMessage(expectedMessage, LogLevel.Info).Should().BeTrue("No log message containing the sentence '{0}' could be found!".FormatWith(expectedMessage)); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains(expectedMessage), "No log message containing the sentence '{0}' could be found!".FormatWith(expectedMessage)); } } @@ -4273,7 +3817,7 @@ public override void Because() [Fact] public void Should_report_for_all_non_skipped_packages() { - Results.Count().Should().Be(1); + Results.Should().HaveCount(1); Results.First().Key.Should().Be("installpackage"); } @@ -4281,7 +3825,7 @@ public void Should_report_for_all_non_skipped_packages() public void Should_skip_packages_in_except_list() { var upgradePackageResult = Results.Where(x => x.Key == "upgradepackage").ToList(); - upgradePackageResult.Count.Should().Be(0, "upgradepackage should not be in the results list"); + upgradePackageResult.Should().BeEmpty("upgradepackage should not be in the results list"); } } @@ -4332,32 +3876,22 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have scriptpackage.hook v1.0.0 installed. Version 2.0.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have scriptpackage.hook v1.0.0 installed. Version 2.0.0 is available based on your source")); } [Fact] @@ -4478,32 +4012,22 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version 1.1.0 is available based on your source")); } [Fact] @@ -4544,7 +4068,8 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.0.0 Before Modification")); } [Fact] @@ -4554,20 +4079,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) - .Any(p => p.EndsWith("upgradepackage 1.1.0 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("upgradepackage 1.1.0 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.0.0 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.1.0 Before Modification")); } [Fact] @@ -4575,7 +4101,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage 1.1.0 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.1.0 Installed")); } [Fact] @@ -4583,7 +4110,8 @@ public void Should_have_executed_chocolateyInstall_script_for_new_package() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_all_hook_script() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-install-all.ps1 hook ran for upgradepackage 1.1.0")); } [Fact] @@ -4591,7 +4119,8 @@ public void Should_have_executed_pre_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_all_hook_script() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-install-all.ps1 hook ran for upgradepackage 1.1.0")); } [Fact] @@ -4599,7 +4128,8 @@ public void Should_have_executed_post_all_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_pre_upgradepackage_hook_script() { - MockLogger.ContainsMessage("pre-install-upgradepackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-install-upgradepackage.ps1 hook ran for upgradepackage 1.1.0")); } [Fact] @@ -4607,7 +4137,8 @@ public void Should_have_executed_pre_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_post_upgradepackage_hook_script() { - MockLogger.ContainsMessage("post-install-upgradepackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-install-upgradepackage.ps1 hook ran for upgradepackage 1.1.0")); } [Fact] @@ -4615,7 +4146,8 @@ public void Should_have_executed_post_upgradepackage_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_uninstall_hook_script() { - MockLogger.ContainsMessage("post-uninstall-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("post-uninstall-all.ps1 hook ran for upgradepackage 1.1.0")); } [Fact] @@ -4623,7 +4155,8 @@ public void Should_not_have_executed_uninstall_hook_script() [Platform(Exclude = "Mono")] public void Should_not_have_executed_installpackage_hook_script() { - MockLogger.ContainsMessage("pre-install-installpackage.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-install-installpackage.ps1 hook ran for upgradepackage 1.1.0")); } [Fact] @@ -4631,7 +4164,8 @@ public void Should_not_have_executed_installpackage_hook_script() [Platform(Exclude = "Mono")] public void Should_have_executed_beforemodify_hook_script_for_previous_version() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.0.0", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.0.0")); } [Fact] @@ -4639,7 +4173,8 @@ public void Should_have_executed_beforemodify_hook_script_for_previous_version() [Platform(Exclude = "Mono")] public void Should_not_have_executed_beforemodify_hook_script_for_upgrade_version() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.1.0")); } } public class When_upgrading_an_existing_package_with_uppercase_id : ScenariosBase @@ -4688,32 +4223,22 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have UpperCase v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have UpperCase v1.0.0 installed. Version 1.1.0 is available based on your source")); } [Fact] @@ -4751,7 +4276,8 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("UpperCase 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("UpperCase 1.0.0 Before Modification")); } [Fact] @@ -4761,20 +4287,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("UpperCase 1.0.0 Before Modification")) - .Any(p => p.EndsWith("UpperCase 1.1.0 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("UpperCase 1.1.0 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("UpperCase 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("UpperCase 1.0.0 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("UpperCase 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("UpperCase 1.1.0 Before Modification")); } [Fact] @@ -4782,7 +4309,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("UpperCase 1.1.0 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("UpperCase 1.1.0 Installed")); } } @@ -4824,43 +4352,29 @@ public void Should_upgrade_the_package() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("1.1.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("1.1.0"); } } [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have unsupportedelements v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have unsupportedelements v1.0.0 installed. Version 1.1.0 is available based on your source")); } [Fact] public void Should_contain_a_warning_message_about_unsupported_elements() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("Issues found with nuspec elements")) upgradeMessage = true; - } - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Issues found with nuspec elements")); } [Fact] @@ -4898,7 +4412,8 @@ public void Should_match_the_upgrade_version_of_one_dot_one_dot_zero() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("unsupportedelements 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("unsupportedelements 1.0.0 Before Modification")); } [Fact] @@ -4908,20 +4423,21 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("unsupportedelements 1.0.0 Before Modification")) - .Any(p => p.EndsWith("unsupportedelements 1.1.0 Installed")) - .Should().BeTrue(); + .Should().Contain(p => p.EndsWith("unsupportedelements 1.1.0 Installed")); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("unsupportedelements 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("unsupportedelements 1.0.0 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("unsupportedelements 1.1.0 Before Modification", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("unsupportedelements 1.1.0 Before Modification")); } [Fact] @@ -4929,7 +4445,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("unsupportedelements 1.1.0 Installed", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("unsupportedelements 1.1.0 Installed")); } } @@ -4988,25 +4505,15 @@ public void Should_upgrade_the_package() [Fact] public void Should_contain_a_warning_message_that_it_upgraded_successfully() { - bool upgradedSuccessMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true; - } - - upgradedSuccessMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 1/1")); } [Fact] public void Should_contain_a_warning_message_with_old_and_new_versions() { - bool upgradeMessage = false; - foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).OrEmpty()) - { - if (message.Contains("You have upgradepackage v1.0.0 installed. Version {0} is available based on your source".FormatWith(NonNormalizedVersion))) upgradeMessage = true; - } - - upgradeMessage.Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("You have upgradepackage v1.0.0 installed. Version {0} is available based on your source".FormatWith(NonNormalizedVersion))); } [Fact] @@ -5039,7 +4546,7 @@ public void Config_should_match_package_result_name() [Fact] public void Should_match_the_upgrade_version() { - _packageResult.Version.Should().Be(NonNormalizedVersion); + _packageResult.Version.Should().Be(NormalizedVersion); } [Fact] @@ -5047,7 +4554,8 @@ public void Should_match_the_upgrade_version() [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyBeforeModify_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Before Modification", LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage 1.0.0 Before Modification")); } [Fact] @@ -5057,20 +4565,22 @@ public void Should_have_executed_chocolateyBeforeModify_before_chocolateyInstall { MockLogger.MessagesFor(LogLevel.Info).OrEmpty() .SkipWhile(p => !p.Contains("upgradepackage 1.0.0 Before Modification")) - .Any(p => p.EndsWith("upgradepackage {0} Installed".FormatWith(NonNormalizedVersion))) + .Any(p => p.EndsWith("upgradepackage {0} Installed".FormatWith(NormalizedVersion))) .Should().BeTrue(); } [Fact] public void Should_not_have_executed_chocolateyUninstall_script_for_original_package() { - MockLogger.ContainsMessage("upgradepackage 1.0.0 Uninstalled", LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage 1.0.0 Uninstalled")); } [Fact] public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage {0} Before Modification".FormatWith(NonNormalizedVersion), LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("upgradepackage {0} Before Modification".FormatWith(NormalizedVersion))); } [Fact] @@ -5078,7 +4588,8 @@ public void Should_not_have_executed_chocolateyBeforeModify_script_for_new_packa [Platform(Exclude = "Mono")] public void Should_have_executed_chocolateyInstall_script_for_new_package() { - MockLogger.ContainsMessage("upgradepackage {0} Installed".FormatWith(NonNormalizedVersion), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgradepackage {0} Installed".FormatWith(NormalizedVersion))); } } @@ -5167,14 +4678,15 @@ public void Should_upgrade_the_minimum_version_dependency() var packageFile = Path.Combine(Scenario.get_top_level(), "lib", DependencyName, "{0}.nupkg".FormatWith(DependencyName)); using (var packageReader = new PackageArchiveReader(packageFile)) { - packageReader.NuspecReader.GetVersion().ToStringSafe().Should().Be("2.0.0"); + packageReader.NuspecReader.GetVersion().ToNormalizedStringChecked().Should().Be("2.0.0"); } } [Fact] public void Should_contain_a_message_that_everything_upgraded_successfully() { - MockLogger.ContainsMessage("upgraded 2/2", LogLevel.Warn).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("upgraded 2/2")); } [Fact] @@ -5182,7 +4694,8 @@ public void Should_contain_a_message_that_everything_upgraded_successfully() [Platform(Exclude = "Mono")] public void Should_run_beforemodify_hook_script_for_previous_version_of_target() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "1.0.0"))); } [Fact] @@ -5190,7 +4703,8 @@ public void Should_run_beforemodify_hook_script_for_previous_version_of_target() [Platform(Exclude = "Mono")] public void Should_run_already_installed_target_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "1.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "1.0.0"))); } [Fact] @@ -5198,7 +4712,8 @@ public void Should_run_already_installed_target_package_beforeModify() [Platform(Exclude = "Mono")] public void Should_not_run_beforemodify_hook_script_for_upgrade_version_of_target() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"))); } [Fact] @@ -5206,7 +4721,8 @@ public void Should_not_run_beforemodify_hook_script_for_upgrade_version_of_targe [Platform(Exclude = "Mono")] public void Should_not_run_target_package_beforeModify_for_upgraded_version() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(TargetPackageName, "2.0.0"))); } [Fact] @@ -5214,7 +4730,8 @@ public void Should_not_run_target_package_beforeModify_for_upgraded_version() [Platform(Exclude = "Mono")] public void Should_run_pre_all_hook_script_for_upgraded_version_of_target() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-install-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"))); } [Fact] @@ -5222,7 +4739,8 @@ public void Should_run_pre_all_hook_script_for_upgraded_version_of_target() [Platform(Exclude = "Mono")] public void Should_run_post_all_hook_script_for_upgraded_version_of_target() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-install-all.ps1 hook ran for {0} {1}".FormatWith(TargetPackageName, "2.0.0"))); } [Fact] @@ -5230,7 +4748,8 @@ public void Should_run_post_all_hook_script_for_upgraded_version_of_target() [Platform(Exclude = "Mono")] public void Should_run_beforemodify_hook_script_for_previous_version_of_dependency() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "1.0.0"))); } [Fact] @@ -5238,7 +4757,8 @@ public void Should_run_beforemodify_hook_script_for_previous_version_of_dependen [Platform(Exclude = "Mono")] public void Should_run_already_installed_dependency_package_beforeModify() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "1.0.0"))); } [Fact] @@ -5246,7 +4766,8 @@ public void Should_run_already_installed_dependency_package_beforeModify() [Platform(Exclude = "Mono")] public void Should_not_run_beforemodify_hook_script_for_upgrade_version_of_dependency() { - MockLogger.ContainsMessage("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("pre-beforemodify-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"))); } [Fact] @@ -5254,7 +4775,8 @@ public void Should_not_run_beforemodify_hook_script_for_upgrade_version_of_depen [Platform(Exclude = "Mono")] public void Should_not_run_dependency_package_beforeModify_for_upgraded_version() { - MockLogger.ContainsMessage("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeFalse(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().NotContain(m => m.Contains("Ran BeforeModify: {0} {1}".FormatWith(DependencyName, "2.0.0"))); } [Fact] @@ -5262,7 +4784,8 @@ public void Should_not_run_dependency_package_beforeModify_for_upgraded_version( [Platform(Exclude = "Mono")] public void Should_run_pre_all_hook_script_for_upgraded_version_of_dependency() { - MockLogger.ContainsMessage("pre-install-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("pre-install-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"))); } [Fact] @@ -5270,34 +4793,26 @@ public void Should_run_pre_all_hook_script_for_upgraded_version_of_dependency() [Platform(Exclude = "Mono")] public void Should_run_post_all_hook_script_for_upgraded_version_of_dependency() { - MockLogger.ContainsMessage("post-install-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"), LogLevel.Info).Should().BeTrue(); + MockLogger.Messages.Should().ContainKey(LogLevel.Info.ToStringSafe()) + .WhoseValue.Should().Contain(m => m.Contains("post-install-all.ps1 hook ran for {0} {1}".FormatWith(DependencyName, "2.0.0"))); } [Fact] public void Should_have_a_successful_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Success.Should().BeTrue(); - } + Results.Should().AllSatisfy(r => r.Value.Success.Should().BeTrue()); } [Fact] public void Should_not_have_inconclusive_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Inconclusive.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Inconclusive.Should().BeFalse()); } [Fact] public void Should_not_have_warning_package_result() { - foreach (var packageResult in Results) - { - packageResult.Value.Warning.Should().BeFalse(); - } + Results.Should().AllSatisfy(r => r.Value.Warning.Should().BeFalse()); } } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs index 0b52a14c6..959f2f3eb 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyExportCommandSpecs.cs @@ -161,8 +161,7 @@ public void Should_log_a_message() public void Should_log_the_message_we_expect() { var messages = MockLogger.MessagesFor(LogLevel.Info); - messages.Should().NotBeEmpty(); - messages.Count.Should().Be(1); + messages.Should().ContainSingle(); messages[0].Should().Contain("Export would have been with options"); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyNewCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyNewCommandSpecs.cs index e9dfcf98e..1a9528eeb 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyNewCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyNewCommandSpecs.cs @@ -133,7 +133,7 @@ public void Should_not_set_template_properties_if_none_have_been_defined() { reset(); because(); - configuration.NewCommand.TemplateProperties.Count.Should().Be(0); + configuration.NewCommand.TemplateProperties.Should().HaveCount(0); } [Fact] @@ -144,7 +144,7 @@ public void Should_set_template_properties_when_args_are_separated_by_equals() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("bob"); templateProperty.Value.Should().Be("new"); @@ -159,7 +159,7 @@ public void Should_set_template_properties_only_once() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("bob"); templateProperty.Value.Should().Be("one"); @@ -174,7 +174,7 @@ public void Should_ignore_casing_differences_when_setting_template_properties() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("bob"); templateProperty.Value.Should().Be("one"); @@ -190,7 +190,7 @@ public void Should_not_set_template_properties_when_args_are_not_separated_by_eq because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("PackageName"); templateProperty.Value.Should().Be("bill"); @@ -206,7 +206,7 @@ public void Should_not_set_override_configuration_Name_when_unparsed_without_equ because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("PackageName"); templateProperty.Value.Should().Be("bill"); @@ -235,7 +235,7 @@ public void Should_set_template_properties_when_args_are_separated_by_equals_wit because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("bob"); templateProperty.Value.Should().Be("new"); @@ -249,7 +249,7 @@ public void Should_set_template_properties_without_surrounding_quotes() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("bob"); templateProperty.Value.Should().Be("new this"); @@ -263,7 +263,7 @@ public void Should_set_template_properties_without_removing_quote() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("bob"); templateProperty.Value.Should().Be("new \"this"); @@ -277,7 +277,7 @@ public void Should_set_template_properties_without_surrounding_apostrophes() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("bob"); templateProperty.Value.Should().Be("new this"); @@ -291,7 +291,7 @@ public void Should_set_template_properties_without_removing_apostrophe() because(); var properties = configuration.NewCommand.TemplateProperties; - properties.Count.Should().Be(1); + properties.Should().HaveCount(1); var templateProperty = properties.FirstOrDefault(); templateProperty.Key.Should().Be("bob"); templateProperty.Value.Should().Be("new 'this"); diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPackCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPackCommandSpecs.cs index db6bb60b7..9ff9939e9 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPackCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPackCommandSpecs.cs @@ -129,7 +129,7 @@ public void Should_property_bar_equal_baz() public void Should_log_warning_on_duplicate_foo() { var warnings = MockLogger.MessagesFor(LogLevel.Warn); - warnings.Count.Should().Be(1); + warnings.Should().HaveCount(1); warnings[0].Should().BeEquivalentTo("A value for 'foo' has already been added with the value '1'. Ignoring foo='2'."); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs index bc3c8ec0b..1db4187be 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs @@ -336,8 +336,8 @@ public void Should_log_a_message() public void Should_log_the_message_we_expect() { var messages = MockLogger.MessagesFor(tests.LogLevel.Info); - messages.Should().NotBeEmpty(); - messages.Count.Should().Be(1); + messages.Should().NotBeEmpty() + .And.ContainSingle(); messages[0].Should().Contain("Pin would have called"); } } @@ -385,7 +385,7 @@ public void Should_log_a_message() [Fact] public void Should_log_one_message() { - MockLogger.Messages.Count.Should().Be(1); + MockLogger.Messages.Should().ContainSingle(); } } diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUnpackSelfCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUnpackSelfCommandSpecs.cs index eaa83f5d6..15cd6c3d6 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUnpackSelfCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyUnpackSelfCommandSpecs.cs @@ -76,7 +76,7 @@ public void Should_log_a_message() [Fact] public void Should_log_one_message() { - MockLogger.Messages.Count.Should().Be(1); + MockLogger.Messages.Should().HaveCount(1); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNugetLoggerSpecs.cs b/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNugetLoggerSpecs.cs index c8aa53d3e..643c7c3b2 100644 --- a/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNugetLoggerSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/nuget/ChocolateyNugetLoggerSpecs.cs @@ -56,7 +56,7 @@ public void Should_log_debug_level_with_nuget_prefix_on_all_lines_when_calling_L _logger.LogDebug(testMessage); var loggerName = LogLevel.Debug.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -71,7 +71,7 @@ public void Should_log_debug_level_with_nuget_prefix_when_calling_LogDebug() _logger.LogDebug(testMessage); var loggerName = LogLevel.Debug.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -86,7 +86,7 @@ public void Should_log_error_level_with_nuget_prefix_on_all_lines_when_calling_L _logger.LogError(testMessage); var loggerName = LogLevel.Error.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -101,7 +101,7 @@ public void Should_log_error_level_with_nuget_prefix_when_calling_LogError() _logger.LogError(testMessage); var loggerName = LogLevel.Error.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -114,7 +114,7 @@ public void Should_log_error_level_with_nuget_prefix_when_calling_LogError() public void Should_log_expected_log_level_when_calling_Log_with_log_message(NuGetLogLevel nugetLogLevel, LogLevel logLevel, string testMessage, string expectedMessage) { _logger.Log(new LogMessage(nugetLogLevel, testMessage)); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(logLevel.ToStringSafe()); MockLogger.Messages[logLevel.ToStringSafe()].Should().Contain(expectedMessage); @@ -127,7 +127,7 @@ public void Should_log_expected_log_level_when_calling_Log_with_log_message(NuGe public void Should_log_expected_log_level_when_calling_Log_with_nuget_log_level(NuGetLogLevel nugetLogLevel, LogLevel logLevel, string testMessage, string expectedMessage) { _logger.Log(nugetLogLevel, testMessage); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(logLevel.ToStringSafe()); MockLogger.Messages[logLevel.ToStringSafe()].Should().Contain(expectedMessage); @@ -140,7 +140,7 @@ public void Should_log_expected_log_level_when_calling_Log_with_nuget_log_level( public async Task Should_log_expected_log_level_when_calling_LogAsync_with_nuget_log_level(NuGetLogLevel nugetLogLevel, LogLevel logLevel, string testMessage, string expectedMessage) { await _logger.LogAsync(nugetLogLevel, testMessage); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(logLevel.ToStringSafe()); MockLogger.Messages[logLevel.ToStringSafe()].Should().Contain(expectedMessage); @@ -153,7 +153,7 @@ public async Task Should_log_expected_log_level_when_calling_LogAsync_with_nuget public async Task Should_log_expected_log_level_when_calling_LogAsync_with_nuget_log_message(NuGetLogLevel nugetLogLevel, LogLevel logLevel, string testMessage, string expectedMessage) { await _logger.LogAsync(new LogMessage(nugetLogLevel, testMessage)); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(logLevel.ToStringSafe()); MockLogger.Messages[logLevel.ToStringSafe()].Should().Contain(expectedMessage); @@ -168,7 +168,7 @@ public void Should_log_info_level_with_nuget_prefix_on_all_lines_when_calling_Lo _logger.LogInformationSummary(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -183,7 +183,7 @@ public void Should_log_info_level_with_nuget_prefix_when_calling_LogInformationS _logger.LogInformationSummary(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -194,7 +194,7 @@ public void Should_log_info_level_with_nuget_prefix_when_calling_LogInformationS public void Should_log_verbose_level_when_calling_Log_with_nuget_log_level(NuGetLogLevel nuGetLogLevel, string testMessage, string expectedMessage) { _logger.Log(nuGetLogLevel, testMessage); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain("Info"); MockLogger.Messages["Info"].Should().Contain(expectedMessage); @@ -205,7 +205,7 @@ public void Should_log_verbose_level_when_calling_Log_with_nuget_log_level(NuGet public void Should_log_verbose_level_when_calling_Log_with_nuget_log_message(NuGetLogLevel nuGetLogLevel, string testMessage, string expectedMessage) { _logger.Log(new LogMessage(nuGetLogLevel, testMessage)); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain("Info"); MockLogger.Messages["Info"].Should().Contain(expectedMessage); @@ -216,7 +216,7 @@ public void Should_log_verbose_level_when_calling_Log_with_nuget_log_message(NuG public async Task Should_log_verbose_level_when_calling_LogAsync_with_nuget_log_level(NuGetLogLevel nuGetLogLevel, string testMessage, string expectedMessage) { await _logger.LogAsync(nuGetLogLevel, testMessage); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain("Info"); MockLogger.Messages["Info"].Should().Contain(expectedMessage); @@ -227,7 +227,7 @@ public async Task Should_log_verbose_level_when_calling_LogAsync_with_nuget_log_ public async Task Should_log_verbose_level_when_calling_LogAsync_with_nuget_log_message(NuGetLogLevel nuGetLogLevel, string testMessage, string expectedMessage) { await _logger.LogAsync(new LogMessage(nuGetLogLevel, testMessage)); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain("Info"); MockLogger.Messages["Info"].Should().Contain(expectedMessage); @@ -242,7 +242,7 @@ public void Should_log_verbose_level_with_nuget_prefix_on_all_lines_when_calling _logger.LogInformation(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -257,7 +257,7 @@ public void Should_log_verbose_level_with_nuget_prefix_on_all_lines_when_calling _logger.LogMinimal(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -272,7 +272,7 @@ public void Should_log_verbose_level_with_nuget_prefix_on_all_lines_when_calling _logger.LogVerbose(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -287,7 +287,7 @@ public void Should_log_verbose_level_with_nuget_prefix_when_calling_LogInformati _logger.LogInformation(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -302,7 +302,7 @@ public void Should_log_verbose_level_with_nuget_prefix_when_calling_LogMinimal() _logger.LogMinimal(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -317,7 +317,7 @@ public void Should_log_verbose_level_with_nuget_prefix_when_calling_LogVerbose() _logger.LogVerbose(testMessage); var loggerName = LogLevel.Info.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(2); + MockLogger.LoggerNames.Should().HaveCount(2); MockLogger.LoggerNames.Should().Contain("Verbose"); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -332,7 +332,7 @@ public void Should_log_warn_level_with_nuget_prefix_on_all_lines_when_calling_Lo _logger.LogWarning(testMessage); var loggerName = LogLevel.Warn.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); @@ -347,7 +347,7 @@ public void Should_log_warn_level_with_nuget_prefix_when_calling_LogWarning() _logger.LogWarning(testMessage); var loggerName = LogLevel.Warn.ToStringSafe(); - MockLogger.LoggerNames.Count.Should().Be(1); + MockLogger.LoggerNames.Should().ContainSingle(); MockLogger.LoggerNames.Should().Contain(typeof(ChocolateyNugetLogger).FullName); MockLogger.Messages.Keys.Should().Contain(loggerName); MockLogger.Messages[loggerName].Should().Contain(expectedMessage); diff --git a/src/chocolatey.tests/infrastructure.app/nuget/NugetCommonSpecs.cs b/src/chocolatey.tests/infrastructure.app/nuget/NugetCommonSpecs.cs index f4927ee7d..8933f7090 100644 --- a/src/chocolatey.tests/infrastructure.app/nuget/NugetCommonSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/nuget/NugetCommonSpecs.cs @@ -67,7 +67,7 @@ public void Should_create_repository_when_source_is_null() because(); - packageRepositories.Count().Should().Be(0); + packageRepositories.Should().BeEmpty(); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/services/ChocolateyConfigSettingsServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/ChocolateyConfigSettingsServiceSpecs.cs index 6e1b3cc4b..72e69d6c7 100644 --- a/src/chocolatey.tests/infrastructure.app/services/ChocolateyConfigSettingsServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/ChocolateyConfigSettingsServiceSpecs.cs @@ -363,7 +363,7 @@ public void Should_output_features_in_alphabetical_order() MockLogger.Messages.Keys.Should().Contain("Info"); var infoMessages = MockLogger.Messages["Info"]; - infoMessages.Count.Should().Be(2); + infoMessages.Should().HaveCount(2); infoMessages[0].Should().Contain("allowEmptyChecksums"); infoMessages[1].Should().Contain("virusCheck"); } @@ -410,7 +410,7 @@ public void Should_output_config_in_alphabetical_order() MockLogger.Messages.Keys.Should().Contain("Info"); var infoMessages = MockLogger.Messages["Info"]; - infoMessages.Count.Should().Be(2); + infoMessages.Should().HaveCount(2); infoMessages[0].Should().Contain("cacheLocation"); infoMessages[1].Should().Contain("webRequestTimeoutSeconds"); } @@ -457,7 +457,7 @@ public void Should_output_sources_in_alphabetical_order() MockLogger.Messages.Keys.Should().Contain("Info"); var infoMessages = MockLogger.Messages["Info"]; - infoMessages.Count.Should().Be(2); + infoMessages.Should().HaveCount(2); infoMessages[0].Should().Contain("alpha"); infoMessages[1].Should().Contain("beta"); } @@ -568,7 +568,7 @@ public void Should_return_feature_status() { MockLogger.Messages.Keys.Should().Contain("Info"); var infoMessages = MockLogger.Messages["Info"]; - infoMessages.Count.Should().Be(1); + infoMessages.Should().ContainSingle(); infoMessages[0].Should().Contain("Enabled"); } } diff --git a/src/chocolatey.tests/infrastructure.app/services/FilesServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/FilesServiceSpecs.cs index 6e3ac5d7f..fc0d2e56a 100644 --- a/src/chocolatey.tests/infrastructure.app/services/FilesServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/FilesServiceSpecs.cs @@ -261,7 +261,7 @@ public void Should_contain_package_files() [Fact] public void Should_contain_the_correct_number_of_package_files() { - result.Files.Count.Should().Be(files.Count); + result.Files.Should().HaveCount(files.Count); } [Fact] diff --git a/src/chocolatey.tests/infrastructure.app/services/NugetServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/NugetServiceSpecs.cs index 4d94a13b6..bbf04ed59 100644 --- a/src/chocolatey.tests/infrastructure.app/services/NugetServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/NugetServiceSpecs.cs @@ -310,8 +310,8 @@ public void Generated_package_should_be_in_current_directory() because(); var infos = MockLogger.MessagesFor(tests.LogLevel.Info); - infos.Count.Should().Be(1); - infos[0].Should().Be("Chocolatey would have searched for a nuspec file in \"c:\\projects\\chocolatey\" and attempted to compile it."); + infos.Should().ContainSingle(); + infos.Should().HaveElementAt(0,"Chocolatey would have searched for a nuspec file in \"c:\\projects\\chocolatey\" and attempted to compile it."); } [Fact] @@ -324,8 +324,8 @@ public void Generated_package_should_be_in_specified_directory() because(); var infos = MockLogger.MessagesFor(tests.LogLevel.Info); - infos.Count.Should().Be(1); - infos[0].Should().Be("Chocolatey would have searched for a nuspec file in \"c:\\packages\" and attempted to compile it."); + infos.Should().ContainSingle(); + infos.Should().HaveElementAt(0,"Chocolatey would have searched for a nuspec file in \"c:\\packages\" and attempted to compile it."); } } } diff --git a/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs index 420c504ee..910ed73e8 100644 --- a/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs @@ -62,12 +62,16 @@ public override void Because() [Fact] public void GetsRulesFromService() { - _detectedRules.Count().Should().Be(4); + _detectedRules.Should().HaveCount(4); IEnumerable ruleIds = _detectedRules.Select(t => t.Id); - ruleIds.Should().Contain(UnsupportedElementUsed); - ruleIds.Should().Contain(EmptyRequiredElement); - ruleIds.Should().Contain(InvalidTypeElement); - ruleIds.Should().Contain(MissingElementOnRequiringLicenseAcceptance); + + ruleIds.Should().Contain(new[] + { + UnsupportedElementUsed, + EmptyRequiredElement, + InvalidTypeElement, + MissingElementOnRequiringLicenseAcceptance + }); } } } diff --git a/src/chocolatey.tests/infrastructure.app/services/TemplateServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/TemplateServiceSpecs.cs index 78d2c13cb..25eecef08 100644 --- a/src/chocolatey.tests/infrastructure.app/services/TemplateServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/TemplateServiceSpecs.cs @@ -80,8 +80,8 @@ public void Should_log_current_directory_if_no_outputdirectory() because(); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.Should().Be(1); - infos[0].Should().Be("Would have generated a new package specification at c:\\chocolatey\\Bob"); + infos.Should().ContainSingle(); + infos.Should().HaveElementAt(0,"Would have generated a new package specification at c:\\chocolatey\\Bob"); } [Fact] @@ -92,8 +92,8 @@ public void Should_log_output_directory_if_outputdirectory_is_specified() because(); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.Should().Be(1); - infos[0].Should().Be("Would have generated a new package specification at c:\\packages\\Bob"); + infos.Should().ContainSingle(); + infos.Should().HaveElementAt(0,"Would have generated a new package specification at c:\\packages\\Bob"); } } @@ -132,8 +132,8 @@ public void Should_write_file_withe_replaced_tokens() because(); var debugs = MockLogger.MessagesFor(LogLevel.Debug); - debugs.Count.Should().Be(1); - debugs[0].Should().Be("Bob"); + debugs.Should().ContainSingle(); + debugs.Should().HaveElementAt(0,"Bob"); } [Fact] @@ -144,12 +144,12 @@ public void Should_log_info_if_regular_output() because(); var debugs = MockLogger.MessagesFor(LogLevel.Debug); - debugs.Count.Should().Be(1); - debugs[0].Should().Be("Bob"); + debugs.Should().ContainSingle(); + debugs.Should().HaveElementAt(0,"Bob"); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.Should().Be(1); - infos[0].Should().Be(string.Format(@"Generating template to a file{0} at 'c:\packages\bob.nuspec'", Environment.NewLine)); + infos.Should().ContainSingle(); + infos.Should().HaveElementAt(0,string.Format(@"Generating template to a file{0} at 'c:\packages\bob.nuspec'", Environment.NewLine)); } } @@ -294,13 +294,13 @@ public void Should_generate_all_files_and_directories() because(); var directories = directoryCreated.ToList(); - directories.Count.Should().Be(2, "There should be 2 directories, but there was: " + string.Join(", ", directories)); - directories[0].Should().Be("c:\\chocolatey\\Bob"); - directories[1].Should().Be("c:\\chocolatey\\Bob\\tools"); + directories.Should().HaveCount(2, "There should be 2 directories, but there was: " + string.Join(", ", directories)); + directories.Should().HaveElementAt(0,"c:\\chocolatey\\Bob"); + directories.Should().HaveElementAt(1,"c:\\chocolatey\\Bob\\tools"); - files.Count.Should().Be(2, "There should be 2 files, but there was: " + string.Join(", ", files)); - files[0].Should().Be("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); - files[1].Should().Be("c:\\chocolatey\\Bob\\random.txt"); + files.Should().HaveCount(2, "There should be 2 files, but there was: " + string.Join(", ", files)); + files.Should().HaveElementAt(0,"c:\\chocolatey\\Bob\\__name_replace__.nuspec"); + files.Should().HaveElementAt(1,"c:\\chocolatey\\Bob\\random.txt"); MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); } @@ -313,13 +313,13 @@ public void Should_generate_all_files_and_directories_even_with_outputdirectory( because(); var directories = directoryCreated.ToList(); - directories.Count.Should().Be(2, "There should be 2 directories, but there was: " + string.Join(", ", directories)); - directories[0].Should().Be("c:\\packages\\Bob"); - directories[1].Should().Be("c:\\packages\\Bob\\tools"); + directories.Should().HaveCount(2, "There should be 2 directories, but there was: " + string.Join(", ", directories)); + directories.Should().HaveElementAt(0,"c:\\packages\\Bob"); + directories.Should().HaveElementAt(1,"c:\\packages\\Bob\\tools"); - files.Count.Should().Be(2, "There should be 2 files, but there was: " + string.Join(", ", files)); - files[0].Should().Be("c:\\packages\\Bob\\__name_replace__.nuspec"); - files[1].Should().Be("c:\\packages\\Bob\\random.txt"); + files.Should().HaveCount(2, "There should be 2 files, but there was: " + string.Join(", ", files)); + files.Should().HaveElementAt(0,"c:\\packages\\Bob\\__name_replace__.nuspec"); + files.Should().HaveElementAt(1,"c:\\packages\\Bob\\random.txt"); MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); } @@ -392,16 +392,16 @@ public void Should_generate_all_files_and_directories() because(); var directories = directoryCreated.ToList(); - directories.Count.Should().Be(3, "There should be 3 directories, but there was: " + string.Join(", ", directories)); - directories[0].Should().Be("c:\\chocolatey\\Bob"); - directories[1].Should().Be("c:\\chocolatey\\Bob\\tools"); - directories[2].Should().Be("c:\\chocolatey\\Bob\\tools\\lower"); + directories.Should().HaveCount(3, "There should be 3 directories, but there was: " + string.Join(", ", directories)); + directories.Should().HaveElementAt(0,"c:\\chocolatey\\Bob"); + directories.Should().HaveElementAt(1,"c:\\chocolatey\\Bob\\tools"); + directories.Should().HaveElementAt(2,"c:\\chocolatey\\Bob\\tools\\lower"); - files.Count.Should().Be(4, "There should be 4 files, but there was: " + string.Join(", ", files)); - files[0].Should().Be("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); - files[1].Should().Be("c:\\chocolatey\\Bob\\random.txt"); - files[2].Should().Be("c:\\chocolatey\\Bob\\tools\\chocolateyInstall.ps1"); - files[3].Should().Be("c:\\chocolatey\\Bob\\tools\\lower\\another.ps1"); + files.Should().HaveCount(4, "There should be 4 files, but there was: " + string.Join(", ", files)); + files.Should().HaveElementAt(0,"c:\\chocolatey\\Bob\\__name_replace__.nuspec"); + files.Should().HaveElementAt(1,"c:\\chocolatey\\Bob\\random.txt"); + files.Should().HaveElementAt(2,"c:\\chocolatey\\Bob\\tools\\chocolateyInstall.ps1"); + files.Should().HaveElementAt(3,"c:\\chocolatey\\Bob\\tools\\lower\\another.ps1"); MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); } @@ -414,16 +414,16 @@ public void Should_generate_all_files_and_directories_even_with_outputdirectory( because(); var directories = directoryCreated.ToList(); - directories.Count.Should().Be(3, "There should be 3 directories, but there was: " + string.Join(", ", directories)); - directories[0].Should().Be("c:\\packages\\Bob"); - directories[1].Should().Be("c:\\packages\\Bob\\tools"); - directories[2].Should().Be("c:\\packages\\Bob\\tools\\lower"); + directories.Should().HaveCount(3, "There should be 3 directories, but there was: " + string.Join(", ", directories)); + directories.Should().HaveElementAt(0,"c:\\packages\\Bob"); + directories.Should().HaveElementAt(1,"c:\\packages\\Bob\\tools"); + directories.Should().HaveElementAt(2,"c:\\packages\\Bob\\tools\\lower"); - files.Count.Should().Be(4, "There should be 4 files, but there was: " + string.Join(", ", files)); - files[0].Should().Be("c:\\packages\\Bob\\__name_replace__.nuspec"); - files[1].Should().Be("c:\\packages\\Bob\\random.txt"); - files[2].Should().Be("c:\\packages\\Bob\\tools\\chocolateyInstall.ps1"); - files[3].Should().Be("c:\\packages\\Bob\\tools\\lower\\another.ps1"); + files.Should().HaveCount(4, "There should be 4 files, but there was: " + string.Join(", ", files)); + files.Should().HaveElementAt(0,"c:\\packages\\Bob\\__name_replace__.nuspec"); + files.Should().HaveElementAt(1,"c:\\packages\\Bob\\random.txt"); + files.Should().HaveElementAt(2,"c:\\packages\\Bob\\tools\\chocolateyInstall.ps1"); + files.Should().HaveElementAt(3,"c:\\packages\\Bob\\tools\\lower\\another.ps1"); MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); } @@ -496,18 +496,18 @@ public void Should_generate_all_files_and_directories() because(); var directories = directoryCreated.ToList(); - directories.Count.Should().Be(5, "There should be 5 directories, but there was: " + string.Join(", ", directories)); - directories[0].Should().Be("c:\\chocolatey\\Bob"); - directories[1].Should().Be("c:\\chocolatey\\Bob\\tools"); - directories[2].Should().Be("c:\\chocolatey\\Bob\\tools\\lower"); - directories[3].Should().Be("c:\\chocolatey\\Bob\\empty"); - directories[4].Should().Be("c:\\chocolatey\\Bob\\empty\\nested"); - - files.Count.Should().Be(4, "There should be 4 files, but there was: " + string.Join(", ", files)); - files[0].Should().Be("c:\\chocolatey\\Bob\\__name_replace__.nuspec"); - files[1].Should().Be("c:\\chocolatey\\Bob\\random.txt"); - files[2].Should().Be("c:\\chocolatey\\Bob\\tools\\chocolateyInstall.ps1"); - files[3].Should().Be("c:\\chocolatey\\Bob\\tools\\lower\\another.ps1"); + directories.Should().HaveCount(5, "There should be 5 directories, but there was: " + string.Join(", ", directories)); + directories.Should().HaveElementAt(0,"c:\\chocolatey\\Bob"); + directories.Should().HaveElementAt(1,"c:\\chocolatey\\Bob\\tools"); + directories.Should().HaveElementAt(2,"c:\\chocolatey\\Bob\\tools\\lower"); + directories.Should().HaveElementAt(3,"c:\\chocolatey\\Bob\\empty"); + directories.Should().HaveElementAt(4,"c:\\chocolatey\\Bob\\empty\\nested"); + + files.Should().HaveCount(4, "There should be 4 files, but there was: " + string.Join(", ", files)); + files.Should().HaveElementAt(0,"c:\\chocolatey\\Bob\\__name_replace__.nuspec"); + files.Should().HaveElementAt(1,"c:\\chocolatey\\Bob\\random.txt"); + files.Should().HaveElementAt(2,"c:\\chocolatey\\Bob\\tools\\chocolateyInstall.ps1"); + files.Should().HaveElementAt(3,"c:\\chocolatey\\Bob\\tools\\lower\\another.ps1"); MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\chocolatey\Bob'", Environment.NewLine)); } @@ -520,18 +520,18 @@ public void Should_generate_all_files_and_directories_even_with_outputdirectory( because(); var directories = directoryCreated.ToList(); - directories.Count.Should().Be(5, "There should be 5 directories, but there was: " + string.Join(", ", directories)); - directories[0].Should().Be("c:\\packages\\Bob"); - directories[1].Should().Be("c:\\packages\\Bob\\tools"); - directories[2].Should().Be("c:\\packages\\Bob\\tools\\lower"); - directories[3].Should().Be("c:\\packages\\Bob\\empty"); - directories[4].Should().Be("c:\\packages\\Bob\\empty\\nested"); - - files.Count.Should().Be(4, "There should be 4 files, but there was: " + string.Join(", ", files)); - files[0].Should().Be("c:\\packages\\Bob\\__name_replace__.nuspec"); - files[1].Should().Be("c:\\packages\\Bob\\random.txt"); - files[2].Should().Be("c:\\packages\\Bob\\tools\\chocolateyInstall.ps1"); - files[3].Should().Be("c:\\packages\\Bob\\tools\\lower\\another.ps1"); + directories.Should().HaveCount(5, "There should be 5 directories, but there was: " + string.Join(", ", directories)); + directories.Should().HaveElementAt(0,"c:\\packages\\Bob"); + directories.Should().HaveElementAt(1,"c:\\packages\\Bob\\tools"); + directories.Should().HaveElementAt(2,"c:\\packages\\Bob\\tools\\lower"); + directories.Should().HaveElementAt(3,"c:\\packages\\Bob\\empty"); + directories.Should().HaveElementAt(4,"c:\\packages\\Bob\\empty\\nested"); + + files.Should().HaveCount(4, "There should be 4 files, but there was: " + string.Join(", ", files)); + files.Should().HaveElementAt(0,"c:\\packages\\Bob\\__name_replace__.nuspec"); + files.Should().HaveElementAt(1,"c:\\packages\\Bob\\random.txt"); + files.Should().HaveElementAt(2,"c:\\packages\\Bob\\tools\\chocolateyInstall.ps1"); + files.Should().HaveElementAt(3,"c:\\packages\\Bob\\tools\\lower\\another.ps1"); MockLogger.MessagesFor(LogLevel.Info).Last().Should().Be(string.Format(@"Successfully generated Bob package specification files{0} at 'c:\packages\Bob'", Environment.NewLine)); } @@ -849,8 +849,8 @@ public void Should_log_template_location_if_no_template_name() because(); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.Should().Be(1); - infos[0].Should().Be("Would have listed templates in {0}".FormatWith(ApplicationParameters.TemplatesLocation)); + infos.Should().ContainSingle(); + infos.Should().HaveElementAt(0,"Would have listed templates in {0}".FormatWith(ApplicationParameters.TemplatesLocation)); } [Fact] @@ -860,8 +860,8 @@ public void Should_log_template_name_if_template_name() because(); var infos = MockLogger.MessagesFor(LogLevel.Info); - infos.Count.Should().Be(1); - infos[0].Should().Be("Would have listed information about {0}".FormatWith(config.TemplateCommand.Name)); + infos.Should().ContainSingle(); + infos.Should().HaveElementAt(0,"Would have listed information about {0}".FormatWith(config.TemplateCommand.Name)); } } } diff --git a/src/chocolatey.tests/infrastructure/cryptography/CryptoHashProviderSpecs.cs b/src/chocolatey.tests/infrastructure/cryptography/CryptoHashProviderSpecs.cs index e589ec5c9..db4685c48 100644 --- a/src/chocolatey.tests/infrastructure/cryptography/CryptoHashProviderSpecs.cs +++ b/src/chocolatey.tests/infrastructure/cryptography/CryptoHashProviderSpecs.cs @@ -91,7 +91,7 @@ public override void Because() [Fact] public void Should_log_a_warning() { - MockLogger.MessagesFor(LogLevel.Warn).Count.Should().Be(1); + MockLogger.MessagesFor(LogLevel.Warn).Should().HaveCount(1); } [Fact] diff --git a/src/chocolatey.tests/infrastructure/filesystem/DotNetFileSystemSpecs.cs b/src/chocolatey.tests/infrastructure/filesystem/DotNetFileSystemSpecs.cs index 618468f76..126fec8e3 100644 --- a/src/chocolatey.tests/infrastructure/filesystem/DotNetFileSystemSpecs.cs +++ b/src/chocolatey.tests/infrastructure/filesystem/DotNetFileSystemSpecs.cs @@ -180,13 +180,13 @@ public void GetExecutablePath_should_return_same_value_when_executable_is_not_fo [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_null() { - FileSystem.GetExecutablePath(null).Should().Be(string.Empty); + FileSystem.GetExecutablePath(null).Should().BeEmpty(); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_empty_string() { - FileSystem.GetExecutablePath(string.Empty).Should().Be(string.Empty); + FileSystem.GetExecutablePath(string.Empty).Should().BeEmpty(); } } @@ -218,10 +218,10 @@ public void GetExecutablePath_should_find_existing_executable() } else { - new string[] + FileSystem.GetExecutablePath("ls").Should().BeOneOf(new string[] { "/bin/ls", "/usr/bin/ls" - }.Should().Contain(FileSystem.GetExecutablePath("ls")); + }); } } @@ -234,13 +234,13 @@ public void GetExecutablePath_should_return_same_value_when_executable_is_not_fo [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_null() { - FileSystem.GetExecutablePath(null).Should().Be(string.Empty); + FileSystem.GetExecutablePath(null).Should().BeEmpty(); } [Fact] public void GetExecutablePath_should_return_empty_string_when_value_is_empty_string() { - FileSystem.GetExecutablePath(string.Empty).Should().Be(string.Empty); + FileSystem.GetExecutablePath(string.Empty).Should().BeEmpty(); } } } diff --git a/src/chocolatey.tests/infrastructure/guards/EnsureSpecs.cs b/src/chocolatey.tests/infrastructure/guards/EnsureSpecs.cs index 55e57efc1..995998b67 100644 --- a/src/chocolatey.tests/infrastructure/guards/EnsureSpecs.cs +++ b/src/chocolatey.tests/infrastructure/guards/EnsureSpecs.cs @@ -531,7 +531,7 @@ public void Should_not_return_the_specified_error_message() // { // var messages = MockLogger.MessagesFor(LogLevel.Error); // messages.Should().NotBeEmpty(); - // messages.Count.Should().Be(1); + // messages.Should().ContainSingle(); // messages[0].Should().Contain("Trying to call ensureFunction on"); // } } diff --git a/src/chocolatey.tests/infrastructure/tolerance/FaultToleranceSpecs.cs b/src/chocolatey.tests/infrastructure/tolerance/FaultToleranceSpecs.cs index f11eb8df0..a2087de2f 100644 --- a/src/chocolatey.tests/infrastructure/tolerance/FaultToleranceSpecs.cs +++ b/src/chocolatey.tests/infrastructure/tolerance/FaultToleranceSpecs.cs @@ -79,7 +79,7 @@ public void Should_log_warning_each_time() // don't care } - MockLogger.MessagesFor(LogLevel.Warn).Count.Should().Be(2); + MockLogger.MessagesFor(LogLevel.Warn).Should().HaveCount(2); } [Fact] @@ -117,7 +117,7 @@ public void Should_return_immediately_when_successful() i.Should().Be(1); - MockLogger.MessagesFor(LogLevel.Warn).Count.Should().Be(0); + MockLogger.MessagesFor(LogLevel.Warn).Should().BeEmpty(); } } @@ -137,7 +137,7 @@ public void Should_log_an_error_message() "You have an error" ); - MockLogger.MessagesFor(LogLevel.Error).Count.Should().Be(1); + MockLogger.MessagesFor(LogLevel.Error).Should().ContainSingle(); } [Fact] @@ -164,7 +164,7 @@ public void Should_log_a_warning_message_when_set_to_warn() logWarningInsteadOfError: true ); - MockLogger.MessagesFor(LogLevel.Warn).Count.Should().Be(1); + MockLogger.MessagesFor(LogLevel.Warn).Should().ContainSingle(); } [Fact] From b537989f75c915d79b09e405ff55a9b6c55a798a Mon Sep 17 00:00:00 2001 From: TheCakeIsNaOH Date: Tue, 6 Jun 2023 20:19:49 -0500 Subject: [PATCH 11/52] (#3196) Pin add/remove use exact package ID For the pin commands add and remove, find the package to pin/unpin using an exact list, not a normal search, to ensure that only an exact matching package ID is returned, and therefore pinned/unpinned. A test is also added for this, using the mingw and gstreamer-mingw package IDs, which is what was reported causing problems in the issue. --- .../commands/ChocolateyPinCommandSpecs.cs | 76 +++++++++++++++++++ .../commands/ChocolateyPinCommand.cs | 3 + 2 files changed, 79 insertions(+) diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs index 1db4187be..36b71c6c4 100644 --- a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyPinCommandSpecs.cs @@ -48,6 +48,8 @@ public abstract class ChocolateyPinCommandSpecsBase : TinySpec protected ChocolateyConfiguration configuration = new ChocolateyConfiguration(); protected Mock package = new Mock(); protected Mock pinnedPackage = new Mock(); + protected Mock mingwPackage = new Mock(); + protected Mock gstreamerMingwPackage = new Mock(); public override void Context() { @@ -72,6 +74,23 @@ public override void Context() { IsPinned = true }); + + mingwPackage = new Mock(); + mingwPackage.Setup(p => p.Id).Returns("mingw"); + mingwPackage.Setup(p => p.Version).Returns(new NuGetVersion("1.0.0")); + packageInfoService.Setup(s => s.Get(mingwPackage.Object)).Returns( + new ChocolateyPackageInformation(mingwPackage.Object) + { + IsPinned = true + }); + gstreamerMingwPackage = new Mock(); + gstreamerMingwPackage.Setup(p => p.Id).Returns("gstreamer-mingw"); + gstreamerMingwPackage.Setup(p => p.Version).Returns(new NuGetVersion("1.0.0")); + packageInfoService.Setup(s => s.Get(gstreamerMingwPackage.Object)).Returns( + new ChocolateyPackageInformation(gstreamerMingwPackage.Object) + { + IsPinned = true + }); } public void Reset() @@ -461,5 +480,62 @@ public void Should_remove_pin_when_command_is_remove() } } + public class When_run_is_called_with_similarly_named_package_installed : ChocolateyPinCommandSpecsBase + { + public override void Context() + { + base.Context(); + configuration.Sources = ApplicationParameters.PackagesLocation; + configuration.ListCommand.LocalOnly = true; + configuration.AllVersions = true; + + var packageResults = new[] + { + new PackageResult(mingwPackage.Object, null), + new PackageResult(gstreamerMingwPackage.Object, null) + }; + nugetService.Setup(n => n.List(It.IsAny())).Returns(packageResults); + } + + public new void Reset() + { + Context(); + base.Reset(); + } + + public override void AfterEachSpec() + { + base.AfterEachSpec(); + MockLogger.Messages.Clear(); + } + + public override void Because() + { + } + + [Fact] + public void Should_call_nuget_service_list_run_when_command_is_list() + { + Reset(); + configuration.PinCommand.Command = PinCommandType.List; + command.Run(configuration); + + nugetService.Verify(n => n.List(It.IsAny()), Times.Once); + } + + [Fact] + public void Should_remove_pin_from_correct_package() + { + Reset(); + configuration.PinCommand.Name = "mingw"; + configuration.PinCommand.Command = PinCommandType.Remove; + + command.SetPin(configuration); + + packageInfoService.Verify(s => + s.Save(It.Is(n => + n.Package.Id.Equals("mingw"))), Times.Once); + } + } } } diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyPinCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyPinCommand.cs index 38bf19321..ef4ebe3d3 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyPinCommand.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyPinCommand.cs @@ -190,9 +190,12 @@ public virtual void SetPin(ChocolateyConfiguration config) config.Input = config.PinCommand.Name; config.Version = semanticVersion.ToFullStringChecked(); config.ListCommand.ByIdOnly = true; + var exact = config.ListCommand.Exact; + config.ListCommand.Exact = true; var quiet = config.QuietOutput; config.QuietOutput = true; var installedPackage = _nugetService.List(config).FirstOrDefault(); + config.ListCommand.Exact = exact; config.QuietOutput = quiet; config.Input = input; From 2f0d1084d66ad9f3592f29ca594fb33f9a0bcd79 Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Thu, 8 Jun 2023 12:33:09 +0200 Subject: [PATCH 12/52] (#3182) Fix rule distinction comparison When finding the distinct rules that are available in Chocolatey CLI and its extensions, the equals and GetHashCode was incorrectly implemented which in some cases causes the incorrect rules to be returned, or not returned. This commit updates these two methods to handle the check for getting the hash code, and comparing immutable rules in the way that we expect them to behave. --- src/chocolatey.tests/TinySpec.cs | 9 + .../services/RulesServiceSpecs.cs | 170 ++++++++++++++---- .../services/RuleService.cs | 17 +- 3 files changed, 163 insertions(+), 33 deletions(-) diff --git a/src/chocolatey.tests/TinySpec.cs b/src/chocolatey.tests/TinySpec.cs index ddb01b022..0b747d5e5 100644 --- a/src/chocolatey.tests/TinySpec.cs +++ b/src/chocolatey.tests/TinySpec.cs @@ -186,6 +186,15 @@ public SemVer20Attribute() } } + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)] + public sealed class RuleEngine : CategoryAttribute + { + public RuleEngine() + : base("Rule Engine") + { + } + } + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)] public sealed class LegacySemVerAttribute : CategoryAttribute { diff --git a/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs b/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs index 910ed73e8..a5a63dcd0 100644 --- a/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs +++ b/src/chocolatey.tests/infrastructure.app/services/RulesServiceSpecs.cs @@ -19,59 +19,165 @@ namespace chocolatey.tests.infrastructure.app.services using System; using System.Collections.Generic; using System.Linq; - using System.Reflection; using chocolatey.infrastructure.app.rules; using chocolatey.infrastructure.app.services; using chocolatey.infrastructure.rules; using chocolatey.infrastructure.services; using FluentAssertions; + using NuGet.Packaging; - public class RulesServiceSpecs : TinySpec + public class RulesServiceSpecs { - private RuleService _service; - private IReadOnlyList _detectedRules; - // We can't reference RuleIdentifiers directly as it's Internal. We should either get these from there, or do something different... - private const string EmptyRequiredElement = "CHCR0001"; - private const string InvalidTypeElement = "CHCU0001"; - private const string MissingElementOnRequiringLicenseAcceptance = "CHCR0002"; - private const string UnsupportedElementUsed = "CHCU0002"; - - public override void Context() + [Categories.RuleEngine] + public abstract class RulesServiceSpecsBase : TinySpec { - Type[] availableRules = typeof(IRuleService).Assembly + protected RuleService Service; + protected IReadOnlyList DetectedRules; + + public override void Context() + { + var rules = GetRules(); + + Service = new RuleService(rules.ToArray()); + } + + public override void Because() + { + DetectedRules = Service.GetAllAvailableRules(); + } + + protected abstract IEnumerable GetRules(); + } + + public class WhenGettingAllAvailableRulesShouldGetTheExpectedRules : RulesServiceSpecsBase + { + // We can't reference RuleIdentifiers directly as it's Internal. We should either get these from there, or do something different... + private const string EmptyRequiredElement = "CHCR0001"; + + private const string InvalidTypeElement = "CHCU0001"; + private const string MissingElementOnRequiringLicenseAcceptance = "CHCR0002"; + private const string UnsupportedElementUsed = "CHCU0002"; + + protected override IEnumerable GetRules() + { + Type[] availableRules = typeof(IRuleService).Assembly .GetTypes() .Where(t => !t.IsInterface && !t.IsAbstract && typeof(IMetadataRule).IsAssignableFrom(t)) .ToArray(); - var rules = new List(); + var rules = new List(); - foreach (Type availableRule in availableRules) - { - // We do first here as we want it to fail if the constructor can't be found. - var rule = availableRule.GetConstructors().First().Invoke(new object[] { }); - rules.Add((MetadataRuleBase)rule); + foreach (Type availableRule in availableRules) + { + // We do first here as we want it to fail if the constructor can't be found. + var rule = availableRule.GetConstructors().First().Invoke(new object[] { }); + rules.Add((MetadataRuleBase)rule); + } + + return rules; } - _service = new RuleService(rules.ToArray()); + [Fact] + public void GetsRulesFromService() + { + DetectedRules.Should().HaveCount(4); + var ruleIds = DetectedRules.Select(t => t.Id); + + ruleIds.Should().ContainInOrder(new[] + { + EmptyRequiredElement, + MissingElementOnRequiringLicenseAcceptance, + InvalidTypeElement, + UnsupportedElementUsed, + }); + } } - public override void Because() + public class WhenTwoAvailableRulesContainsNoIdentifierAndWithTheSameSummary : RulesServiceSpecsBase { - _detectedRules = _service.GetAllAvailableRules(); + private static readonly ImmutableRule _expectedRule = new ImmutableRule(RuleType.Warning, string.Empty, "Some summary"); + + protected override IEnumerable GetRules() + { + yield return new EmptyRulesValidator(); + } + + [Fact] + public void ShouldHaveOnlyASingleResult() + { + DetectedRules.Should().ContainSingle(); + } + + [Fact] + public void ShouldOnlyContainsTheFirstFoundItem() + { + DetectedRules.Should().ContainEquivalentOf(_expectedRule); + } + + private class EmptyRulesValidator : IMetadataRule + { + public IReadOnlyList GetAvailableRules() + { + return new[] + { + _expectedRule, + new ImmutableRule(RuleType.Error, string.Empty, "Some summary") + }; + } + + public IEnumerable Validate(NuspecReader reader) + { + throw new NotImplementedException(); + } + + public IEnumerable validate(NuspecReader reader) + { + throw new NotImplementedException(); + } + } } - [Fact] - public void GetsRulesFromService() + public class WhenTwoAvailableRulesContainNoIdentifierWithDifferentSummaries : RulesServiceSpecsBase { - _detectedRules.Should().HaveCount(4); - IEnumerable ruleIds = _detectedRules.Select(t => t.Id); + protected override IEnumerable GetRules() + { + yield return new EmptyRulesValidator(); + } + + [Fact] + public void ShouldHaveGottenTwoAvailableRules() + { + DetectedRules.Should().HaveCount(2); + } - ruleIds.Should().Contain(new[] + [Fact] + public void ShouldHaveGottenExpectedRules() { - UnsupportedElementUsed, - EmptyRequiredElement, - InvalidTypeElement, - MissingElementOnRequiringLicenseAcceptance - }); + var ruleSummaries = DetectedRules.Select(t => t.Summary); + + ruleSummaries.Should().ContainInOrder("Some summary of rule 2", "Some summary of rule 1"); + } + + private class EmptyRulesValidator : IMetadataRule + { + public IReadOnlyList GetAvailableRules() + { + return new[] + { + new ImmutableRule(RuleType.Warning, string.Empty, "Some summary of rule 1"), + new ImmutableRule(RuleType.Error, string.Empty, "Some summary of rule 2") + }; + } + + public IEnumerable Validate(NuspecReader reader) + { + throw new NotImplementedException(); + } + + public IEnumerable validate(NuspecReader reader) + { + throw new NotImplementedException(); + } + } } } -} +} \ No newline at end of file diff --git a/src/chocolatey/infrastructure.app/services/RuleService.cs b/src/chocolatey/infrastructure.app/services/RuleService.cs index 8478e8387..a0ab53dc5 100644 --- a/src/chocolatey/infrastructure.app/services/RuleService.cs +++ b/src/chocolatey/infrastructure.app/services/RuleService.cs @@ -104,11 +104,26 @@ private class RuleIdEqualityComparer : IEqualityComparer { public bool Equals(ImmutableRule x, ImmutableRule y) { - return ReferenceEquals(x, y) || x.Id.IsEqualTo(x.Id); + // When the id is empty on both classes, we need to compare + // using the summary to detect if the rules are unique or not. + if (string.IsNullOrEmpty(x.Id) && string.IsNullOrEmpty(y.Id)) + { + return x.Summary.IsEqualTo(y.Summary); + } + + return x.Id.IsEqualTo(y.Id); } public int GetHashCode(ImmutableRule obj) { + // When the id is empty, we need to compare + // using the summary to detect if the rules are unique or not. + + if (string.IsNullOrEmpty(obj.Id)) + { + return obj.Summary?.GetHashCode() ?? 0; + } + return obj.Id.GetHashCode(); } } From 4cd58cffade7c849a3d102bca4adb0c0e814460e Mon Sep 17 00:00:00 2001 From: Paul Broadwith Date: Tue, 11 Apr 2023 14:16:29 +0100 Subject: [PATCH 13/52] (#3108) Add PR example --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c442e3d46..ed80aaca6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing -The Chocolatey team has very explicit information here regarding the process for contributions, and we will be sticklers about the way you write your commit messages (yes, really), so to save yourself some rework, please make sure you read over this entire document prior to contributing. +The Chocolatey team has very explicit information here regarding the process for contributions, and we will be sticklers about the way you write your commit messages (yes, really), so to save yourself some rework, please make sure you read over this entire document prior to contributing. See this [Pull Request](https://github.com/chocolatey/choco/pull/3011) as an example of what we consider to be a great contribution. @@ -274,6 +274,8 @@ choco client properly. ### Submit Pull Request (PR) +See this [Pull Request](https://github.com/chocolatey/choco/pull/3011) as an example of what we consider to be a great contribution. + Prerequisites: - You are making commits in a feature branch. From 38d34289c1e2c503a9603aa5612932c736265d44 Mon Sep 17 00:00:00 2001 From: Josh King Date: Fri, 14 Apr 2023 14:01:23 +1200 Subject: [PATCH 14/52] (#3117) Add TC schedule trigger Adds the TeamCity schedule trigger feature and adjusts the Call Cake build step to adjust the testExecutionType based on how the build was triggered. --- .teamcity/settings.kts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.teamcity/settings.kts b/.teamcity/settings.kts index 9f7a2ae22..26f3b7e3b 100644 --- a/.teamcity/settings.kts +++ b/.teamcity/settings.kts @@ -5,6 +5,7 @@ import jetbrains.buildServer.configs.kotlin.v2019_2.Dependencies import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.pullRequests import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.finishBuildTrigger +import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot project { @@ -57,7 +58,10 @@ object Chocolatey : BuildType({ script { name = "Call Cake" - scriptContent = "call build.official.bat --verbosity=diagnostic --target=CI --testExecutionType=all --shouldRunOpenCover=false" + scriptContent = """ + IF "%teamcity.build.triggeredBy%" == "Schedule Trigger" (SET TestType=all) ELSE (SET TestType=unit) + call build.official.bat --verbosity=diagnostic --target=CI --testExecutionType=%%TestType%% --shouldRunOpenCover=false + """.trimIndent() } } @@ -65,6 +69,17 @@ object Chocolatey : BuildType({ vcs { branchFilter = "" } + schedule { + schedulingPolicy = daily { + hour = 2 + minute = 0 + } + branchFilter = """ + +: + """.trimIndent() + triggerBuild = always() + withPendingChangesOnly = false + } } features { From a89f12bbcf372fcebc51c1de5765b8ce74bffc76 Mon Sep 17 00:00:00 2001 From: Josh King Date: Fri, 14 Apr 2023 14:09:06 +1200 Subject: [PATCH 15/52] (#3117) Run unit tests only on push and PR Change the push and pull_request GitHub workflow to only run unit tests. There is a scheduled workflow already which runs all tests. --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6c2aa1602..c48f7af96 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: - name: Build with Mono run: | chmod +x build.sh - $GITHUB_WORKSPACE//build.sh --verbosity=diagnostic --target=CI --testExecutionType=all + $GITHUB_WORKSPACE//build.sh --verbosity=diagnostic --target=CI --testExecutionType=unit - name: Upload Ubuntu build results uses: actions/upload-artifact@v3 # Always upload build results @@ -49,7 +49,7 @@ jobs: path: tools key: ${{ runner.os }}-tools-${{ hashFiles('recipe.cake') }} - name: Build with .Net Framework - run: ./build.ps1 --verbosity=diagnostic --target=CI --testExecutionType=all --shouldRunOpenCover=false + run: ./build.ps1 --verbosity=diagnostic --target=CI --testExecutionType=unit --shouldRunOpenCover=false - name: Upload Windows build results uses: actions/upload-artifact@v3 # Always upload build results @@ -88,7 +88,7 @@ jobs: - name: Build with Mono run: | chmod +x build.sh - $GITHUB_WORKSPACE//build.sh --verbosity=diagnostic --target=CI --testExecutionType=all + $GITHUB_WORKSPACE//build.sh --verbosity=diagnostic --target=CI --testExecutionType=unit - name: Upload MacOS build results uses: actions/upload-artifact@v3 # Always upload build results From f6d4edb3378b6177d62fb62c1e0c78ee40eac7ea Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Thu, 8 Jun 2023 14:16:26 +0200 Subject: [PATCH 16/52] (#3190) Fix threshold warning missing on multi-source There was a threshold warning added to Chocolatey CLI v2.0.0 that would warn users about searches issued when one of the sources used has equal or more packages available than what the threshold is set to. Unfortunately this was only working when a single source was being used in Chocolatey CLI v2.0.0. The changes in this commit makes the necessary changes to have this functionality work as expected again for multiple sources. --- .../scenarios/SearchScenarios.cs | 51 +++++++++++++++++++ .../infrastructure.app/nuget/NugetList.cs | 4 +- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs b/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs index 4ca26e3f2..22cd4b640 100644 --- a/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs +++ b/src/chocolatey.tests.integration/scenarios/SearchScenarios.cs @@ -24,6 +24,7 @@ namespace chocolatey.tests.integration.scenarios using NuGet.Configuration; using NUnit.Framework; using FluentAssertions; + using System.IO; public class SearchScenarios { @@ -571,6 +572,56 @@ public void Should_find_all_non_prerelease_versions_in_descending_order() } } + public class WhenSearchingForAPackageWithPageSizeAndMultipleSources : ScenariosBase + { + public override void Context() + { + Configuration = Scenario.search(); + Scenario.reset(Configuration); + Scenario.add_packages_to_source_location(Configuration, "upgradepackage*" + NuGetConstants.PackageExtension); + Scenario.add_packages_to_source_location(Configuration, "installpackage*" + NuGetConstants.PackageExtension); + Scenario.add_packages_to_source_location(Configuration, "isexactversiondependency*" + NuGetConstants.PackageExtension); + var secondSource = Path.Combine(Scenario.get_top_level(), "infrastructure"); + Configuration.Sources = Configuration.Sources + ";" + secondSource; + Service = NUnitSetup.Container.GetInstance(); + + Configuration.ListCommand.PageSize = 2; + Configuration.ListCommand.ExplicitPageSize = true; + Configuration.Input = Configuration.PackageNames = string.Empty; + } + + public override void Because() + { + MockLogger.Reset(); + Results = Service.List(Configuration).ToList(); + } + + [Fact] + public void ShouldOutputWarningAboutThresholdBeingReached() + { + MockLogger.Messages.Should() + .ContainKey(LogLevel.Warn.ToString()) + .WhoseValue.Should().ContainSingle(m => m == "The threshold of 2 packages per source has been met. Please refine your search, or specify a page to find any more results."); + } + + [Fact] + public void ShouldListExpectedPackagesFoundOnSource() + { + MockLogger.Messages.Should() + .ContainKey(LogLevel.Info.ToString()) + .WhoseValue.Should() + .ContainInOrder( + "installpackage 1.0.0", + "isexactversiondependency 2.0.0") + .And.NotContain(new[] + { + "installpackage 0.9.9", + "isexactversiondependency 1.0.0", + "upgradepackage 1.1.0", + }); + } + } + public class When_searching_for_all_packages_including_prerelease_with_exact_id : ScenariosBase { public override void Context() diff --git a/src/chocolatey/infrastructure.app/nuget/NugetList.cs b/src/chocolatey/infrastructure.app/nuget/NugetList.cs index 6963e7d06..7ea3957df 100644 --- a/src/chocolatey/infrastructure.app/nuget/NugetList.cs +++ b/src/chocolatey/infrastructure.app/nuget/NugetList.cs @@ -165,8 +165,8 @@ private async static Task> SearchPackagesAsyn latestResults.AddRange(partResults); } while (partResults.Count >= takeNumber && skipNumber < totalToGet); - ThresholdHit = perSourceThresholdLimit <= 0; - LowerThresholdHit = perSourceThresholdMinLimit <= 0; + ThresholdHit = ThresholdHit || perSourceThresholdLimit <= 0; + LowerThresholdHit = LowerThresholdHit || perSourceThresholdMinLimit <= 0; if (configuration.AllVersions) { From 417e2f94cff35e59943ee0bdef4d26f25cde577b Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Fri, 9 Jun 2023 18:38:12 +0200 Subject: [PATCH 17/52] (maint) Reset paging configuration variables When running integration tests the configuration items that are used to determine paging was never reset as part of getting the baseline configuration. This caused multiple tests to fail when the new test that explicitly tests using paging was added. The changes here makes the necessary changes to the baseline configuration to set the default values to prevent other tests to be affected by this change. --- src/chocolatey.tests.integration/Scenario.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/chocolatey.tests.integration/Scenario.cs b/src/chocolatey.tests.integration/Scenario.cs index 53a17c11c..14f447ef3 100644 --- a/src/chocolatey.tests.integration/Scenario.cs +++ b/src/chocolatey.tests.integration/Scenario.cs @@ -319,6 +319,8 @@ private static ChocolateyConfiguration baseline_configuration() config.PinCommand.Name = string.Empty; config.PinCommand.Command = PinCommandType.Unknown; config.ListCommand.IdOnly = false; + config.ListCommand.PageSize = 25; + config.ListCommand.ExplicitPageSize = false; config.MachineSources.Clear(); return config; From 917471ca400500f410a6adc8a4413df0ee659f22 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Tue, 13 Jun 2023 16:23:21 +0100 Subject: [PATCH 18/52] (maint) Update to latest Chocolatey.NuGet.Client Start using 3.3.0, which includes a fix for a bug that was introduced with regard to long file paths when doing oData queries, and caching of those results. In addition, a change was made to allow overridding of how proxy configuration is done within choco.exe, to allow full support for all proxy mechanisms. --- .../chocolatey.tests.integration.csproj | 12 ++++----- .../packages.config | 12 ++++----- src/chocolatey.tests/chocolatey.tests.csproj | 26 +++++++++---------- src/chocolatey.tests/packages.config | 26 +++++++++---------- src/chocolatey/chocolatey.csproj | 26 +++++++++---------- src/chocolatey/packages.config | 26 +++++++++---------- 6 files changed, 64 insertions(+), 64 deletions(-) diff --git a/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj b/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj index c53a33df8..e1e64db30 100644 --- a/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj +++ b/src/chocolatey.tests.integration/chocolatey.tests.integration.csproj @@ -80,22 +80,22 @@ - ..\packages\Chocolatey.NuGet.Common.3.2.0\lib\net472\Chocolatey.NuGet.Common.dll + ..\packages\Chocolatey.NuGet.Common.3.3.0\lib\net472\Chocolatey.NuGet.Common.dll - ..\packages\Chocolatey.NuGet.Configuration.3.2.0\lib\net472\Chocolatey.NuGet.Configuration.dll + ..\packages\Chocolatey.NuGet.Configuration.3.3.0\lib\net472\Chocolatey.NuGet.Configuration.dll - ..\packages\Chocolatey.NuGet.Frameworks.3.2.0\lib\net472\Chocolatey.NuGet.Frameworks.dll + ..\packages\Chocolatey.NuGet.Frameworks.3.3.0\lib\net472\Chocolatey.NuGet.Frameworks.dll - ..\packages\Chocolatey.NuGet.Packaging.3.2.0\lib\net472\Chocolatey.NuGet.Packaging.dll + ..\packages\Chocolatey.NuGet.Packaging.3.3.0\lib\net472\Chocolatey.NuGet.Packaging.dll - ..\packages\Chocolatey.NuGet.Protocol.3.2.0\lib\net472\Chocolatey.NuGet.Protocol.dll + ..\packages\Chocolatey.NuGet.Protocol.3.3.0\lib\net472\Chocolatey.NuGet.Protocol.dll - ..\packages\Chocolatey.NuGet.Versioning.3.2.0\lib\net472\Chocolatey.NuGet.Versioning.dll + ..\packages\Chocolatey.NuGet.Versioning.3.3.0\lib\net472\Chocolatey.NuGet.Versioning.dll ..\packages\FluentAssertions.6.11.0\lib\net47\FluentAssertions.dll diff --git a/src/chocolatey.tests.integration/packages.config b/src/chocolatey.tests.integration/packages.config index 36f2e7b98..c7cf5b6d9 100644 --- a/src/chocolatey.tests.integration/packages.config +++ b/src/chocolatey.tests.integration/packages.config @@ -1,11 +1,11 @@  - - - - - - + + + + + + diff --git a/src/chocolatey.tests/chocolatey.tests.csproj b/src/chocolatey.tests/chocolatey.tests.csproj index e37e7d021..345b04c20 100644 --- a/src/chocolatey.tests/chocolatey.tests.csproj +++ b/src/chocolatey.tests/chocolatey.tests.csproj @@ -79,43 +79,43 @@ - ..\packages\Chocolatey.NuGet.Commands.3.2.0\lib\net472\Chocolatey.NuGet.Commands.dll + ..\packages\Chocolatey.NuGet.Commands.3.3.0\lib\net472\Chocolatey.NuGet.Commands.dll - ..\packages\Chocolatey.NuGet.Common.3.2.0\lib\net472\Chocolatey.NuGet.Common.dll + ..\packages\Chocolatey.NuGet.Common.3.3.0\lib\net472\Chocolatey.NuGet.Common.dll - ..\packages\Chocolatey.NuGet.Configuration.3.2.0\lib\net472\Chocolatey.NuGet.Configuration.dll + ..\packages\Chocolatey.NuGet.Configuration.3.3.0\lib\net472\Chocolatey.NuGet.Configuration.dll - ..\packages\Chocolatey.NuGet.Credentials.3.2.0\lib\net472\Chocolatey.NuGet.Credentials.dll + ..\packages\Chocolatey.NuGet.Credentials.3.3.0\lib\net472\Chocolatey.NuGet.Credentials.dll - ..\packages\Chocolatey.NuGet.DependencyResolver.Core.3.2.0\lib\net472\Chocolatey.NuGet.DependencyResolver.Core.dll + ..\packages\Chocolatey.NuGet.DependencyResolver.Core.3.3.0\lib\net472\Chocolatey.NuGet.DependencyResolver.Core.dll - ..\packages\Chocolatey.NuGet.Frameworks.3.2.0\lib\net472\Chocolatey.NuGet.Frameworks.dll + ..\packages\Chocolatey.NuGet.Frameworks.3.3.0\lib\net472\Chocolatey.NuGet.Frameworks.dll - ..\packages\Chocolatey.NuGet.LibraryModel.3.2.0\lib\net472\Chocolatey.NuGet.LibraryModel.dll + ..\packages\Chocolatey.NuGet.LibraryModel.3.3.0\lib\net472\Chocolatey.NuGet.LibraryModel.dll - ..\packages\Chocolatey.NuGet.PackageManagement.3.2.0\lib\net472\Chocolatey.NuGet.PackageManagement.dll + ..\packages\Chocolatey.NuGet.PackageManagement.3.3.0\lib\net472\Chocolatey.NuGet.PackageManagement.dll - ..\packages\Chocolatey.NuGet.Packaging.3.2.0\lib\net472\Chocolatey.NuGet.Packaging.dll + ..\packages\Chocolatey.NuGet.Packaging.3.3.0\lib\net472\Chocolatey.NuGet.Packaging.dll - ..\packages\Chocolatey.NuGet.ProjectModel.3.2.0\lib\net472\Chocolatey.NuGet.ProjectModel.dll + ..\packages\Chocolatey.NuGet.ProjectModel.3.3.0\lib\net472\Chocolatey.NuGet.ProjectModel.dll - ..\packages\Chocolatey.NuGet.Protocol.3.2.0\lib\net472\Chocolatey.NuGet.Protocol.dll + ..\packages\Chocolatey.NuGet.Protocol.3.3.0\lib\net472\Chocolatey.NuGet.Protocol.dll - ..\packages\Chocolatey.NuGet.Resolver.3.2.0\lib\net472\Chocolatey.NuGet.Resolver.dll + ..\packages\Chocolatey.NuGet.Resolver.3.3.0\lib\net472\Chocolatey.NuGet.Resolver.dll - ..\packages\Chocolatey.NuGet.Versioning.3.2.0\lib\net472\Chocolatey.NuGet.Versioning.dll + ..\packages\Chocolatey.NuGet.Versioning.3.3.0\lib\net472\Chocolatey.NuGet.Versioning.dll ..\packages\FluentAssertions.6.11.0\lib\net47\FluentAssertions.dll diff --git a/src/chocolatey.tests/packages.config b/src/chocolatey.tests/packages.config index e86311bb5..a311d919f 100644 --- a/src/chocolatey.tests/packages.config +++ b/src/chocolatey.tests/packages.config @@ -1,18 +1,18 @@  - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/src/chocolatey/chocolatey.csproj b/src/chocolatey/chocolatey.csproj index 930bb5524..0e6d21aca 100644 --- a/src/chocolatey/chocolatey.csproj +++ b/src/chocolatey/chocolatey.csproj @@ -103,43 +103,43 @@ ..\packages\AlphaFS.2.1.3\lib\net40\AlphaFS.dll - ..\packages\Chocolatey.NuGet.Commands.3.2.0\lib\net472\Chocolatey.NuGet.Commands.dll + ..\packages\Chocolatey.NuGet.Commands.3.3.0\lib\net472\Chocolatey.NuGet.Commands.dll - ..\packages\Chocolatey.NuGet.Common.3.2.0\lib\net472\Chocolatey.NuGet.Common.dll + ..\packages\Chocolatey.NuGet.Common.3.3.0\lib\net472\Chocolatey.NuGet.Common.dll - ..\packages\Chocolatey.NuGet.Configuration.3.2.0\lib\net472\Chocolatey.NuGet.Configuration.dll + ..\packages\Chocolatey.NuGet.Configuration.3.3.0\lib\net472\Chocolatey.NuGet.Configuration.dll - ..\packages\Chocolatey.NuGet.Credentials.3.2.0\lib\net472\Chocolatey.NuGet.Credentials.dll + ..\packages\Chocolatey.NuGet.Credentials.3.3.0\lib\net472\Chocolatey.NuGet.Credentials.dll - ..\packages\Chocolatey.NuGet.DependencyResolver.Core.3.2.0\lib\net472\Chocolatey.NuGet.DependencyResolver.Core.dll + ..\packages\Chocolatey.NuGet.DependencyResolver.Core.3.3.0\lib\net472\Chocolatey.NuGet.DependencyResolver.Core.dll - ..\packages\Chocolatey.NuGet.Frameworks.3.2.0\lib\net472\Chocolatey.NuGet.Frameworks.dll + ..\packages\Chocolatey.NuGet.Frameworks.3.3.0\lib\net472\Chocolatey.NuGet.Frameworks.dll - ..\packages\Chocolatey.NuGet.LibraryModel.3.2.0\lib\net472\Chocolatey.NuGet.LibraryModel.dll + ..\packages\Chocolatey.NuGet.LibraryModel.3.3.0\lib\net472\Chocolatey.NuGet.LibraryModel.dll - ..\packages\Chocolatey.NuGet.PackageManagement.3.2.0\lib\net472\Chocolatey.NuGet.PackageManagement.dll + ..\packages\Chocolatey.NuGet.PackageManagement.3.3.0\lib\net472\Chocolatey.NuGet.PackageManagement.dll - ..\packages\Chocolatey.NuGet.Packaging.3.2.0\lib\net472\Chocolatey.NuGet.Packaging.dll + ..\packages\Chocolatey.NuGet.Packaging.3.3.0\lib\net472\Chocolatey.NuGet.Packaging.dll - ..\packages\Chocolatey.NuGet.ProjectModel.3.2.0\lib\net472\Chocolatey.NuGet.ProjectModel.dll + ..\packages\Chocolatey.NuGet.ProjectModel.3.3.0\lib\net472\Chocolatey.NuGet.ProjectModel.dll - ..\packages\Chocolatey.NuGet.Protocol.3.2.0\lib\net472\Chocolatey.NuGet.Protocol.dll + ..\packages\Chocolatey.NuGet.Protocol.3.3.0\lib\net472\Chocolatey.NuGet.Protocol.dll - ..\packages\Chocolatey.NuGet.Resolver.3.2.0\lib\net472\Chocolatey.NuGet.Resolver.dll + ..\packages\Chocolatey.NuGet.Resolver.3.3.0\lib\net472\Chocolatey.NuGet.Resolver.dll - ..\packages\Chocolatey.NuGet.Versioning.3.2.0\lib\net472\Chocolatey.NuGet.Versioning.dll + ..\packages\Chocolatey.NuGet.Versioning.3.3.0\lib\net472\Chocolatey.NuGet.Versioning.dll ..\packages\log4net.2.0.12\lib\net45\log4net.dll diff --git a/src/chocolatey/packages.config b/src/chocolatey/packages.config index 89046d2cd..9dee77f61 100644 --- a/src/chocolatey/packages.config +++ b/src/chocolatey/packages.config @@ -1,19 +1,19 @@  - - - - - - - - - - - - - + + + + + + + + + + + + + From d0aa020fcb0faf901cf3b7f7dd71f3eb8f5b59e7 Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Mon, 5 Jun 2023 14:30:44 -0700 Subject: [PATCH 19/52] (#3181) Remove registry check for proxy settings We were checking the registry for proxy settings. Instead of checking here and ignoring other settings, we can (and should) let NuGet.Client poll the System proxy configuration. This commit removes the checking in the registry for these settings as they're no longer necessary. --- .../builders/ConfigurationBuilder.cs | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs b/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs index b0c88aa11..c7957457d 100644 --- a/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs +++ b/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs @@ -89,7 +89,6 @@ public static void SetupConfiguration(IList args, ChocolateyConfiguratio SetGlobalOptions(args, config, container); SetEnvironmentOptions(config); EnvironmentSettings.SetEnvironmentVariables(config); - SetProxyOptions(config, container); // must be done last for overrides SetLicensedOptions(config, license, configFileSettings); // save all changes if there are any @@ -464,53 +463,6 @@ private static void SetGlobalOptions(IList args, ChocolateyConfiguration }); } - private static void SetProxyOptions(ChocolateyConfiguration config, Container container) - { - // Evaluation order of Proxy settings: System Set -> Environment Variable Set -> Chocolatey Configuration File Set -> CLI Passed in Argument - var proxyAlreadySet = !string.IsNullOrWhiteSpace(config.Proxy.Location); - var onWindows = Platform.GetPlatform() == PlatformType.Windows; - - // Only Windows has a registry provider, if it's already set, or we're not on Windows we don't need to continue. - if (proxyAlreadySet || !onWindows) - { - return; - } - - // We don't yet have a Proxy Location, check if the system has one configured in the registry - var registryService = container.GetInstance(); - var internetSettingsRegKey = registryService.GetKey(RegistryHive.CurrentUser, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"); - - if (!internetSettingsRegKey.GetValue("ProxyEnable").ToStringSafe().IsEqualTo("1")) - { - return; - } - - var proxySetting = internetSettingsRegKey.GetValue("ProxyServer").ToStringSafe(); - - if (string.IsNullOrWhiteSpace(proxySetting)) - { - return; - } - - if (proxySetting.IndexOf(';') != -1) - { - var allProxies = proxySetting.Split(';'); - proxySetting = allProxies.FirstOrDefault(s => s.TrimSafe().StartsWith("https=")); - - if (string.IsNullOrWhiteSpace(proxySetting)) - { - proxySetting = allProxies.FirstOrDefault(s => s.TrimSafe().StartsWith("http=")); - } - } - - if (proxySetting?.IndexOf('=') != -1 && !proxySetting.StartsWith("http")) - { - return; - } - - config.Proxy.Location = proxySetting.Split('=').LastOrDefault(); - } - private static void SetEnvironmentOptions(ChocolateyConfiguration config) { config.Information.PlatformType = Platform.GetPlatform(); From 236f6852650c8969b624c111892e76682a453647 Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Mon, 5 Jun 2023 14:32:11 -0700 Subject: [PATCH 20/52] (#3181) Override NuGet.Client proxy with null Previously we passed a new WebProxy to override the NuGet.Client proxy. This commit changes that to pass in a null so that NuGet.Client can know to check the system proxy settings instead. --- src/chocolatey/infrastructure.app/nuget/NugetCommon.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs b/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs index 9e863e384..05f2f41e0 100644 --- a/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs +++ b/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs @@ -124,7 +124,10 @@ public static IEnumerable GetRemoteRepositories(ChocolateyConf } else { - ProxyCache.Instance.Override(new System.Net.WebProxy()); + // We need to override the proxy so that we don't use the NuGet configuration. + // We must however also be able to use the system proxy. + // Our changes to ProxyCache test for a null overridden proxy and get the system proxy if it's null. + ProxyCache.Instance.Override(proxy: null); } IEnumerable sources = configuration.Sources.ToStringSafe().Split(new[] { ";", "," }, StringSplitOptions.RemoveEmptyEntries); From b08310da6f62b1f9726a8f898a667157fc6a739a Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Wed, 7 Jun 2023 16:17:02 -0700 Subject: [PATCH 21/52] (#3181) Add Pester Tests of the Web cmdlets --- tests/chocolatey-tests/chocolatey.Tests.ps1 | 4 +- .../commands/choco-install.Tests.ps1 | 57 +++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/tests/chocolatey-tests/chocolatey.Tests.ps1 b/tests/chocolatey-tests/chocolatey.Tests.ps1 index 3e73940b1..ee1a485d6 100644 --- a/tests/chocolatey-tests/chocolatey.Tests.ps1 +++ b/tests/chocolatey-tests/chocolatey.Tests.ps1 @@ -170,7 +170,9 @@ Describe "Ensuring Chocolatey is correctly installed" -Tag Environment, Chocolat # These tests are not a true test of PowerShell v2 compatibility as -Version 2 does not guarantee that things run exactly as in a PowerShell 2 instance, but it is as close as we can get in a testing environment. # Full proper testing on v2 would require a VM with only v2 installed. # This is skipped when not run in CI because it modifies the local system. - Context "PowerShell v2 compatibility" -Skip:(-not $env:TEST_KITCHEN) { + # These are skipped on Proxy tests because the proxy server we use doesn't allow + # the Windows updates access this needs to install PowerShell 2 support + Context "PowerShell v2 compatibility" -Skip:(-not $env:TEST_KITCHEN) -Tag ProxySkip { BeforeAll { # TODO: This doesn't work on client OSes (might be Install-WindowsOptionalFeature). Make sure this works on both server and client. Install-WindowsFeature powershell-v2 diff --git a/tests/chocolatey-tests/commands/choco-install.Tests.ps1 b/tests/chocolatey-tests/commands/choco-install.Tests.ps1 index 14190788b..f13022d43 100644 --- a/tests/chocolatey-tests/commands/choco-install.Tests.ps1 +++ b/tests/chocolatey-tests/commands/choco-install.Tests.ps1 @@ -1806,6 +1806,63 @@ To install a local, or remote file, you may use: } } + # Tagged as Internal since this package is only available internally and downloads from internal infrastructure. + Context 'Installing package with Open Source Get-ChocolateyWebFile, Get-WebFileName and Get-WebHeaders' -Tag Internal { + BeforeAll { + $paths = New-ChocolateyInstallSnapshot + + # Cache directory is set here to prevent assertion failures + $Output = Invoke-Choco install get-chocolateywebfile "--cache-location=$($paths.PackagesPath)" --confirm + } + + AfterAll { + $null = Invoke-Choco uninstall get-chocolateywebfile --confirm + } + + It 'Exits with Success (0)' { + $Output.ExitCode | Should -Be 0 -Because $Output.String + } + + It 'Runs under background Service' -Tag Background { + $Output.Lines | Should -Contain 'Running in background mode' -Because $Output.String + } + + It 'Outputs name of remote file' { + $Output.Lines | Should -Contain 'FileName: ChocolateyGUI.msi' -Because $Output.String + } + + # We only get an output of System.Collections.Hashtable here, + # but that is enough for us to assert against the call to + # Get-WebHeaders + It 'Outputs information from web headers' { + $Output.Lines | Should -Contain 'System.Collections.Hashtable' -Because $Output.String + } + + It 'Outputs downloading software' { + $Output.Lines | Should -Contain 'Downloading get-chocolateywebfile' -Because $Output.String + } + + It 'Outputs download completed' { + $Output.Lines | Should -Contain "Download of ChocolateyGUI.msi (16.23 MB) completed." -Because $Output.String + } + + It 'Outputs path to msi executable' { + $Output.Lines | Should -Contain "Path: $env:ChocolateyInstall\lib\get-chocolateywebfile\tools\ChocolateyGUI.msi" -Because $Output.String + } + + It 'Outputs installing msi executable' { + $Output.Lines | Should -Contain 'Installing get-chocolateywebfile...' -Because $Output.String + } + + It 'Outputs installation was successful' { + $Output.Lines | Should -Contain 'get-chocolateywebfile has been installed.' -Because $Output.String + } + + It 'Installs software to expected directory' { + "${env:ProgramFiles(x86)}\Chocolatey GUI\ChocolateyGui.exe" | Should -Exist + } + } + # This needs to be the last test in this block, to ensure NuGet configurations aren't being created. # Any tests after this block are expected to generate the configuration as they're explicitly using the NuGet CLI Test-NuGetPaths From b9ed3c109100e57f432b63aa528c96a46832a109 Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Tue, 13 Jun 2023 08:59:30 -0700 Subject: [PATCH 22/52] (maint) Tag get-chocolateywebfile tests fossonly Mark these tests as FossOnly for now as there is some differences with licensed extension that we need to resolve. --- tests/chocolatey-tests/commands/choco-install.Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/chocolatey-tests/commands/choco-install.Tests.ps1 b/tests/chocolatey-tests/commands/choco-install.Tests.ps1 index f13022d43..e0664cff3 100644 --- a/tests/chocolatey-tests/commands/choco-install.Tests.ps1 +++ b/tests/chocolatey-tests/commands/choco-install.Tests.ps1 @@ -1807,7 +1807,7 @@ To install a local, or remote file, you may use: } # Tagged as Internal since this package is only available internally and downloads from internal infrastructure. - Context 'Installing package with Open Source Get-ChocolateyWebFile, Get-WebFileName and Get-WebHeaders' -Tag Internal { + Context 'Installing package with Open Source Get-ChocolateyWebFile, Get-WebFileName and Get-WebHeaders' -Tag Internal, FossOnly { BeforeAll { $paths = New-ChocolateyInstallSnapshot From 661464c2198003b2e2ab4345fd11765e665301f3 Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Tue, 13 Jun 2023 12:17:19 -0700 Subject: [PATCH 23/52] (#3181) Remove System proxy pester tests These tests now fail because we're not reading the configuration to get the information, and so it's not in the config object that these tests can see. The system proxy is still tested successfully through it's own Test Kitchen runs that configure the environment for having a proxy. --- .../chocolatey-tests/features/Proxy.Tests.ps1 | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/tests/chocolatey-tests/features/Proxy.Tests.ps1 b/tests/chocolatey-tests/features/Proxy.Tests.ps1 index 08926f0dc..d69bb7a49 100644 --- a/tests/chocolatey-tests/features/Proxy.Tests.ps1 +++ b/tests/chocolatey-tests/features/Proxy.Tests.ps1 @@ -221,11 +221,6 @@ Describe "Proxy configuration ()" -Tag Proxy, ProxySkip -ForEach $TestCase continue } - $ConfigurationsToTest.System { - $Output.String | Should -MatchExactly "Proxy\.Location='$SystemSet'" - continue - } - default { $Output.String | Should -Not -Match "Proxy\.Location" $Output.String | Should -Not -Match "Proxy\.BypassList" @@ -234,33 +229,3 @@ Describe "Proxy configuration ()" -Tag Proxy, ProxySkip -ForEach $TestCase } } } - -Describe "Multi-Protocol Proxy configuration" -Tag Proxy, ProxySkip -Skip:(-not $env:TEST_KITCHEN) { - BeforeAll { - Initialize-ChocolateyTestInstall - New-ChocolateyInstallSnapshot - $arguments = $null - - $SystemSet = "SystemSetProxy" - Set-ItemProperty -Path 'HKCU:/Software/Microsoft/Windows/CurrentVersion/Internet Settings' -Name ProxyServer -Value "ftp=something;socks=another" - Set-ItemProperty -Path 'HKCU:/Software/Microsoft/Windows/CurrentVersion/Internet Settings' -Name ProxyEnable -Value 1 - } - - AfterAll { - Remove-ChocolateyTestInstall - Remove-ItemProperty -Path 'HKCU:/Software/Microsoft/Windows/CurrentVersion/Internet Settings' -Name ProxyServer -ErrorAction Ignore - Remove-ItemProperty -Path 'HKCU:/Software/Microsoft/Windows/CurrentVersion/Internet Settings' -Name ProxyEnable -ErrorAction Ignore - $env:https_proxy = $null - } - - Context "Configured for command ()" -ForEach $CommandsToTest { - BeforeAll { - $Output = Invoke-Choco $Command @arguments @ExtraArguments --debug --verbose --noop - } - - It "Should output the correct Proxy setting" { - $Output.String | Should -Not -MatchExactly "Proxy\.Location='$SystemSet'" - $Output.String | Should -Not -MatchExactly "Proxy\.Location" - } - } -} From 3d42e33395e7445997d459d9ee6a76a9dc19d68c Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Mon, 12 Jun 2023 18:32:35 +0200 Subject: [PATCH 24/52] (#3193) Add ability to ignore current http cache The changes here will add a global option that can be used by the user to ignore any existing http cache that has been created prior to the execution of the current command. Using the option will still create a new cache for the running execution and reuse that created cache in the current context, and can be reused normally when not using the argument in the future. --- .../helpers/ChocolateyTabExpansion.ps1 | 2 +- .../builders/ConfigurationBuilder.cs | 9 ++++++++ .../configuration/ChocolateyConfiguration.cs | 10 +++++++++ .../nuget/ChocolateySourceCacheContext.cs | 21 ++++++++++++------- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 index 9aae203a2..c9e7c4ccd 100644 --- a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 +++ b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 @@ -38,7 +38,7 @@ function script:chocoCmdOperations($commands, $command, $filter, $currentArgumen $script:chocoCommands = @('-?','search','list','info','install','outdated','upgrade','uninstall','new','pack','push','-h','--help','pin','source','config','feature','apikey','export','help','template','--version') # ensure these all have a space to start, or they will cause issues -$allcommands = " --debug --verbose --trace --noop --help -? --online --accept-license --confirm --limit-output --no-progress --log-file='' --execution-timeout='' --cache-location='' --proxy='' --proxy-user='' --proxy-password='' --proxy-bypass-list='' --proxy-bypass-on-local --force --no-color --skip-compatibility-checks" +$allcommands = " --debug --verbose --trace --noop --help -? --online --accept-license --confirm --limit-output --no-progress --log-file='' --execution-timeout='' --cache-location='' --proxy='' --proxy-user='' --proxy-password='' --proxy-bypass-list='' --proxy-bypass-on-local --force --no-color --skip-compatibility-checks --ignore-http-cache" $commandOptions = @{ list = "--id-only --pre --exact --by-id-only --id-starts-with --detailed --prerelease --include-programs --source='' --page='' --page-size=''" diff --git a/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs b/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs index c7957457d..492561099 100644 --- a/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs +++ b/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs @@ -441,6 +441,15 @@ private static void SetGlobalOptions(IList args, ChocolateyConfiguration .Add("skipcompatibilitychecks|skip-compatibility-checks", "SkipCompatibilityChecks - Prevent warnings being shown before and after command execution when a runtime compatibility problem is found between the version of Chocolatey and the Chocolatey Licensed Extension. Available in 1.1.0+", option => config.DisableCompatibilityChecks = option != null) + .Add("ignore-http-cache", + "IgnoreHttpCache - Ignore any HTTP caches that have previously been created when querying sources, and create new caches. Available in 2.1.0+", + option => + { + if (option != null) + { + config.CacheExpirationInMinutes = -1; + } + }); ; }, (unparsedArgs) => diff --git a/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs b/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs index 69f38cbbb..88bdb785c 100644 --- a/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs +++ b/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs @@ -38,6 +38,7 @@ public ChocolateyConfiguration() RegularOutput = true; PromptForConfirmation = true; DisableCompatibilityChecks = false; + CacheExpirationInMinutes = 30; SourceType = SourceTypes.Normal; Information = new InformationCommandConfiguration(); Features = new FeaturesConfiguration(); @@ -340,6 +341,15 @@ private void AppendOutput(StringBuilder propertyValues, string append) public bool ApplyInstallArgumentsToDependencies { get; set; } public bool IgnoreDependencies { get; set; } + /// + /// Gets or sets the time before the cache is considered to have expired in minutes. + /// + /// + /// The cache expiration in minutes. + /// + /// specifying a negative number disables the caching completely. + public int CacheExpirationInMinutes { get; set; } + public bool AllowDowngrade { get; set; } public bool ForceDependencies { get; set; } public string DownloadChecksum { get; set; } diff --git a/src/chocolatey/infrastructure.app/nuget/ChocolateySourceCacheContext.cs b/src/chocolatey/infrastructure.app/nuget/ChocolateySourceCacheContext.cs index 251ed9e12..aa494477d 100644 --- a/src/chocolatey/infrastructure.app/nuget/ChocolateySourceCacheContext.cs +++ b/src/chocolatey/infrastructure.app/nuget/ChocolateySourceCacheContext.cs @@ -1,14 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace chocolatey.infrastructure.app.nuget +namespace chocolatey.infrastructure.app.nuget { + using System; using System.Threading; using Alphaleonis.Win32.Filesystem; - using configuration; + using chocolatey.infrastructure.app.configuration; using NuGet.Protocol.Core.Types; public class ChocolateySourceCacheContext : SourceCacheContext @@ -22,6 +17,16 @@ public class ChocolateySourceCacheContext : SourceCacheContext public ChocolateySourceCacheContext(ChocolateyConfiguration config) { _chocolateyCacheLocation = config.CacheLocation; + + if (config.CacheExpirationInMinutes <= 0) + { + MaxAge = DateTime.UtcNow; + RefreshMemoryCache = true; + } + else + { + MaxAge = DateTime.UtcNow.AddMinutes(-config.CacheExpirationInMinutes); + } } public override string GeneratedTempFolder From 3b6ff3a72b548169efc663b1cfae04b4ea5dc9e8 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Thu, 15 Jun 2023 13:55:38 +0100 Subject: [PATCH 25/52] (maint) Add version when option was added This was missed in the last release of Chocolatey CLI, and it is important information to have. --- .../infrastructure.app/configuration/ConfigurationOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chocolatey/infrastructure.app/configuration/ConfigurationOptions.cs b/src/chocolatey/infrastructure.app/configuration/ConfigurationOptions.cs index 8a19f00c1..8b13a07ff 100644 --- a/src/chocolatey/infrastructure.app/configuration/ConfigurationOptions.cs +++ b/src/chocolatey/infrastructure.app/configuration/ConfigurationOptions.cs @@ -79,7 +79,7 @@ public static OptionSet OptionSet "Prints out the help menu.", option => configuration.HelpRequested = option != null) .Add("online", - "Online - Open help for specified command in default browser application. This option only works when used in combintation with the -?/--help/-h option.", + "Online - Open help for specified command in default browser application. This option only works when used in combintation with the -?/--help/-h option. Available in 2.0.0+", option => configuration.ShowOnlineHelp = option != null); } From 82049aaf6145ef8c8148134393aeaa5b0ad33756 Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Thu, 15 Jun 2023 18:19:50 +0200 Subject: [PATCH 26/52] (maint) Add structure for outputting help This changes how the help output is implemented in Chocolatey CLI. It adds the handling of outputting the majority of the help output in the class called ChocolateyCommandBase that can be used to writing help documentation easier, and instead of thinking about the structure of the output instead needs to override specific methods to give the information that is needed. Some defaults are additionally handled as well to make common output be easier and more maintainable. --- src/chocolatey/chocolatey.csproj | 1 + .../attributes/CommandForAttribute.cs | 5 + .../commands/ChocolateyCommandBase.cs | 261 +++++++++++++++++- .../commands/ChocolateyInstallCommand.cs | 2 +- .../commands/ChocolateyUninstallCommand.cs | 2 +- .../commands/ChocolateyUpgradeCommand.cs | 2 +- .../commands/ExitCodeDescription.cs | 34 +++ 7 files changed, 297 insertions(+), 10 deletions(-) create mode 100644 src/chocolatey/infrastructure/commands/ExitCodeDescription.cs diff --git a/src/chocolatey/chocolatey.csproj b/src/chocolatey/chocolatey.csproj index 0e6d21aca..9b7d91d2f 100644 --- a/src/chocolatey/chocolatey.csproj +++ b/src/chocolatey/chocolatey.csproj @@ -238,6 +238,7 @@ + diff --git a/src/chocolatey/infrastructure.app/attributes/CommandForAttribute.cs b/src/chocolatey/infrastructure.app/attributes/CommandForAttribute.cs index da8c76914..927a10834 100644 --- a/src/chocolatey/infrastructure.app/attributes/CommandForAttribute.cs +++ b/src/chocolatey/infrastructure.app/attributes/CommandForAttribute.cs @@ -24,6 +24,11 @@ public class CommandForAttribute : Attribute public string CommandName { get; private set; } public string Description { get; private set; } + /// + /// Gets or sets the version a command was introduced in. + /// + public string Version { get; set; } + public CommandForAttribute(string commandName, string description) { CommandName = commandName; diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs index 1f757dbef..93a2e4987 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs @@ -13,16 +13,215 @@ // See the License for the specific language governing permissions and // limitations under the License. -using System.Collections.Generic; -using System.Linq; - namespace chocolatey.infrastructure.app.commands -{ +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Reflection; + using System.Text; + using chocolatey.infrastructure.app.attributes; + using chocolatey.infrastructure.app.configuration; + using chocolatey.infrastructure.commands; + using chocolatey.infrastructure.logging; + /// /// A base class for any Chocolatey commands which need to utilise shared logic. /// public abstract class ChocolateyCommandBase - { + { + public virtual void HelpMessage(ChocolateyConfiguration configuration) + { + var allCommandForAttributes = GetType().GetCustomAttributes().ToArray(); + var commandForAttribute = allCommandForAttributes.OrEmpty().FirstOrDefault(); + + if (commandForAttribute == null) + { + throw new ApplicationException("No command for attribute was found on the command class: {0}".FormatWith(GetType().Name)); + } + + this.Log().Info(ChocolateyLoggers.Important, "{0} Command", GetCommandName(commandForAttribute)); + + if (!string.IsNullOrEmpty(commandForAttribute.Version)) + { + this.Log().Info(@" +WARNING: {0}", GetCommandVersionWarning(commandForAttribute, configuration)); + } + + this.Log().Info(@" +{0} +", GetCommandDescription(commandForAttribute, configuration)); + + var commandUsages = GetCommandUsage(allCommandForAttributes, configuration).ToArray(); + + if (commandUsages.Length > 0) + { + this.Log().Info(ChocolateyLoggers.Important, @"Usage"); + this.Log().Info(string.Empty); + + foreach (var commandUsage in commandUsages) + { + this.Log().Info(" {0}", commandUsage); + } + + this.Log().Info(string.Empty); + } + + foreach (var note in GetCommandUsageNotes(configuration)) + { + this.Log().Info(@"NOTE: {0} +", note); + } + + var commandExamples = GetCommandExamples(allCommandForAttributes, configuration).ToArray(); + + if (commandExamples.Length > 0) + { + this.Log().Info(ChocolateyLoggers.Important, "Examples"); + this.Log().Info(string.Empty); + + foreach (var commandExample in commandExamples) + { + this.Log().Info(" {0}", commandExample); + } + + var exampleDescription = GetCommandExampleDescription(configuration); + + if (!string.IsNullOrEmpty(exampleDescription)) + { + this.Log().Info(string.Empty); + this.Log().Info(exampleDescription); + } + + this.Log().Info(@" +NOTE: See scripting in the command reference (`choco -?`) for how to + write proper scripts and integrations. +"); + } + + var normalExitCodes = GetNormalExitCodes(configuration).ToArray(); + var enhancedExitCodes = GetEnhancedExitCodes(configuration).ToArray(); + var additionalExitCodeDescription = GetAdditionalExitCodeDescription(configuration); + + if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0 || !string.IsNullOrEmpty(additionalExitCodeDescription)) + { + this.Log().Info(ChocolateyLoggers.Important, "Exit Codes"); + this.Log().Info(@" +Exit codes that normally result from running this command. +"); + } + + if (normalExitCodes.Length > 0) + { + this.Log().Info("Normal:"); + this.Log().Info(string.Empty); + OutputExitCodes(normalExitCodes); + this.Log().Info(string.Empty); + } + + if (enhancedExitCodes.Length > 0) + { + this.Log().Info("Enhanced:"); + this.Log().Info(string.Empty); + OutputExitCodes(enhancedExitCodes); + this.Log().Info(string.Empty); + } + + if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0) + { + this.Log().Info(@" +If you find other exit codes that we have not yet documented, please + file a ticket so we can document it at + {0}. + +", GetRepositoryIssueLink()); + } + + if (!string.IsNullOrEmpty(additionalExitCodeDescription)) + { + this.Log().Info(additionalExitCodeDescription); + this.Log().Info(string.Empty); + } + + var additionalHelpContent = GetAdditionalHelpContent(configuration); + + if (!string.IsNullOrEmpty(additionalHelpContent)) + { + this.Log().Info(additionalHelpContent); + this.Log().Info(string.Empty); + } + + this.Log().Info(ChocolateyLoggers.Important, "Options and Switches"); + + var optionsAndSwitchesContent = GetOptionsAndSwitchesDescription(configuration); + + if (!string.IsNullOrEmpty(optionsAndSwitchesContent)) + { + this.Log().Info(string.Empty); + this.Log().Info(optionsAndSwitchesContent); + } + } + + protected virtual string GetCommandDescription(CommandForAttribute attribute, ChocolateyConfiguration configuration) + { + return attribute.Description; + } + + protected virtual string GetCommandExampleDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + protected virtual IEnumerable GetCommandExamples(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) + { + foreach (var attribute in attributes) + { + yield return "choco {0}".FormatWith(attribute.CommandName); + } + } + + protected virtual string GetCommandName(CommandForAttribute attribute) + { + return char.ToUpperInvariant(attribute.CommandName[0]) + attribute.CommandName.Substring(1); + } + + protected virtual IEnumerable GetCommandUsage(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) + { + foreach (var attribute in attributes) + { + yield return "choco {0} [options/switches]".FormatWith(attribute.CommandName); + } + } + + protected virtual IEnumerable GetCommandUsageNotes(ChocolateyConfiguration configuration) + { + return Enumerable.Empty(); + } + + protected virtual string GetCommandVersionWarning(CommandForAttribute attribute, ChocolateyConfiguration configuration) + { + return "This command was introduced in Chocolatey CLI v{0}".FormatWith(attribute.Version); + } + + protected virtual IEnumerable GetEnhancedExitCodes(ChocolateyConfiguration configuration) + { + return Enumerable.Empty(); + } + + protected virtual IEnumerable GetNormalExitCodes(ChocolateyConfiguration configuration) + { + return new[] + { + new ExitCodeDescription("operation was successful, no issues detected", 0), + new ExitCodeDescription("an error has occurred", -1, 1) + }; + } + + protected virtual Uri GetRepositoryIssueLink() + { + return new Uri("https://github.com/chocolatey/choco/issues/new/choose"); + } + /// /// Emit a warning to the use if any of the options which are known to be deprecated are found in the . /// @@ -42,6 +241,54 @@ protected virtual void WarnForRemovedOptions(IEnumerable unparsedOptions this.Log().Warn("The {0} option is no longer supported.", removed); } } - } + } + + private string GetAdditionalExitCodeDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private string GetAdditionalHelpContent(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private string GetOptionsAndSwitchesDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private void OutputExitCodes(ExitCodeDescription[] normalExitCodes) + { + foreach (var exitCodeDescription in normalExitCodes) + { + var sb = new StringBuilder(" - "); + + for (var j = 0; j < exitCodeDescription.ExitCodes.Length; j++) + { + if (j > 0 && j + 1 == exitCodeDescription.ExitCodes.Length) + { + sb.Append(" or "); + } + else if (j > 0) + { + sb.Append(", "); + } + + sb.Append(exitCodeDescription.ExitCodes[j]); + } + + if (exitCodeDescription.ExitCodes.Length > 0) + { + sb.AppendFormat(": {0}", exitCodeDescription.Description); + } + else + { + sb.Append(exitCodeDescription.Description); + } + + this.Log().Info(sb.ToString()); + } + } } -} +} \ No newline at end of file diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyInstallCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyInstallCommand.cs index 23f10109c..78f78b978 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyInstallCommand.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyInstallCommand.cs @@ -254,7 +254,7 @@ public virtual void Validate(ChocolateyConfiguration configuration) } } - public virtual void HelpMessage(ChocolateyConfiguration configuration) + public override void HelpMessage(ChocolateyConfiguration configuration) { this.Log().Info(ChocolateyLoggers.Important, "Install Command"); this.Log().Info(@" diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyUninstallCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyUninstallCommand.cs index 44bb8c5c5..dc468bfb8 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyUninstallCommand.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyUninstallCommand.cs @@ -168,7 +168,7 @@ public virtual void Validate(ChocolateyConfiguration configuration) } } - public virtual void HelpMessage(ChocolateyConfiguration configuration) + public override void HelpMessage(ChocolateyConfiguration configuration) { this.Log().Info(ChocolateyLoggers.Important, "Uninstall Command"); this.Log().Info(@" diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyUpgradeCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyUpgradeCommand.cs index ec42a2cb7..8c8080d3b 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyUpgradeCommand.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyUpgradeCommand.cs @@ -285,7 +285,7 @@ public virtual void Validate(ChocolateyConfiguration configuration) } } - public virtual void HelpMessage(ChocolateyConfiguration configuration) + public override void HelpMessage(ChocolateyConfiguration configuration) { this.Log().Info(ChocolateyLoggers.Important, "Upgrade Command"); this.Log().Info(@" diff --git a/src/chocolatey/infrastructure/commands/ExitCodeDescription.cs b/src/chocolatey/infrastructure/commands/ExitCodeDescription.cs new file mode 100644 index 000000000..ff7c4072f --- /dev/null +++ b/src/chocolatey/infrastructure/commands/ExitCodeDescription.cs @@ -0,0 +1,34 @@ +// Copyright © 2023 Chocolatey Software, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace chocolatey.infrastructure.commands +{ + using System; + + public sealed class ExitCodeDescription + { + public ExitCodeDescription(string description, params int[] exitCodes) + { + // We use intern to save a bit of bytes so the same memory location + // is reused when possible. + Description = string.Intern(description); + ExitCodes = exitCodes; + } + + public string Description { get; } + + public int[] ExitCodes { get; } + } +} \ No newline at end of file From d64de0e9280e25a27dcdb34faa6b80f1e39e1b3d Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Thu, 15 Jun 2023 18:21:34 +0200 Subject: [PATCH 27/52] (maint) Add ability to display version on command The changes here allows the displaying of what version a command was implemented in more easily. THis gives more information to a user whether a command is available to them ore not when viewing the documentation on the website. --- .../infrastructure.app/commands/ChocolateyHelpCommand.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyHelpCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyHelpCommand.cs index 411688db7..221665768 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyHelpCommand.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyHelpCommand.cs @@ -89,7 +89,14 @@ public static void DisplayHelpMessage(Container container = null) return c.GetType().GetCustomAttributes(typeof(CommandForAttribute), false).Cast(); }).OrderBy(c => c.CommandName)) { - commandsLog.AppendFormat(" * {0} - {1}\n", command.CommandName, command.Description); + if (!string.IsNullOrEmpty(command.Version)) + { + commandsLog.AppendFormat(" * {0} - {1} (v{2}+)\n", command.CommandName, command.Description, command.Version); + } + else + { + commandsLog.AppendFormat(" * {0} - {1}\n", command.CommandName, command.Description); + } } "chocolatey".Log().Info(@"This is a listing of all of the different things you can pass to choco. From c21f51a244c7ce3022ececb0b988cc2af84895c6 Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Fri, 9 Jun 2023 12:53:43 +0200 Subject: [PATCH 28/52] (#3194) Add command to purge cached queries The changes in this commit adds a new command to Chocolatey CLI that allows the user to clear any cached queries that have been saved on their system. This will clear both system and user level caches when running as an administrator, and user level caches when running in a non-elevated context. Additionally, the ability to only remove expired caches is added as well as just listing how many items has been cached. --- GenerateDocs.ps1 | 1 + src/chocolatey.tests/TinySpec.cs | 9 + src/chocolatey.tests/chocolatey.tests.csproj | 1 + .../commands/ChocolateyCacheCommandSpecs.cs | 129 +++++ src/chocolatey/chocolatey.csproj | 4 +- .../commands/ChocolateyCacheCommand.cs | 314 +++++++++++ .../commands/ChocolateyCommandBase.cs | 502 +++++++++--------- .../configuration/ChocolateyConfiguration.cs | 28 +- .../domain/CacheCommandType.cs | 24 + 9 files changed, 757 insertions(+), 255 deletions(-) create mode 100644 src/chocolatey.tests/infrastructure.app/commands/ChocolateyCacheCommandSpecs.cs create mode 100644 src/chocolatey/infrastructure.app/commands/ChocolateyCacheCommand.cs create mode 100644 src/chocolatey/infrastructure.app/domain/CacheCommandType.cs diff --git a/GenerateDocs.ps1 b/GenerateDocs.ps1 index 4f35a9259..882e4db57 100644 --- a/GenerateDocs.ps1 +++ b/GenerateDocs.ps1 @@ -575,6 +575,7 @@ The following are experimental or use not recommended: $global:powerShellReferenceTOC | Out-File $fileName -Encoding UTF8 -Force Write-Host "Generating command reference markdown files" + Generate-CommandReference 'Cache' '5' Generate-CommandReference 'Config' '10' Generate-CommandReference 'Download' '20' Generate-CommandReference 'Export' '30' diff --git a/src/chocolatey.tests/TinySpec.cs b/src/chocolatey.tests/TinySpec.cs index 0b747d5e5..99fd0a4e0 100644 --- a/src/chocolatey.tests/TinySpec.cs +++ b/src/chocolatey.tests/TinySpec.cs @@ -113,6 +113,15 @@ public class FactAttribute : ObservationAttribute { } + [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] + public class InlineDataAttribute : TestCaseAttribute + { + public InlineDataAttribute(params object[] data) + : base(data) + { + } + } + public class ExplicitAttribute : NUnit.Framework.ExplicitAttribute { } diff --git a/src/chocolatey.tests/chocolatey.tests.csproj b/src/chocolatey.tests/chocolatey.tests.csproj index 345b04c20..6d9fc8960 100644 --- a/src/chocolatey.tests/chocolatey.tests.csproj +++ b/src/chocolatey.tests/chocolatey.tests.csproj @@ -164,6 +164,7 @@ + diff --git a/src/chocolatey.tests/infrastructure.app/commands/ChocolateyCacheCommandSpecs.cs b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyCacheCommandSpecs.cs new file mode 100644 index 000000000..93f683e1c --- /dev/null +++ b/src/chocolatey.tests/infrastructure.app/commands/ChocolateyCacheCommandSpecs.cs @@ -0,0 +1,129 @@ +namespace chocolatey.tests.infrastructure.app.commands +{ + using chocolatey.infrastructure.app.attributes; + using System.Collections.Generic; + using chocolatey.infrastructure.app.commands; + using chocolatey.infrastructure.app.configuration; + using chocolatey.infrastructure.filesystem; + using Moq; + using System.Reflection; + using System.Linq; + using FluentAssertions; + using chocolatey.infrastructure.commandline; + using chocolatey.infrastructure.app.domain; + using FluentAssertions.Execution; + + public class ChocolateyCacheCommandSpecs + { + [ConcernFor("cache")] + public abstract class ChocolateyCacheCommandSpecsBase : TinySpec + { + protected ChocolateyCacheCommand Command; + protected ChocolateyConfiguration Configuration = new ChocolateyConfiguration(); + protected Mock FileSystem = new Mock(); + + public override void Context() + { + Configuration.CommandName = "cache"; + Command = new ChocolateyCacheCommand(FileSystem.Object); + } + } + + public class WhenImplementingCommandFor : ChocolateyCacheCommandSpecsBase + { + private List _results; + + public override void Because() + { + _results = Command.GetType().GetCustomAttributes().ToList(); + } + + [Fact] + public void ShouldImplementCache() + { + _results.Should().AllSatisfy(c => c.CommandName.Should().Be("cache")); + } + + [Fact] + public void ShouldSetADescription() + { + _results.Should().AllSatisfy(c => c.Description.Should().NotBeNullOrEmpty()); + } + + [Fact] + public void ShouldSetVersionProperty() + { + _results.Should().AllSatisfy(c => c.Version.Should().Be("2.1.0")); + } + } + + public class WhenConfiguringTheArgumentParser : ChocolateyCacheCommandSpecsBase + { + private OptionSet _optionSet; + + public override void Context() + { + base.Context(); + _optionSet = new OptionSet(); + } + + public override void Because() + { + Command.ConfigureArgumentParser(_optionSet, Configuration); + } + + [Fact] + [InlineData("expired")] + public void ShouldAddOptionToOptionSet(string name) + { + _optionSet.Contains(name).Should().BeTrue("Option set should include the parameter {0}", name); + } + } + + public class WhenParsingAdditionalParameters : ChocolateyCacheCommandSpecsBase + { + public override void Because() + { + + } + + public override void BeforeEachSpec() + { + Configuration.CacheCommand.Command = CacheCommandType.Unknown; + MockLogger.Reset(); + } + + [Fact] + public void ShouldHaveSetCacheCommandTypeToListOnUnusedSubCommand() + { + Command.ParseAdditionalArguments(new List(), Configuration); + Configuration.CacheCommand.Command.Should().Be(CacheCommandType.List); + } + + [InlineData("list", CacheCommandType.List)] + [InlineData("remove", CacheCommandType.Remove)] + [InlineData("unknown", CacheCommandType.List)] + public void ShouldHaveSetCacheCommandTypeToListOnListSubCommand(string testArg, CacheCommandType expectedType) + { + var unparsedArgs = new[] { testArg }; + Command.ParseAdditionalArguments(unparsedArgs, Configuration); + Configuration.CacheCommand.Command.Should().Be(expectedType); + } + + [Fact] + public void ShouldHaveSetCacheCommandTypeToListOnUnknownSubCommand() + { + var unparsedArgs = new[] { "some-command" }; + + Command.ParseAdditionalArguments(unparsedArgs, Configuration); + + using (new AssertionScope()) + { + Configuration.CacheCommand.Command.Should().Be(CacheCommandType.List); + MockLogger.Messages.Should().ContainKey(LogLevel.Warn.ToString()) + .WhoseValue.Should().Contain("Unknown command 'some-command'. Setting to list."); + } + } + } + } +} \ No newline at end of file diff --git a/src/chocolatey/chocolatey.csproj b/src/chocolatey/chocolatey.csproj index 9b7d91d2f..cad4959a5 100644 --- a/src/chocolatey/chocolatey.csproj +++ b/src/chocolatey/chocolatey.csproj @@ -1,4 +1,4 @@ - + @@ -201,10 +201,12 @@ + + diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyCacheCommand.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyCacheCommand.cs new file mode 100644 index 000000000..f83b26c08 --- /dev/null +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyCacheCommand.cs @@ -0,0 +1,314 @@ +// Copyright © 2023 Chocolatey Software, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace chocolatey.infrastructure.app.commands +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using chocolatey.infrastructure.app.attributes; + using chocolatey.infrastructure.app.configuration; + using chocolatey.infrastructure.app.domain; + using chocolatey.infrastructure.app.nuget; + using chocolatey.infrastructure.commandline; + using chocolatey.infrastructure.commands; + using chocolatey.infrastructure.filesystem; + using chocolatey.infrastructure.logging; + + [CommandFor("cache", "Manage the local HTTP caches used to store queries", Version = "2.1.0")] + public class ChocolateyCacheCommand : ChocolateyCommandBase, ICommand + { + private readonly IFileSystem _fileSystem; + + public ChocolateyCacheCommand(IFileSystem fileSystem) + { + _fileSystem = fileSystem; + } + + public virtual void ConfigureArgumentParser(OptionSet optionSet, ChocolateyConfiguration configuration) + { + optionSet + .Add("expired", + "Expired - Remove cached items that have expired.", + option => configuration.CacheCommand.RemoveExpiredItemsOnly = option != null); + } + + public virtual void DryRun(ChocolateyConfiguration configuration) + { + Run(configuration); + } + + public virtual bool MayRequireAdminAccess() + { + // We will support cleaning the user cache directory without cleaning the system directory. + // As such it can be run without admin access. + return false; + } + + public virtual void ParseAdditionalArguments(IList unparsedArguments, ChocolateyConfiguration configuration) + { + CacheCommandType command; + + if (unparsedArguments.Count == 0) + { + command = CacheCommandType.List; + } + else if (!Enum.TryParse(unparsedArguments[0], true, out command) || command == CacheCommandType.Unknown) + { + this.Log().Warn("Unknown command '{0}'. Setting to list.", unparsedArguments[0]); + command = CacheCommandType.List; + } + + configuration.CacheCommand.Command = command; + } + + public virtual void Run(ChocolateyConfiguration config) + { + switch (config.CacheCommand.Command) + { + case CacheCommandType.List: + ListCacheStatistics(config); + break; + + case CacheCommandType.Remove: + RemoveCachedItems(config); + break; + } + } + + public virtual void Validate(ChocolateyConfiguration configuration) + { + // Nothing to validate + } + + protected void CleanCachedItemsInPath(ChocolateyConfiguration configuration, string cacheLocation) + { + if (configuration.Noop && configuration.CacheCommand.RemoveExpiredItemsOnly) + { + this.Log().Info("Would remove all files with the .dat extension older than 30 minutes in '{0}'.", cacheLocation); + + return; + } + else if (configuration.Noop) + { + this.Log().Info("Would remove all files with the .dat in '{0}'.", cacheLocation); + + return; + } + + var expirationTimer = GetCacheExpiration(configuration); + + var filesBeforeClean = _fileSystem.GetFiles(cacheLocation, "*.dat", SearchOption.AllDirectories); + + if (configuration.CacheCommand.RemoveExpiredItemsOnly) + { + filesBeforeClean = filesBeforeClean.Where(f => _fileSystem.GetFileModifiedDate(f) < expirationTimer); + } + + var beforeFilesCount = filesBeforeClean.Count(); + + if (beforeFilesCount == 0) + { + this.Log().Info("No cached items available to be removed in '{0}'.", cacheLocation); + return; + } + + if (configuration.CacheCommand.RemoveExpiredItemsOnly) + { + // We need to remove each individual file when the user only request + // deleting expired items. This takes a bit longer. + foreach (var fileToRemove in filesBeforeClean) + { + _fileSystem.DeleteFile(fileToRemove); + } + + foreach (var directoryToRemove in _fileSystem.GetDirectories(cacheLocation)) + { + if (!_fileSystem.GetFiles(directoryToRemove, "*", SearchOption.AllDirectories).Any()) + { + _fileSystem.DeleteDirectoryChecked(directoryToRemove, recursive: false, overrideAttributes: false, isSilent: true); + } + } + } + else + { + foreach (var directoryToRemove in _fileSystem.GetDirectories(cacheLocation)) + { + _fileSystem.DeleteDirectoryChecked(directoryToRemove, recursive: true); + } + } + + var filesAfterClean = _fileSystem.GetFiles(cacheLocation, "*.dat", SearchOption.AllDirectories); + + if (configuration.CacheCommand.RemoveExpiredItemsOnly) + { + filesAfterClean = filesAfterClean.Where(f => _fileSystem.GetFileModifiedDate(f) < expirationTimer); + + this.Log().Info("Removed {0} expired cached items in '{1}'.", beforeFilesCount - filesAfterClean.Count(), cacheLocation); + } + else + { + this.Log().Info("Removed {0} cached items in '{1}'.", beforeFilesCount - filesAfterClean.Count(), cacheLocation); + } + } + + protected override string GetCommandDescription(CommandForAttribute attribute, ChocolateyConfiguration configuration) + { + return @"Get the statistics of what Chocolatey CLI has cached or clear any cached +items in the current context. + +The behavior of this command will vary depending on whether it is running in an elevated context or not. +Statistics and removing cached items will always happen on the User HTTP Cache. +However, the System HTTP Cache will only be considered if running in an elevated context."; + } + + protected override IEnumerable GetCommandExamples(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) + { + return new[] + { + "choco cache", + "choco cache list", + "choco cache remove", + "choco cache remove --expired" + }; + } + + protected override IEnumerable GetCommandUsage(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) + { + return new[] { "choco cache [list]|remove [options/switches]" }; + } + + protected virtual void ListCacheStatistics(ChocolateyConfiguration configuration) + { + var userCacheLocation = ApplicationParameters.HttpCacheUserLocation; + var systemCacheLocation = ApplicationParameters.HttpCacheLocation; + + if (userCacheLocation != systemCacheLocation) + { + this.Log().Info(ChocolateyLoggers.Important, "System HTTP Cache"); + ListCachedItems(configuration, systemCacheLocation); + + this.Log().Info(string.Empty); + this.Log().Info(ChocolateyLoggers.Important, "User HTTP Cache"); + ListCachedItems(configuration, userCacheLocation); + } + else + { + this.Log().Info(ChocolateyLoggers.Important, "User HTTP Cache"); + ListCachedItems(configuration, userCacheLocation); + + this.Log().Info(string.Empty); + this.Log().Warn("Run the same command as an Administrator to list information about the System HTTP cache."); + } + } + + protected virtual void RemoveCachedItems(ChocolateyConfiguration configuration) + { + var systemCacheLocation = ApplicationParameters.HttpCacheLocation; + var userCacheLocation = ApplicationParameters.HttpCacheUserLocation; + + this.Log().Info(ChocolateyLoggers.Important, "Cache cleanup"); + + if (userCacheLocation != systemCacheLocation) + { + CleanCachedItemsInPath(configuration, systemCacheLocation); + CleanCachedItemsInPath(configuration, userCacheLocation); + } + else + { + CleanCachedItemsInPath(configuration, userCacheLocation); + + this.Log().Info(string.Empty); + this.Log().Warn("Run the same command as an Administrator to remove the System HTTP cache."); + } + } + + private static DateTime GetCacheExpiration(ChocolateyConfiguration configuration) + { + DateTime? expirationTimer; + var cacheContext = new ChocolateySourceCacheContext(configuration); + + if (cacheContext.MaxAge.HasValue) + { + expirationTimer = cacheContext.MaxAge.Value.DateTime; + } + else + { + expirationTimer = DateTime.Now.Subtract(cacheContext.MaxAgeTimeSpan); + } + + return expirationTimer.Value; + } + + private void ListCachedItems(ChocolateyConfiguration configuration, string cacheLocation) + { + var cachedFiles = _fileSystem.GetFiles(cacheLocation, "*.dat", SearchOption.AllDirectories); + var cachedDirectories = _fileSystem.GetDirectories(cacheLocation); + var expirationTimer = GetCacheExpiration(configuration); + + var expiredFiles = cachedFiles.Where(f => _fileSystem.GetFileModifiedDate(f) < expirationTimer); + + this.Log().Info("We found {0} cached sources.", cachedDirectories.Count()); + this.Log().Info("We found {0} cached items for all sources, where {1} items have expired.", cachedFiles.Count(), expiredFiles.Count()); + } + + #region Obsoleted methods + + [Obsolete("Will be removed in v3. Use ConfigureArgumentParser instead!")] + public void configure_argument_parser(OptionSet optionSet, ChocolateyConfiguration configuration) + { + ConfigureArgumentParser(optionSet, configuration); + } + + [Obsolete("Will be removed in v3. Use ParseAdditionalArguments instead!")] + public void handle_additional_argument_parsing(IList unparsedArguments, ChocolateyConfiguration configuration) + { + ParseAdditionalArguments(unparsedArguments, configuration); + } + + [Obsolete("Will be removed in v3. Use Validate instead!")] + public void handle_validation(ChocolateyConfiguration configuration) + { + Validate(configuration); + } + + [Obsolete("Will be removed in v3. Use HelpMessage instead!")] + public void help_message(ChocolateyConfiguration configuration) + { + HelpMessage(configuration); + } + + [Obsolete("Will be removed in v3. Use MayRequireAdminAccess instead!")] + public bool may_require_admin_access() + { + return MayRequireAdminAccess(); + } + + [Obsolete("Will be removed in v3. Use DryRun instead!")] + public void noop(ChocolateyConfiguration configuration) + { + DryRun(configuration); + } + + [Obsolete("Will be removed in v3. Use Run instead!")] + public void run(ChocolateyConfiguration config) + { + Run(config); + } + + #endregion Obsoleted methods + } +} \ No newline at end of file diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs index 93a2e4987..5f424bff0 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs @@ -14,214 +14,210 @@ // limitations under the License. namespace chocolatey.infrastructure.app.commands -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using System.Text; - using chocolatey.infrastructure.app.attributes; - using chocolatey.infrastructure.app.configuration; - using chocolatey.infrastructure.commands; - using chocolatey.infrastructure.logging; - +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Reflection; + using System.Text; + using chocolatey.infrastructure.app.attributes; + using chocolatey.infrastructure.app.configuration; + using chocolatey.infrastructure.commands; + using chocolatey.infrastructure.logging; + /// /// A base class for any Chocolatey commands which need to utilise shared logic. /// public abstract class ChocolateyCommandBase - { - public virtual void HelpMessage(ChocolateyConfiguration configuration) - { - var allCommandForAttributes = GetType().GetCustomAttributes().ToArray(); - var commandForAttribute = allCommandForAttributes.OrEmpty().FirstOrDefault(); - - if (commandForAttribute == null) - { - throw new ApplicationException("No command for attribute was found on the command class: {0}".FormatWith(GetType().Name)); - } - - this.Log().Info(ChocolateyLoggers.Important, "{0} Command", GetCommandName(commandForAttribute)); - - if (!string.IsNullOrEmpty(commandForAttribute.Version)) - { - this.Log().Info(@" -WARNING: {0}", GetCommandVersionWarning(commandForAttribute, configuration)); - } - - this.Log().Info(@" -{0} -", GetCommandDescription(commandForAttribute, configuration)); - - var commandUsages = GetCommandUsage(allCommandForAttributes, configuration).ToArray(); - - if (commandUsages.Length > 0) - { - this.Log().Info(ChocolateyLoggers.Important, @"Usage"); - this.Log().Info(string.Empty); - - foreach (var commandUsage in commandUsages) - { - this.Log().Info(" {0}", commandUsage); - } - - this.Log().Info(string.Empty); - } - - foreach (var note in GetCommandUsageNotes(configuration)) - { - this.Log().Info(@"NOTE: {0} -", note); - } - - var commandExamples = GetCommandExamples(allCommandForAttributes, configuration).ToArray(); - - if (commandExamples.Length > 0) - { - this.Log().Info(ChocolateyLoggers.Important, "Examples"); - this.Log().Info(string.Empty); - - foreach (var commandExample in commandExamples) - { - this.Log().Info(" {0}", commandExample); - } - - var exampleDescription = GetCommandExampleDescription(configuration); - - if (!string.IsNullOrEmpty(exampleDescription)) - { - this.Log().Info(string.Empty); - this.Log().Info(exampleDescription); - } - - this.Log().Info(@" -NOTE: See scripting in the command reference (`choco -?`) for how to - write proper scripts and integrations. -"); - } - - var normalExitCodes = GetNormalExitCodes(configuration).ToArray(); - var enhancedExitCodes = GetEnhancedExitCodes(configuration).ToArray(); - var additionalExitCodeDescription = GetAdditionalExitCodeDescription(configuration); - - if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0 || !string.IsNullOrEmpty(additionalExitCodeDescription)) - { - this.Log().Info(ChocolateyLoggers.Important, "Exit Codes"); - this.Log().Info(@" -Exit codes that normally result from running this command. -"); - } - - if (normalExitCodes.Length > 0) - { - this.Log().Info("Normal:"); - this.Log().Info(string.Empty); - OutputExitCodes(normalExitCodes); - this.Log().Info(string.Empty); - } - - if (enhancedExitCodes.Length > 0) - { - this.Log().Info("Enhanced:"); - this.Log().Info(string.Empty); - OutputExitCodes(enhancedExitCodes); - this.Log().Info(string.Empty); - } - - if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0) - { - this.Log().Info(@" -If you find other exit codes that we have not yet documented, please - file a ticket so we can document it at - {0}. - -", GetRepositoryIssueLink()); - } - - if (!string.IsNullOrEmpty(additionalExitCodeDescription)) - { - this.Log().Info(additionalExitCodeDescription); - this.Log().Info(string.Empty); - } - - var additionalHelpContent = GetAdditionalHelpContent(configuration); - - if (!string.IsNullOrEmpty(additionalHelpContent)) - { - this.Log().Info(additionalHelpContent); - this.Log().Info(string.Empty); - } - - this.Log().Info(ChocolateyLoggers.Important, "Options and Switches"); - - var optionsAndSwitchesContent = GetOptionsAndSwitchesDescription(configuration); - - if (!string.IsNullOrEmpty(optionsAndSwitchesContent)) - { - this.Log().Info(string.Empty); - this.Log().Info(optionsAndSwitchesContent); - } - } - - protected virtual string GetCommandDescription(CommandForAttribute attribute, ChocolateyConfiguration configuration) - { - return attribute.Description; - } - - protected virtual string GetCommandExampleDescription(ChocolateyConfiguration configuration) - { - return string.Empty; - } - - protected virtual IEnumerable GetCommandExamples(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) - { - foreach (var attribute in attributes) - { - yield return "choco {0}".FormatWith(attribute.CommandName); - } - } - - protected virtual string GetCommandName(CommandForAttribute attribute) - { - return char.ToUpperInvariant(attribute.CommandName[0]) + attribute.CommandName.Substring(1); - } - - protected virtual IEnumerable GetCommandUsage(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) - { - foreach (var attribute in attributes) - { - yield return "choco {0} [options/switches]".FormatWith(attribute.CommandName); - } - } - - protected virtual IEnumerable GetCommandUsageNotes(ChocolateyConfiguration configuration) - { - return Enumerable.Empty(); - } - - protected virtual string GetCommandVersionWarning(CommandForAttribute attribute, ChocolateyConfiguration configuration) - { - return "This command was introduced in Chocolatey CLI v{0}".FormatWith(attribute.Version); - } - - protected virtual IEnumerable GetEnhancedExitCodes(ChocolateyConfiguration configuration) - { - return Enumerable.Empty(); - } - - protected virtual IEnumerable GetNormalExitCodes(ChocolateyConfiguration configuration) - { - return new[] - { - new ExitCodeDescription("operation was successful, no issues detected", 0), - new ExitCodeDescription("an error has occurred", -1, 1) - }; - } - - protected virtual Uri GetRepositoryIssueLink() - { - return new Uri("https://github.com/chocolatey/choco/issues/new/choose"); - } - + { + public virtual void HelpMessage(ChocolateyConfiguration configuration) + { + var allCommandForAttributes = GetType().GetCustomAttributes().ToArray(); + var commandForAttribute = allCommandForAttributes.OrEmpty().FirstOrDefault(); + + if (commandForAttribute == null) + { + throw new ApplicationException("No command for attribute was found on the command class: {0}".FormatWith(GetType().Name)); + } + + this.Log().Info(ChocolateyLoggers.Important, "{0} Command", GetCommandName(commandForAttribute)); + + if (!string.IsNullOrEmpty(commandForAttribute.Version)) + { + this.Log().Info(@" +WARNING: {0}", GetCommandVersionWarning(commandForAttribute, configuration)); + } + + this.Log().Info(@" +{0} +", GetCommandDescription(commandForAttribute, configuration)); + + var commandUsages = GetCommandUsage(allCommandForAttributes, configuration).ToArray(); + + if (commandUsages.Length > 0) + { + this.Log().Info(ChocolateyLoggers.Important, @"Usage"); + this.Log().Info(string.Empty); + + foreach (var commandUsage in commandUsages) + { + this.Log().Info(" {0}", commandUsage); + } + + this.Log().Info(string.Empty); + } + + foreach (var note in GetCommandUsageNotes(configuration)) + { + this.Log().Info(@"NOTE: {0} +", note); + } + + var commandExamples = GetCommandExamples(allCommandForAttributes, configuration).ToArray(); + + if (commandExamples.Length > 0) + { + this.Log().Info(ChocolateyLoggers.Important, "Examples"); + this.Log().Info(string.Empty); + + foreach (var commandExample in commandExamples) + { + this.Log().Info(" {0}", commandExample); + } + + var exampleDescription = GetCommandExampleDescription(configuration); + + if (!string.IsNullOrEmpty(exampleDescription)) + { + this.Log().Info(string.Empty); + this.Log().Info(exampleDescription); + } + + this.Log().Info(@" +NOTE: See scripting in the command reference (`choco -?`) for how to + write proper scripts and integrations. +"); + } + + var normalExitCodes = GetNormalExitCodes(configuration).ToArray(); + var enhancedExitCodes = GetEnhancedExitCodes(configuration).ToArray(); + var additionalExitCodeDescription = GetAdditionalExitCodeDescription(configuration); + + if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0 || !string.IsNullOrEmpty(additionalExitCodeDescription)) + { + this.Log().Info(ChocolateyLoggers.Important, "Exit Codes"); + this.Log().Info(@" +Exit codes that normally result from running this command. +"); + } + + if (normalExitCodes.Length > 0) + { + this.Log().Info("Normal:"); + OutputExitCodes(normalExitCodes); + } + + if (enhancedExitCodes.Length > 0) + { + this.Log().Info("Enhanced:"); + OutputExitCodes(enhancedExitCodes); + } + + if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0) + { + this.Log().Info(@" +If you find other exit codes that we have not yet documented, please + file a ticket so we can document it at + {0}. + +", GetRepositoryIssueLink()); + } + + if (!string.IsNullOrEmpty(additionalExitCodeDescription)) + { + this.Log().Info(additionalExitCodeDescription); + this.Log().Info(string.Empty); + } + + var additionalHelpContent = GetAdditionalHelpContent(configuration); + + if (!string.IsNullOrEmpty(additionalHelpContent)) + { + this.Log().Info(additionalHelpContent); + this.Log().Info(string.Empty); + } + + this.Log().Info(ChocolateyLoggers.Important, "Options and Switches"); + + var optionsAndSwitchesContent = GetOptionsAndSwitchesDescription(configuration); + + if (!string.IsNullOrEmpty(optionsAndSwitchesContent)) + { + this.Log().Info(string.Empty); + this.Log().Info(optionsAndSwitchesContent); + } + } + + protected virtual string GetCommandDescription(CommandForAttribute attribute, ChocolateyConfiguration configuration) + { + return attribute.Description; + } + + protected virtual string GetCommandExampleDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + protected virtual IEnumerable GetCommandExamples(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) + { + foreach (var attribute in attributes) + { + yield return "choco {0}".FormatWith(attribute.CommandName); + } + } + + protected virtual string GetCommandName(CommandForAttribute attribute) + { + return char.ToUpperInvariant(attribute.CommandName[0]) + attribute.CommandName.Substring(1); + } + + protected virtual IEnumerable GetCommandUsage(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) + { + foreach (var attribute in attributes) + { + yield return "choco {0} [options/switches]".FormatWith(attribute.CommandName); + } + } + + protected virtual IEnumerable GetCommandUsageNotes(ChocolateyConfiguration configuration) + { + return Enumerable.Empty(); + } + + protected virtual string GetCommandVersionWarning(CommandForAttribute attribute, ChocolateyConfiguration configuration) + { + return "This command was introduced in Chocolatey CLI v{0}".FormatWith(attribute.Version); + } + + protected virtual IEnumerable GetEnhancedExitCodes(ChocolateyConfiguration configuration) + { + return Enumerable.Empty(); + } + + protected virtual IEnumerable GetNormalExitCodes(ChocolateyConfiguration configuration) + { + return new[] + { + new ExitCodeDescription("operation was successful, no issues detected", 0), + new ExitCodeDescription("an error has occurred", -1, 1) + }; + } + + protected virtual Uri GetRepositoryIssueLink() + { + return new Uri("https://github.com/chocolatey/choco/issues/new/choose"); + } + /// /// Emit a warning to the use if any of the options which are known to be deprecated are found in the . /// @@ -241,54 +237,54 @@ protected virtual void WarnForRemovedOptions(IEnumerable unparsedOptions this.Log().Warn("The {0} option is no longer supported.", removed); } } - } - - private string GetAdditionalExitCodeDescription(ChocolateyConfiguration configuration) - { - return string.Empty; - } - - private string GetAdditionalHelpContent(ChocolateyConfiguration configuration) - { - return string.Empty; - } - - private string GetOptionsAndSwitchesDescription(ChocolateyConfiguration configuration) - { - return string.Empty; - } - - private void OutputExitCodes(ExitCodeDescription[] normalExitCodes) - { - foreach (var exitCodeDescription in normalExitCodes) - { - var sb = new StringBuilder(" - "); - - for (var j = 0; j < exitCodeDescription.ExitCodes.Length; j++) - { - if (j > 0 && j + 1 == exitCodeDescription.ExitCodes.Length) - { - sb.Append(" or "); - } - else if (j > 0) - { - sb.Append(", "); - } - - sb.Append(exitCodeDescription.ExitCodes[j]); - } - - if (exitCodeDescription.ExitCodes.Length > 0) - { - sb.AppendFormat(": {0}", exitCodeDescription.Description); - } - else - { - sb.Append(exitCodeDescription.Description); - } - - this.Log().Info(sb.ToString()); - } - } + } + + private string GetAdditionalExitCodeDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private string GetAdditionalHelpContent(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private string GetOptionsAndSwitchesDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private void OutputExitCodes(ExitCodeDescription[] normalExitCodes) + { + foreach (var exitCodeDescription in normalExitCodes) + { + var sb = new StringBuilder(" - "); + + for (var j = 0; j < exitCodeDescription.ExitCodes.Length; j++) + { + if (j > 0 && j + 1 == exitCodeDescription.ExitCodes.Length) + { + sb.Append(" or "); + } + else if (j > 0) + { + sb.Append(", "); + } + + sb.Append(exitCodeDescription.ExitCodes[j]); + } + + if (exitCodeDescription.ExitCodes.Length > 0) + { + sb.AppendFormat(": {0}", exitCodeDescription.Description); + } + else + { + sb.Append(exitCodeDescription.Description); + } + + this.Log().Info(sb.ToString()); + } + } } } \ No newline at end of file diff --git a/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs b/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs index 88bdb785c..3e414158b 100644 --- a/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs +++ b/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs @@ -1,4 +1,4 @@ -// Copyright © 2017 - 2022 Chocolatey Software, Inc +// Copyright © 2017 - 2023 Chocolatey Software, Inc // Copyright © 2011 - 2017 RealDimensions Software, LLC // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -57,6 +57,7 @@ public ChocolateyConfiguration() Proxy = new ProxyConfiguration(); ExportCommand = new ExportCommandConfiguration(); TemplateCommand = new TemplateCommandConfiguration(); + CacheCommand = new CacheCommandConfiguration(); #if DEBUG AllowUnofficialBuild = true; #endif @@ -488,6 +489,11 @@ private void AppendOutput(StringBuilder propertyValues, string append) /// public TemplateCommandConfiguration TemplateCommand { get; set; } + /// + /// Gets or sets the configuration related specifically to the Cache command. + /// + public CacheCommandConfiguration CacheCommand { get; set; } + #pragma warning disable IDE1006 [Obsolete("This overload is deprecated and will be removed in v3.")] public void start_backup() @@ -719,4 +725,24 @@ public sealed class TemplateCommandConfiguration public TemplateCommandType Command { get; set; } public string Name { get; set; } } + + [Serializable] + public sealed class CacheCommandConfiguration + { + /// + /// Gets or sets the type of the command that should be used when running the Cache command. + /// + /// + /// The command type to use. + /// + public CacheCommandType Command { get; set; } + + /// + /// Gets or sets a value indicating whether only expired items in the cache should be removed. + /// + /// + /// true if only expired cache items should be removed; otherwise, false. + /// + public bool RemoveExpiredItemsOnly { get; set; } + } } diff --git a/src/chocolatey/infrastructure.app/domain/CacheCommandType.cs b/src/chocolatey/infrastructure.app/domain/CacheCommandType.cs new file mode 100644 index 000000000..68d1ce58a --- /dev/null +++ b/src/chocolatey/infrastructure.app/domain/CacheCommandType.cs @@ -0,0 +1,24 @@ +// Copyright © 2023 Chocolatey Software, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace chocolatey.infrastructure.app.domain +{ + public enum CacheCommandType + { + Unknown, + List, + Remove, + } +} From 2bb90fa4c7ee081651142ebce0267264eef3c26a Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Fri, 16 Jun 2023 12:20:34 +0200 Subject: [PATCH 29/52] (maint) Set block body in method as default The change here updates the editorconfig file to default to using a block body instead of an expression. This helps when using any of the Visual Studio features when generating new methods as it will now create a full method without using expressions for single line methods. --- .editorconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index e5dc8c8bd..7442cc4b6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -20,7 +20,7 @@ csharp_prefer_braces = true:silent csharp_style_namespace_declarations = block_scoped:suggestion csharp_style_prefer_method_group_conversion = true:silent csharp_style_prefer_top_level_statements = true:silent -csharp_style_expression_bodied_methods = true:silent +csharp_style_expression_bodied_methods = false:silent csharp_style_expression_bodied_constructors = false:suggestion csharp_style_expression_bodied_operators = false:silent csharp_style_expression_bodied_properties = true:silent From 1d67bcf8c9a39407c0be6cebe7350534f94943d6 Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Mon, 19 Jun 2023 20:24:01 +0200 Subject: [PATCH 30/52] (maint) Normalize line endings in Command Base class --- .../commands/ChocolateyCommandBase.cs | 578 +++++++++--------- 1 file changed, 289 insertions(+), 289 deletions(-) diff --git a/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs b/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs index 5f424bff0..3697cdb69 100644 --- a/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs +++ b/src/chocolatey/infrastructure.app/commands/ChocolateyCommandBase.cs @@ -1,290 +1,290 @@ -// Copyright © 2023 Chocolatey Software, Inc -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -namespace chocolatey.infrastructure.app.commands -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Reflection; - using System.Text; - using chocolatey.infrastructure.app.attributes; - using chocolatey.infrastructure.app.configuration; - using chocolatey.infrastructure.commands; - using chocolatey.infrastructure.logging; - - /// - /// A base class for any Chocolatey commands which need to utilise shared logic. - /// - public abstract class ChocolateyCommandBase - { - public virtual void HelpMessage(ChocolateyConfiguration configuration) - { - var allCommandForAttributes = GetType().GetCustomAttributes().ToArray(); - var commandForAttribute = allCommandForAttributes.OrEmpty().FirstOrDefault(); - - if (commandForAttribute == null) - { - throw new ApplicationException("No command for attribute was found on the command class: {0}".FormatWith(GetType().Name)); - } - - this.Log().Info(ChocolateyLoggers.Important, "{0} Command", GetCommandName(commandForAttribute)); - - if (!string.IsNullOrEmpty(commandForAttribute.Version)) - { - this.Log().Info(@" -WARNING: {0}", GetCommandVersionWarning(commandForAttribute, configuration)); - } - - this.Log().Info(@" -{0} -", GetCommandDescription(commandForAttribute, configuration)); - - var commandUsages = GetCommandUsage(allCommandForAttributes, configuration).ToArray(); - - if (commandUsages.Length > 0) - { - this.Log().Info(ChocolateyLoggers.Important, @"Usage"); - this.Log().Info(string.Empty); - - foreach (var commandUsage in commandUsages) - { - this.Log().Info(" {0}", commandUsage); - } - - this.Log().Info(string.Empty); - } - - foreach (var note in GetCommandUsageNotes(configuration)) - { - this.Log().Info(@"NOTE: {0} -", note); - } - - var commandExamples = GetCommandExamples(allCommandForAttributes, configuration).ToArray(); - - if (commandExamples.Length > 0) - { - this.Log().Info(ChocolateyLoggers.Important, "Examples"); - this.Log().Info(string.Empty); - - foreach (var commandExample in commandExamples) - { - this.Log().Info(" {0}", commandExample); - } - - var exampleDescription = GetCommandExampleDescription(configuration); - - if (!string.IsNullOrEmpty(exampleDescription)) - { - this.Log().Info(string.Empty); - this.Log().Info(exampleDescription); - } - - this.Log().Info(@" -NOTE: See scripting in the command reference (`choco -?`) for how to - write proper scripts and integrations. -"); - } - - var normalExitCodes = GetNormalExitCodes(configuration).ToArray(); - var enhancedExitCodes = GetEnhancedExitCodes(configuration).ToArray(); - var additionalExitCodeDescription = GetAdditionalExitCodeDescription(configuration); - - if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0 || !string.IsNullOrEmpty(additionalExitCodeDescription)) - { - this.Log().Info(ChocolateyLoggers.Important, "Exit Codes"); - this.Log().Info(@" -Exit codes that normally result from running this command. -"); - } - - if (normalExitCodes.Length > 0) - { - this.Log().Info("Normal:"); - OutputExitCodes(normalExitCodes); - } - - if (enhancedExitCodes.Length > 0) - { - this.Log().Info("Enhanced:"); - OutputExitCodes(enhancedExitCodes); - } - - if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0) - { - this.Log().Info(@" -If you find other exit codes that we have not yet documented, please - file a ticket so we can document it at - {0}. - -", GetRepositoryIssueLink()); - } - - if (!string.IsNullOrEmpty(additionalExitCodeDescription)) - { - this.Log().Info(additionalExitCodeDescription); - this.Log().Info(string.Empty); - } - - var additionalHelpContent = GetAdditionalHelpContent(configuration); - - if (!string.IsNullOrEmpty(additionalHelpContent)) - { - this.Log().Info(additionalHelpContent); - this.Log().Info(string.Empty); - } - - this.Log().Info(ChocolateyLoggers.Important, "Options and Switches"); - - var optionsAndSwitchesContent = GetOptionsAndSwitchesDescription(configuration); - - if (!string.IsNullOrEmpty(optionsAndSwitchesContent)) - { - this.Log().Info(string.Empty); - this.Log().Info(optionsAndSwitchesContent); - } - } - - protected virtual string GetCommandDescription(CommandForAttribute attribute, ChocolateyConfiguration configuration) - { - return attribute.Description; - } - - protected virtual string GetCommandExampleDescription(ChocolateyConfiguration configuration) - { - return string.Empty; - } - - protected virtual IEnumerable GetCommandExamples(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) - { - foreach (var attribute in attributes) - { - yield return "choco {0}".FormatWith(attribute.CommandName); - } - } - - protected virtual string GetCommandName(CommandForAttribute attribute) - { - return char.ToUpperInvariant(attribute.CommandName[0]) + attribute.CommandName.Substring(1); - } - - protected virtual IEnumerable GetCommandUsage(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) - { - foreach (var attribute in attributes) - { - yield return "choco {0} [options/switches]".FormatWith(attribute.CommandName); - } - } - - protected virtual IEnumerable GetCommandUsageNotes(ChocolateyConfiguration configuration) - { - return Enumerable.Empty(); - } - - protected virtual string GetCommandVersionWarning(CommandForAttribute attribute, ChocolateyConfiguration configuration) - { - return "This command was introduced in Chocolatey CLI v{0}".FormatWith(attribute.Version); - } - - protected virtual IEnumerable GetEnhancedExitCodes(ChocolateyConfiguration configuration) - { - return Enumerable.Empty(); - } - - protected virtual IEnumerable GetNormalExitCodes(ChocolateyConfiguration configuration) - { - return new[] - { - new ExitCodeDescription("operation was successful, no issues detected", 0), - new ExitCodeDescription("an error has occurred", -1, 1) - }; - } - - protected virtual Uri GetRepositoryIssueLink() - { - return new Uri("https://github.com/chocolatey/choco/issues/new/choose"); - } - - /// - /// Emit a warning to the use if any of the options which are known to be deprecated are found in the . - /// - /// The list of unrecognised and unparsed options. - /// The list of options which are known to be removed and should be warned for. - protected virtual void WarnForRemovedOptions(IEnumerable unparsedOptions, IEnumerable removedOptions) - { - if (!unparsedOptions.OrEmpty().Any() || !removedOptions.OrEmpty().Any()) - { - return; - } - - foreach (var removed in removedOptions) - { - if (unparsedOptions.Contains(removed)) - { - this.Log().Warn("The {0} option is no longer supported.", removed); - } - } - } - - private string GetAdditionalExitCodeDescription(ChocolateyConfiguration configuration) - { - return string.Empty; - } - - private string GetAdditionalHelpContent(ChocolateyConfiguration configuration) - { - return string.Empty; - } - - private string GetOptionsAndSwitchesDescription(ChocolateyConfiguration configuration) - { - return string.Empty; - } - - private void OutputExitCodes(ExitCodeDescription[] normalExitCodes) - { - foreach (var exitCodeDescription in normalExitCodes) - { - var sb = new StringBuilder(" - "); - - for (var j = 0; j < exitCodeDescription.ExitCodes.Length; j++) - { - if (j > 0 && j + 1 == exitCodeDescription.ExitCodes.Length) - { - sb.Append(" or "); - } - else if (j > 0) - { - sb.Append(", "); - } - - sb.Append(exitCodeDescription.ExitCodes[j]); - } - - if (exitCodeDescription.ExitCodes.Length > 0) - { - sb.AppendFormat(": {0}", exitCodeDescription.Description); - } - else - { - sb.Append(exitCodeDescription.Description); - } - - this.Log().Info(sb.ToString()); - } - } - } +// Copyright © 2023 Chocolatey Software, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace chocolatey.infrastructure.app.commands +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Reflection; + using System.Text; + using chocolatey.infrastructure.app.attributes; + using chocolatey.infrastructure.app.configuration; + using chocolatey.infrastructure.commands; + using chocolatey.infrastructure.logging; + + /// + /// A base class for any Chocolatey commands which need to utilise shared logic. + /// + public abstract class ChocolateyCommandBase + { + public virtual void HelpMessage(ChocolateyConfiguration configuration) + { + var allCommandForAttributes = GetType().GetCustomAttributes().ToArray(); + var commandForAttribute = allCommandForAttributes.OrEmpty().FirstOrDefault(); + + if (commandForAttribute == null) + { + throw new ApplicationException("No command for attribute was found on the command class: {0}".FormatWith(GetType().Name)); + } + + this.Log().Info(ChocolateyLoggers.Important, "{0} Command", GetCommandName(commandForAttribute)); + + if (!string.IsNullOrEmpty(commandForAttribute.Version)) + { + this.Log().Info(@" +WARNING: {0}", GetCommandVersionWarning(commandForAttribute, configuration)); + } + + this.Log().Info(@" +{0} +", GetCommandDescription(commandForAttribute, configuration)); + + var commandUsages = GetCommandUsage(allCommandForAttributes, configuration).ToArray(); + + if (commandUsages.Length > 0) + { + this.Log().Info(ChocolateyLoggers.Important, @"Usage"); + this.Log().Info(string.Empty); + + foreach (var commandUsage in commandUsages) + { + this.Log().Info(" {0}", commandUsage); + } + + this.Log().Info(string.Empty); + } + + foreach (var note in GetCommandUsageNotes(configuration)) + { + this.Log().Info(@"NOTE: {0} +", note); + } + + var commandExamples = GetCommandExamples(allCommandForAttributes, configuration).ToArray(); + + if (commandExamples.Length > 0) + { + this.Log().Info(ChocolateyLoggers.Important, "Examples"); + this.Log().Info(string.Empty); + + foreach (var commandExample in commandExamples) + { + this.Log().Info(" {0}", commandExample); + } + + var exampleDescription = GetCommandExampleDescription(configuration); + + if (!string.IsNullOrEmpty(exampleDescription)) + { + this.Log().Info(string.Empty); + this.Log().Info(exampleDescription); + } + + this.Log().Info(@" +NOTE: See scripting in the command reference (`choco -?`) for how to + write proper scripts and integrations. +"); + } + + var normalExitCodes = GetNormalExitCodes(configuration).ToArray(); + var enhancedExitCodes = GetEnhancedExitCodes(configuration).ToArray(); + var additionalExitCodeDescription = GetAdditionalExitCodeDescription(configuration); + + if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0 || !string.IsNullOrEmpty(additionalExitCodeDescription)) + { + this.Log().Info(ChocolateyLoggers.Important, "Exit Codes"); + this.Log().Info(@" +Exit codes that normally result from running this command. +"); + } + + if (normalExitCodes.Length > 0) + { + this.Log().Info("Normal:"); + OutputExitCodes(normalExitCodes); + } + + if (enhancedExitCodes.Length > 0) + { + this.Log().Info("Enhanced:"); + OutputExitCodes(enhancedExitCodes); + } + + if (normalExitCodes.Length > 0 || enhancedExitCodes.Length > 0) + { + this.Log().Info(@" +If you find other exit codes that we have not yet documented, please + file a ticket so we can document it at + {0}. + +", GetRepositoryIssueLink()); + } + + if (!string.IsNullOrEmpty(additionalExitCodeDescription)) + { + this.Log().Info(additionalExitCodeDescription); + this.Log().Info(string.Empty); + } + + var additionalHelpContent = GetAdditionalHelpContent(configuration); + + if (!string.IsNullOrEmpty(additionalHelpContent)) + { + this.Log().Info(additionalHelpContent); + this.Log().Info(string.Empty); + } + + this.Log().Info(ChocolateyLoggers.Important, "Options and Switches"); + + var optionsAndSwitchesContent = GetOptionsAndSwitchesDescription(configuration); + + if (!string.IsNullOrEmpty(optionsAndSwitchesContent)) + { + this.Log().Info(string.Empty); + this.Log().Info(optionsAndSwitchesContent); + } + } + + protected virtual string GetCommandDescription(CommandForAttribute attribute, ChocolateyConfiguration configuration) + { + return attribute.Description; + } + + protected virtual string GetCommandExampleDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + protected virtual IEnumerable GetCommandExamples(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) + { + foreach (var attribute in attributes) + { + yield return "choco {0}".FormatWith(attribute.CommandName); + } + } + + protected virtual string GetCommandName(CommandForAttribute attribute) + { + return char.ToUpperInvariant(attribute.CommandName[0]) + attribute.CommandName.Substring(1); + } + + protected virtual IEnumerable GetCommandUsage(CommandForAttribute[] attributes, ChocolateyConfiguration configuration) + { + foreach (var attribute in attributes) + { + yield return "choco {0} [options/switches]".FormatWith(attribute.CommandName); + } + } + + protected virtual IEnumerable GetCommandUsageNotes(ChocolateyConfiguration configuration) + { + return Enumerable.Empty(); + } + + protected virtual string GetCommandVersionWarning(CommandForAttribute attribute, ChocolateyConfiguration configuration) + { + return "This command was introduced in Chocolatey CLI v{0}".FormatWith(attribute.Version); + } + + protected virtual IEnumerable GetEnhancedExitCodes(ChocolateyConfiguration configuration) + { + return Enumerable.Empty(); + } + + protected virtual IEnumerable GetNormalExitCodes(ChocolateyConfiguration configuration) + { + return new[] + { + new ExitCodeDescription("operation was successful, no issues detected", 0), + new ExitCodeDescription("an error has occurred", -1, 1) + }; + } + + protected virtual Uri GetRepositoryIssueLink() + { + return new Uri("https://github.com/chocolatey/choco/issues/new/choose"); + } + + /// + /// Emit a warning to the use if any of the options which are known to be deprecated are found in the . + /// + /// The list of unrecognised and unparsed options. + /// The list of options which are known to be removed and should be warned for. + protected virtual void WarnForRemovedOptions(IEnumerable unparsedOptions, IEnumerable removedOptions) + { + if (!unparsedOptions.OrEmpty().Any() || !removedOptions.OrEmpty().Any()) + { + return; + } + + foreach (var removed in removedOptions) + { + if (unparsedOptions.Contains(removed)) + { + this.Log().Warn("The {0} option is no longer supported.", removed); + } + } + } + + private string GetAdditionalExitCodeDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private string GetAdditionalHelpContent(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private string GetOptionsAndSwitchesDescription(ChocolateyConfiguration configuration) + { + return string.Empty; + } + + private void OutputExitCodes(ExitCodeDescription[] normalExitCodes) + { + foreach (var exitCodeDescription in normalExitCodes) + { + var sb = new StringBuilder(" - "); + + for (var j = 0; j < exitCodeDescription.ExitCodes.Length; j++) + { + if (j > 0 && j + 1 == exitCodeDescription.ExitCodes.Length) + { + sb.Append(" or "); + } + else if (j > 0) + { + sb.Append(", "); + } + + sb.Append(exitCodeDescription.ExitCodes[j]); + } + + if (exitCodeDescription.ExitCodes.Length > 0) + { + sb.AppendFormat(": {0}", exitCodeDescription.Description); + } + else + { + sb.Append(exitCodeDescription.Description); + } + + this.Log().Info(sb.ToString()); + } + } + } } \ No newline at end of file From 47d9f753999e9f624b95c65c536d8f8001d15324 Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Mon, 19 Jun 2023 21:26:14 +0200 Subject: [PATCH 31/52] (maint) Include warning messages in docs output --- GenerateDocs.ps1 | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/GenerateDocs.ps1 b/GenerateDocs.ps1 index 882e4db57..36b7197d9 100644 --- a/GenerateDocs.ps1 +++ b/GenerateDocs.ps1 @@ -1,4 +1,4 @@ -#Requires -PSEdition Desktop +#Requires -PSEdition Desktop # Copyright © 2017 Chocolatey Software, Inc # Copyright © 2011 - 2017 RealDimensions Software, LLC # @@ -23,7 +23,8 @@ $thisDirectory = (Split-Path -Parent $MyInvocation.MyCommand.Definition); $psModuleName = 'chocolateyInstaller' $psModuleLocation = [System.IO.Path]::GetFullPath("$thisDirectory\src\chocolatey.resources\helpers\chocolateyInstaller.psm1") $docsFolder = [System.IO.Path]::GetFullPath("$thisDirectory\docs\generated") -$chocoExe = [System.IO.Path]::GetFullPath("$thisDirectory\code_drop\temp\_PublishedApps\choco_merged\choco.exe") +$mergedDirectory = [System.IO.Path]::GetFullPath("$thisDirectory\code_drop\temp\_PublishedApps\choco_merged") +$chocoExe = "$mergedDirectory\choco.exe" $lineFeed = "`r`n" $sourceLocation = 'https://github.com/chocolatey/choco/blob/master/' $sourceCommands = $sourceLocation + 'src/chocolatey/infrastructure.app/commands' @@ -96,6 +97,11 @@ These are the functions from above as one list. '@ +if (!(Test-Path "$mergedDirectory\lib")) { + # Workaround for the warning outputted when the directory doesn't exist + $null = New-Item -Path "$mergedDirectory\lib" -ItemType Directory +} + function Get-Aliases($commandName) { $aliasOutput = '' @@ -127,6 +133,9 @@ function Replace-CommonItems($text) { $text = $text.Replace("`n", $lineFeed) $text = $text -replace "\*\*NOTE:\*\*", '> :choco-info: **NOTE** > +>' + $text = $text -replace "\*\*WARNING:\*\*",'> :choco-warning: **WARNING** +> >' $text = $text -replace '(community feed[s]?[^\]]|community repository)', '[$1](https://community.chocolatey.org/packages)' $text = $text -replace '(Chocolatey for Business|Chocolatey Professional|Chocolatey Pro)(?=[^\w])', '[$1](https://chocolatey.org/compare)' @@ -232,7 +241,8 @@ function Convert-CommandText { $commandText = $commandText -replace '^(Commands|How To Pass Options)', '## $1' $commandText = $commandText -replace '^(Windows Features|Ruby|Cygwin|Python)\s*$', '### $1' $commandText = $commandText -replace '(? :choco-info: **NOTE**' - $commandText = $commandText -replace '\*> :choco-info: \*\*NOTE\*\*\*', '> :choco-info: **NOTE**' + $commandText = $commandText -replace '(? :choco-warning: **WARNING**' + $commandText = $commandText -replace '\*> :choco-(info|warning): \*\*(INFO|WARNING)\*\*\*', '> :choco-$1: **$2**' $commandText = $commandText -replace 'the command reference', '[how to pass arguments](xref:choco-commands#how-to-pass-options-switches)' $commandText = $commandText -replace '(community feed[s]?|community repository)', '[$1](https://community.chocolatey.org/packages)' #$commandText = $commandText -replace '\`(apikey|install|upgrade|uninstall|list|search|info|outdated|pin)\`', '[[`$1`|Commands$1]]' @@ -258,7 +268,7 @@ function Convert-CommandText { $commandText = $commandText -replace 'https://chocolatey.org/docs/features-package-reducer', 'https://docs.chocolatey.org/en-us/features/package-reducer' $commandText = $commandText -replace 'https://chocolatey.org/docs/en-us/features/package-reducer', 'https://docs.chocolatey.org/en-us/features/package-reducer' $commandText = $commandText -replace '\[community feed\)\]\(https://community.chocolatey.org/packages\)', '[community feed](https://community.chocolatey.org/packages))' - $commandText = $commandText -replace '> :choco-info: \*\*NOTE\*\*\s', '> :choco-info: **NOTE** + $commandText = $commandText -replace '> :choco-(info|warning): \*\*(INFO|WARNING)\*\*\s', '> :choco-$1: **$2** > > ' From f53c7847fad6a1b068e8050de2f3c89f728b99af Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Wed, 14 Jun 2023 16:55:38 -0700 Subject: [PATCH 32/52] (#3214) Clear the dependency from the cache Clear the dependency from the cache and not the end package that is desired. --- .../infrastructure.app/services/NugetService.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/chocolatey/infrastructure.app/services/NugetService.cs b/src/chocolatey/infrastructure.app/services/NugetService.cs index fe0d8e76c..21f5df285 100644 --- a/src/chocolatey/infrastructure.app/services/NugetService.cs +++ b/src/chocolatey/infrastructure.app/services/NugetService.cs @@ -822,10 +822,9 @@ public void InstallDryRun(ChocolateyConfiguration config, Action Date: Tue, 20 Jun 2023 05:16:02 -0700 Subject: [PATCH 33/52] (#3214) Add Pester tests to ensure cache cleared Add tests to ensure Chocolatey Cache is cleared after install, upgrade, and download commands. Ensure that no nupkgs are kept after the command completes. --- .../features/ChocolateyCache.Tests.ps1 | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 tests/chocolatey-tests/features/ChocolateyCache.Tests.ps1 diff --git a/tests/chocolatey-tests/features/ChocolateyCache.Tests.ps1 b/tests/chocolatey-tests/features/ChocolateyCache.Tests.ps1 new file mode 100644 index 000000000..25077ee9d --- /dev/null +++ b/tests/chocolatey-tests/features/ChocolateyCache.Tests.ps1 @@ -0,0 +1,50 @@ +Describe 'Ensuring nupkgs cleared from temporary cache location ()' -ForEach @( + @{ Command = 'install' } + @{ Command = 'upgrade' } + @{ Command = 'download' } +) -Tag ChocolateyCache { + BeforeDiscovery { + $HasLicensedExtension = Test-PackageIsEqualOrHigher -PackageName 'chocolatey.extension' -Version '6.0.0' + } + + BeforeAll { + Initialize-ChocolateyTestInstall + } + + # Skip the download command if chocolatey.extension is not installed. + Context 'Command ()' -Skip:($Command -eq 'download' -and -not $HasLicensedExtension) { + BeforeAll { + $PackageUnderTest = 'hasdependency' + Restore-ChocolateyInstallSnapshot + + if ($Command -eq 'upgrade') { + $prep = @( + Invoke-Choco install isdependency --version 1.0.0 + Invoke-Choco install $PackageUnderTest --version 1.0.0 + ) + } + + # Clear the default Chocolatey cache directory + $TempDir = Get-TempDirectory + Remove-Item -Path $TempDir/chocolatey -Recurse -Force -ErrorAction SilentlyContinue + $Output = Invoke-Choco $Command $PackageUnderTest + } + + AfterAll { + Remove-ChocolateyInstallSnapshot + } + + It 'Exits with Success (0)' { + $Output.ExitCode | Should -Be 0 -Because $Output.String + } + + It 'Did not retain a nupkg in the Chocolatey cache' { + Get-ChildItem -Filter *.nupkg -Path $TempDir/chocolatey -Recurse | Should -BeNullOrEmpty -Because $Output.String + } + + # Skipping Download command because it downloads direct without storing files in the cache. + It 'Did retain a nuspec in the Chocolatey cache' -Skip:($Command -eq 'download') { + Get-ChildItem -Filter "$PackageUnderTest.nuspec" -Path $TempDir/chocolatey -Recurse | Should -Not -BeNullOrEmpty -Because $Output.String + } + } +} From 124fd53fe9c9c1b05fb2ccef9a63bfb8e4918fbc Mon Sep 17 00:00:00 2001 From: TheCakeIsNaOH Date: Wed, 28 Dec 2022 13:15:07 -0600 Subject: [PATCH 34/52] (#2854) Add helper to read config values This adds a PowerShell helper to get config values from the Chocolatey configuration file. This helper is intended to be used to allow hook scripts to access configuration values set in the config. --- .../chocolatey.resources.csproj | 1 + .../functions/Get-ChocolateyConfigValue.ps1 | 64 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 diff --git a/src/chocolatey.resources/chocolatey.resources.csproj b/src/chocolatey.resources/chocolatey.resources.csproj index efc1e7e30..a43e25603 100644 --- a/src/chocolatey.resources/chocolatey.resources.csproj +++ b/src/chocolatey.resources/chocolatey.resources.csproj @@ -66,6 +66,7 @@ + diff --git a/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 b/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 new file mode 100644 index 000000000..f41bc1705 --- /dev/null +++ b/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 @@ -0,0 +1,64 @@ +# Copyright © 2022 Chocolatey Software, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +function Get-ChocolateyConfigValue { + <# +.SYNOPSIS +Retrieve a value from the Chocolatey Configuration file + +.DESCRIPTION +This function will attempt to retrieve the path according to the specified Path Type +to a valid location that can be used by maintainers in certain scenarios. + +.NOTES +Available in 2.1.0+ + +.INPUTS +None + +.OUTPUTS +This function outputs the value of the specified configuration key. +If the key is not found, there is no output. + +.PARAMETER configKey +The name of the configuration value that should be looked up. + +.PARAMETER IgnoredArguments +Allows splatting with arguments that do not apply. Do not use directly. + +.EXAMPLE +> +$value = Get-ChocolateyConfigValue -configKey 'cacheLocation' +#> + param( + [parameter(Mandatory = $true)] + [string] $configKey, + [parameter(ValueFromRemainingArguments = $true)] + [Object[]] $ignoredArguments + ) + + try { + $installLocation = Get-ChocolateyPath -pathType 'InstallPath' + $configPath = Join-Path $installLocation "config\chocolatey.config" + [xml]$configContents = Get-Content -Path $configPath + return $configContents.chocolatey.config.add | + Where-Object { $_.key -eq $configKey } | + Select-Object -ExpandProperty value + } + catch { + Write-Warning "Unable to read config value '$configKey' with error" + Write-Warning $_ + } +} From 575fddbf08613ee3a16c55eaa36ea39f706708fc Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Tue, 20 Jun 2023 08:08:32 -0700 Subject: [PATCH 35/52] (maint) Resave Get-ChocolateyConfigValue as CRLF --- .../functions/Get-ChocolateyConfigValue.ps1 | 128 +++++++++--------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 b/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 index f41bc1705..853de50f9 100644 --- a/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 +++ b/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 @@ -1,64 +1,64 @@ -# Copyright © 2022 Chocolatey Software, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -function Get-ChocolateyConfigValue { - <# -.SYNOPSIS -Retrieve a value from the Chocolatey Configuration file - -.DESCRIPTION -This function will attempt to retrieve the path according to the specified Path Type -to a valid location that can be used by maintainers in certain scenarios. - -.NOTES -Available in 2.1.0+ - -.INPUTS -None - -.OUTPUTS -This function outputs the value of the specified configuration key. -If the key is not found, there is no output. - -.PARAMETER configKey -The name of the configuration value that should be looked up. - -.PARAMETER IgnoredArguments -Allows splatting with arguments that do not apply. Do not use directly. - -.EXAMPLE -> -$value = Get-ChocolateyConfigValue -configKey 'cacheLocation' -#> - param( - [parameter(Mandatory = $true)] - [string] $configKey, - [parameter(ValueFromRemainingArguments = $true)] - [Object[]] $ignoredArguments - ) - - try { - $installLocation = Get-ChocolateyPath -pathType 'InstallPath' - $configPath = Join-Path $installLocation "config\chocolatey.config" - [xml]$configContents = Get-Content -Path $configPath - return $configContents.chocolatey.config.add | - Where-Object { $_.key -eq $configKey } | - Select-Object -ExpandProperty value - } - catch { - Write-Warning "Unable to read config value '$configKey' with error" - Write-Warning $_ - } -} +# Copyright © 2022 Chocolatey Software, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +function Get-ChocolateyConfigValue { + <# +.SYNOPSIS +Retrieve a value from the Chocolatey Configuration file + +.DESCRIPTION +This function will attempt to retrieve the path according to the specified Path Type +to a valid location that can be used by maintainers in certain scenarios. + +.NOTES +Available in 2.1.0+ + +.INPUTS +None + +.OUTPUTS +This function outputs the value of the specified configuration key. +If the key is not found, there is no output. + +.PARAMETER configKey +The name of the configuration value that should be looked up. + +.PARAMETER IgnoredArguments +Allows splatting with arguments that do not apply. Do not use directly. + +.EXAMPLE +> +$value = Get-ChocolateyConfigValue -configKey 'cacheLocation' +#> + param( + [parameter(Mandatory = $true)] + [string] $configKey, + [parameter(ValueFromRemainingArguments = $true)] + [Object[]] $ignoredArguments + ) + + try { + $installLocation = Get-ChocolateyPath -pathType 'InstallPath' + $configPath = Join-Path $installLocation "config\chocolatey.config" + [xml]$configContents = Get-Content -Path $configPath + return $configContents.chocolatey.config.add | + Where-Object { $_.key -eq $configKey } | + Select-Object -ExpandProperty value + } + catch { + Write-Warning "Unable to read config value '$configKey' with error" + Write-Warning $_ + } +} From 20219877000217896f96762b005ac5dc7e7cc8cd Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Tue, 20 Jun 2023 08:10:33 -0700 Subject: [PATCH 36/52] (#2854) Pester tests to Get-ChocolateyConfigValue Add pester tests around the functionality added by Get-ChocolateyConfigValue --- .../features/ChocolateyFunctions.Tests.ps1 | 39 +++++++++++++++++++ tests/packages/getconfig/getconfig.nuspec | 17 ++++++++ .../getconfig/tools/chocolateyinstall.ps1 | 14 +++++++ 3 files changed, 70 insertions(+) create mode 100644 tests/chocolatey-tests/features/ChocolateyFunctions.Tests.ps1 create mode 100755 tests/packages/getconfig/getconfig.nuspec create mode 100755 tests/packages/getconfig/tools/chocolateyinstall.ps1 diff --git a/tests/chocolatey-tests/features/ChocolateyFunctions.Tests.ps1 b/tests/chocolatey-tests/features/ChocolateyFunctions.Tests.ps1 new file mode 100644 index 000000000..777c302fb --- /dev/null +++ b/tests/chocolatey-tests/features/ChocolateyFunctions.Tests.ps1 @@ -0,0 +1,39 @@ +# These tests install packages that exercise the Chocolatey PowerShell functions +# TODO: Move some of the install tests into this file +Describe 'Chocolatey PowerShell functions' { + BeforeAll { + Initialize-ChocolateyTestInstall + } + + Context 'Get-ChocolateyConfigValue' -ForEach @{ + ConfigValues = @( + @{ Name = 'addedTextValue' ; Value = 'SomeTextValue' } + @{ Name = 'addedNumberValue' ; Value = 123456 } + @{ Name = 'commandExecutionTimeoutSeconds' ; Value = 2795 } + @{ Name = 'cacheLocation' ; Value = $null } + @{ Name = 'nonExistentKey' ; Value = $null } + ) + } -Tag Get-ChocolateyConfigValue { + + BeforeAll { + Restore-ChocolateyInstallSnapshot + + foreach ($Value in $ConfigValues) { + if ($null -ne $Value.Value) { + Invoke-Choco config set --name $Value.Name --value $Value.Value + } + } + + $Output = Invoke-Choco install getconfig --confirm + } + + It 'Exits with Success (0)' { + $Output.ExitCode | Should -Be 0 -Because $Output.String + } + + It 'Outputs the expected value for config entry ()' -ForEach $ConfigValues { + # Trim the output as Lines is trimmed. + $Output.Lines | Should -Contain "${Name}: $Value".Trim() -Because $Output.String + } + } +} diff --git a/tests/packages/getconfig/getconfig.nuspec b/tests/packages/getconfig/getconfig.nuspec new file mode 100755 index 000000000..9678f092e --- /dev/null +++ b/tests/packages/getconfig/getconfig.nuspec @@ -0,0 +1,17 @@ + + + + + getconfig + 1.0.0 + Chocolatey + getconfig + Chocolatey + Chocolatey + getconfig + Test package for using Get-ChocolateyConfigValue. + + + + + diff --git a/tests/packages/getconfig/tools/chocolateyinstall.ps1 b/tests/packages/getconfig/tools/chocolateyinstall.ps1 new file mode 100755 index 000000000..1a402b1e9 --- /dev/null +++ b/tests/packages/getconfig/tools/chocolateyinstall.ps1 @@ -0,0 +1,14 @@ +$ErrorActionPreference = 'Stop' + +$ValuesToTest = @( + 'addedTextValue' + 'addedNumberValue' + 'commandExecutionTimeoutSeconds' + 'cacheLocation' + 'nonExistentKey' +) + +foreach ($Value in $ValuesToTest) { + $Result = Get-ChocolateyConfigValue -configKey $Value + Write-Host "${Value}: $Result" +} From de301636943f12847de474f2fc3aafad727900f0 Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Tue, 20 Jun 2023 08:14:28 -0700 Subject: [PATCH 37/52] (#2854) Do Write-Error instead of Write-Warning The catch of Get-ChocolateyConfigValue should reasonably be an error and not a warning. Changing this to send an error so the package can handle it if desired. --- .../helpers/functions/Get-ChocolateyConfigValue.ps1 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 b/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 index 853de50f9..5c339aa50 100644 --- a/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 +++ b/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 @@ -1,4 +1,4 @@ -# Copyright © 2022 Chocolatey Software, Inc. +# Copyright © 2022 Chocolatey Software, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -58,7 +58,6 @@ $value = Get-ChocolateyConfigValue -configKey 'cacheLocation' Select-Object -ExpandProperty value } catch { - Write-Warning "Unable to read config value '$configKey' with error" - Write-Warning $_ + Write-Error "Unable to read config value '$configKey' with error" -Exception $_ } } From f96f014b2f7135ed992afd5c7a41b3274bde8b06 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Tue, 20 Jun 2023 16:22:44 +0100 Subject: [PATCH 38/52] (build) Use latest Chocolatey.Cake.Recipe package This includes a change to ensure that building of MSI's only happens on Windows machines, since this is a requirement of WiX. --- recipe.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe.cake b/recipe.cake index 92bfd865b..7ce040942 100644 --- a/recipe.cake +++ b/recipe.cake @@ -1,4 +1,4 @@ -#load nuget:?package=Chocolatey.Cake.Recipe&version=0.22.0 +#load nuget:?package=Chocolatey.Cake.Recipe&version=0.23.1 /////////////////////////////////////////////////////////////////////////////// // TOOLS From 24aa224773ee9639c3ceda5e33cf7f91d8185b72 Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Tue, 20 Jun 2023 08:52:07 -0700 Subject: [PATCH 39/52] (#3218) Remove try catch block for tab completion --- .../helpers/ChocolateyTabExpansion.ps1 | 77 ++++++++----------- 1 file changed, 34 insertions(+), 43 deletions(-) diff --git a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 index c9e7c4ccd..1d707b28d 100644 --- a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 +++ b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 @@ -62,61 +62,52 @@ $commandOptions = @{ $commandOptions['find'] = $commandOptions['search'] -try { - $licenseFile = Get-Item -Path "$env:ChocolateyInstall\license\chocolatey.license.xml" -ErrorAction Stop +$licenseFile = Get-Item -Path "$env:ChocolateyInstall\license\chocolatey.license.xml" -ErrorAction Stop - if ($licenseFile) { - # Add pro-only commands - $script:chocoCommands = @( - $script:chocoCommands - 'download' - 'optimize' - ) +if ($licenseFile) { + # Add pro-only commands + $script:chocoCommands = @( + $script:chocoCommands + 'download' + 'optimize' + ) - $commandOptions.download = "--internalize --internalize-all-urls --ignore-dependencies --installed-packages --ignore-unfound-packages --resources-location='' --download-location='' --outputdirectory='' --source='' --version='' --prerelease --user='' --password='' --cert='' --certpassword='' --append-use-original-location --recompile --disable-package-repository-optimizations" - $commandOptions.sync = "--output-directory='' --id='' --package-id=''" - $commandOptions.optimize = "--deflate-nupkg-only --id=''" + $commandOptions.download = "--internalize --internalize-all-urls --ignore-dependencies --installed-packages --ignore-unfound-packages --resources-location='' --download-location='' --outputdirectory='' --source='' --version='' --prerelease --user='' --password='' --cert='' --certpassword='' --append-use-original-location --recompile --disable-package-repository-optimizations" + $commandOptions.sync = "--output-directory='' --id='' --package-id=''" + $commandOptions.optimize = "--deflate-nupkg-only --id=''" - # Add pro switches to commands that have additional switches on Pro - $proInstallUpgradeOptions = " --install-directory='' --package-parameters-sensitive='' --max-download-rate='' --install-arguments-sensitive='' --skip-download-cache --use-download-cache --skip-virus-check --virus-check --virus-positives-minimum='' --deflate-package-size --no-deflate-package-size --deflate-nupkg-only" + # Add pro switches to commands that have additional switches on Pro + $proInstallUpgradeOptions = " --install-directory='' --package-parameters-sensitive='' --max-download-rate='' --install-arguments-sensitive='' --skip-download-cache --use-download-cache --skip-virus-check --virus-check --virus-positives-minimum='' --deflate-package-size --no-deflate-package-size --deflate-nupkg-only" - $commandOptions.install += $proInstallUpgradeOptions - $commandOptions.upgrade += $proInstallUpgradeOptions + " --exclude-chocolatey-packages-during-upgrade-all --include-chocolatey-packages-during-upgrade-all" - $commandOptions.new += " --build-package --use-original-location --keep-remote --url='' --url64='' --checksum='' --checksum64='' --checksumtype='' --pause-on-error" - $commandOptions.pin += " --note=''" + $commandOptions.install += $proInstallUpgradeOptions + $commandOptions.upgrade += $proInstallUpgradeOptions + " --exclude-chocolatey-packages-during-upgrade-all --include-chocolatey-packages-during-upgrade-all" + $commandOptions.new += " --build-package --use-original-location --keep-remote --url='' --url64='' --checksum='' --checksum64='' --checksumtype='' --pause-on-error" + $commandOptions.pin += " --note=''" - # Add Business-only commands and options if the license is a Business or Trial license - [xml]$xml = Get-Content -Path $licenseFile.FullName -ErrorAction Stop - $licenseType = $xml.license.type + # Add Business-only commands and options if the license is a Business or Trial license + [xml]$xml = Get-Content -Path $licenseFile.FullName -ErrorAction Stop + $licenseType = $xml.license.type - if ('Business', 'BusinessTrial' -contains $licenseType) { + if ('Business', 'BusinessTrial' -contains $licenseType) { - # Add business-only commands - $script:chocoCommands = @( - $script:chocoCommands - 'support' - 'sync' - ) + # Add business-only commands + $script:chocoCommands = @( + $script:chocoCommands + 'support' + 'sync' + ) - $commandOptions.list += " --audit" - $commandOptions.uninstall += " --from-programs-and-features" - $commandOptions.new += " --file='' --file64='' --from-programs-and-features --remove-architecture-from-name --include-architecture-in-name" + $commandOptions.list += " --audit" + $commandOptions.uninstall += " --from-programs-and-features" + $commandOptions.new += " --file='' --file64='' --from-programs-and-features --remove-architecture-from-name --include-architecture-in-name" - # Add --use-self-service to commands that support it - $selfServiceCommands = 'list', 'find', 'search', 'info', 'install', 'upgrade', 'uninstall', 'pin', 'outdated', 'push', 'download', 'sync', 'optimize' - foreach ($command in $selfServiceCommands) { - $commandOptions.$command += ' --use-self-service' - } + # Add --use-self-service to commands that support it + $selfServiceCommands = 'list', 'find', 'search', 'info', 'install', 'upgrade', 'uninstall', 'pin', 'outdated', 'push', 'download', 'sync', 'optimize' + foreach ($command in $selfServiceCommands) { + $commandOptions.$command += ' --use-self-service' } } } -catch { - # Remove the error that last occurred from $error so it doesn't cause any - # issues for users, as we're deliberately ignoring it. - if ($error.Count -gt 0) { - $error.RemoveAt(0) - } -} foreach ($key in @($commandOptions.Keys)) { $commandOptions.$key += $allcommands From fe3151f9ec5e0e0dc2614ff517b3d2b9b1e4ce2e Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Tue, 20 Jun 2023 08:53:50 -0700 Subject: [PATCH 40/52] (#3218) Update Tab Expansion to use Test-Path The method we were using to clear the error variable wasn't clearing the variable. Instead of trying this way, it's better to use Test-Path to verify if a file exists. --- .../helpers/ChocolateyTabExpansion.ps1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 index 1d707b28d..89cdff953 100644 --- a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 +++ b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 @@ -1,4 +1,4 @@ -# Copyright © 2017 - 2021 Chocolatey Software, Inc. +# Copyright © 2017 - 2021 Chocolatey Software, Inc. # Copyright © 2011 - 2017 RealDimensions Software, LLC # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -62,9 +62,9 @@ $commandOptions = @{ $commandOptions['find'] = $commandOptions['search'] -$licenseFile = Get-Item -Path "$env:ChocolateyInstall\license\chocolatey.license.xml" -ErrorAction Stop +$licenseFile = "$env:ChocolateyInstall\license\chocolatey.license.xml" -if ($licenseFile) { +if (Test-Path $licenseFile) { # Add pro-only commands $script:chocoCommands = @( $script:chocoCommands @@ -85,7 +85,7 @@ if ($licenseFile) { $commandOptions.pin += " --note=''" # Add Business-only commands and options if the license is a Business or Trial license - [xml]$xml = Get-Content -Path $licenseFile.FullName -ErrorAction Stop + [xml]$xml = Get-Content -Path $licenseFile -ErrorAction Stop $licenseType = $xml.license.type if ('Business', 'BusinessTrial' -contains $licenseType) { From e5ffd74ce8bff87687115ec459e2f2759fda66c8 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Wed, 21 Jun 2023 07:26:17 +0100 Subject: [PATCH 41/52] (#2854) Re-save file with UTF-8 with BOM It is known that when signing a PowerShell file, if there isn't a BOM in the file, the signature doesn't work properly. This commit re-encodes the file from UTF-8 to UTF-8 with BOM. The need for this was caught during end-to-end testing. --- .../helpers/functions/Get-ChocolateyConfigValue.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 b/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 index 5c339aa50..fc2936b22 100644 --- a/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 +++ b/src/chocolatey.resources/helpers/functions/Get-ChocolateyConfigValue.ps1 @@ -1,4 +1,4 @@ -# Copyright © 2022 Chocolatey Software, Inc. +# Copyright © 2022 Chocolatey Software, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. From bd0d353c4d17617373a9a47bba908b40141d621b Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Wed, 21 Jun 2023 07:41:07 +0100 Subject: [PATCH 42/52] (#3194) Add tab completion for cache command This was missed in the original work that was done, but it was caught during end-to-end tests. This commit adds the necessary logic to allow tab completion of the new choco cache command, including sub-commands, as well as options. --- .../helpers/ChocolateyTabExpansion.ps1 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 index 89cdff953..092f53b55 100644 --- a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 +++ b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 @@ -35,7 +35,7 @@ function script:chocoCmdOperations($commands, $command, $filter, $currentArgumen Where-Object { $_ -like "$filter*" } } -$script:chocoCommands = @('-?','search','list','info','install','outdated','upgrade','uninstall','new','pack','push','-h','--help','pin','source','config','feature','apikey','export','help','template','--version') +$script:chocoCommands = @('-?','search','list','info','install','outdated','upgrade','uninstall','new','pack','push','-h','--help','pin','source','config','feature','apikey','export','help','template','cache','--version') # ensure these all have a space to start, or they will cause issues $allcommands = " --debug --verbose --trace --noop --help -? --online --accept-license --confirm --limit-output --no-progress --log-file='' --execution-timeout='' --cache-location='' --proxy='' --proxy-user='' --proxy-password='' --proxy-bypass-list='' --proxy-bypass-on-local --force --no-color --skip-compatibility-checks --ignore-http-cache" @@ -58,6 +58,7 @@ $commandOptions = @{ apikey = "--source='' --api-key='' --remove" export = "--include-version-numbers --output-file-path=''" template = "--name=''" + cache = "--expired" } $commandOptions['find'] = $commandOptions['search'] @@ -224,6 +225,11 @@ function ChocolateyTabExpansion($lastBlock) { @('list', 'info', '-?') | Where-Object { $_ -like "$($matches['subcommand'])*" } } + # Handles cache first tab + "^(cache)\s+(?[^-\s]*)$" { + @('list', 'remove', '-?') | Where-Object { $_ -like "$($matches['subcommand'])*" } + } + # Handles more options after others "^(?$($commandOptions.Keys -join '|'))(?.*)\s+(?\S*)$" { chocoCmdOperations $commandOptions $matches['cmd'] $matches['op'] $matches['currentArguments'] From 7156c9ee83ee7d34b4d4fdc9b2a34b9f3d9f943c Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Wed, 21 Jun 2023 11:55:06 +0100 Subject: [PATCH 43/52] (maint) Fix encoding of file All PowerShell files need to be encoded using UTF8 with BOM, otherwise the signing of the script doesn't work correctly. --- src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 index 092f53b55..2eb13a834 100644 --- a/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 +++ b/src/chocolatey.resources/helpers/ChocolateyTabExpansion.ps1 @@ -1,4 +1,4 @@ -# Copyright © 2017 - 2021 Chocolatey Software, Inc. +# Copyright © 2017 - 2021 Chocolatey Software, Inc. # Copyright © 2011 - 2017 RealDimensions Software, LLC # # Licensed under the Apache License, Version 2.0 (the "License"); From 996c7b84fc4256e16e107046f49deb69d404e851 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Fri, 23 Jun 2023 08:36:06 +0100 Subject: [PATCH 44/52] (maint) Remove env variable for release version This was added in this commit: https://github.com/chocolatey/choco/commit/e991fbc6c64a09b7ba8f3f0f346ba2724823da20 after the concept of package.Version.PackageReleaseVersion was added onto the SemanticVersion class within the NuGet.Core assembly. This concept hasn't been brought over to the Chocolatey.Nuget.Client libraries, and as such, the addition of this particular environment variable is not required, since it is no different to the variables that are already being emitted. The suggestion going forward is likely to be that package maintainers use the build metadata within SemVer v2 to indicate that a change has been made to the packaging files, rather than the underlying application. This concept won't see adoption until SemVer v2 is added to CCR though. --- src/chocolatey/infrastructure.app/services/PowershellService.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/chocolatey/infrastructure.app/services/PowershellService.cs b/src/chocolatey/infrastructure.app/services/PowershellService.cs index f1da6a2c0..b0b60b5ef 100644 --- a/src/chocolatey/infrastructure.app/services/PowershellService.cs +++ b/src/chocolatey/infrastructure.app/services/PowershellService.cs @@ -447,7 +447,6 @@ public void PreparePowerShellEnvironment(IPackageSearchMetadata package, Chocola Environment.SetEnvironmentVariable("chocolateyPackageVersion", package.Identity.Version.ToNormalizedStringChecked()); Environment.SetEnvironmentVariable("packageVersion", package.Identity.Version.ToNormalizedStringChecked()); Environment.SetEnvironmentVariable("chocolateyPackageVersionPrerelease", package.Identity.Version.Release.ToStringSafe()); - Environment.SetEnvironmentVariable("chocolateyPackageVersionPackageRelease", package.Identity.Version.Version.ToStringSafe()); Environment.SetEnvironmentVariable("chocolateyPackageFolder", packageDirectory); Environment.SetEnvironmentVariable("packageFolder", packageDirectory); From 7e89da581bc8b20edf926b82581df74689769856 Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Thu, 22 Jun 2023 13:28:26 +0100 Subject: [PATCH 45/52] (#3201 #3225) Re-instate setting of config values Previously, in this commit: https://github.com/chocolatey/choco/commit/da19356578e3c90850ac766f150ccebf809c6ce2#diff-cb6a0471e41268b22a928bd57a59d51b70b7024e9beb30e89a330e193a089eba The usage of the top level CacheLocation and CommandExecutionTimeoutSeconds values had been removed, since these top level properties within the chocolatey.config had been replaced with values contained within the config section of the chocolatey.config file. However, the changes in that commit were too aggressive, and removed the call to the set_config_item (which has subsequently been renamed to SetConfigItem). The method call does the work of taking any value that is defined in the chocolatey.config for a given property name, and adding it to the ChocolateyConfiguration instance. When this method call was removed, it stopped setting the property value on the instance, and as a result, values that had been configured in the chocolatey.config file were ignored. They were still in play when the configuration was passed in via a command line option, but not when defining them in the chocolatey.config file. The removal of this call to the set_config_item method also explains why it was necessary to apply this bug fix in Chocolatey GUI: https://github.com/chocolatey/ChocolateyGUI/issues/1003 The method call also had the effect of setting the description on the configuration value, which would have meant that Chocolatey GUI wouldn't have thrown a null reference exception. The change in Chocolatey GUI is still valid though, as there are times when a config value can have a missing description, so it makes sense to leave that fix in place. --- .../builders/ConfigurationBuilder.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs b/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs index 492561099..eb9d3afb8 100644 --- a/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs +++ b/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs @@ -217,6 +217,15 @@ private static void SetMachineSources(ChocolateyConfiguration config, ConfigFile private static void SetAllConfigItems(ChocolateyConfiguration config, ConfigFileSettings configFileSettings, IFileSystem fileSystem) { + config.CacheLocation = Environment.ExpandEnvironmentVariables( + SetConfigItem( + ApplicationParameters.ConfigSettings.CacheLocation, + configFileSettings, + string.Empty, + "Cache location if not TEMP folder. Replaces `$env:TEMP` value for choco.exe process. It is highly recommended this be set to make Chocolatey more deterministic in cleanup." + ) + ); + if (string.IsNullOrWhiteSpace(config.CacheLocation)) { config.CacheLocation = fileSystem.GetTempPath(); // System.Environment.GetEnvironmentVariable("TEMP"); @@ -233,10 +242,12 @@ private static void SetAllConfigItems(ChocolateyConfiguration config, ConfigFile if (string.IsNullOrWhiteSpace(config.CacheLocation)) config.CacheLocation = fileSystem.CombinePaths(ApplicationParameters.InstallLocation, "temp"); var commandExecutionTimeoutSeconds = 0; - var commandExecutionTimeout = configFileSettings.ConfigSettings - .Where(f => f.Key.IsEqualTo(ApplicationParameters.ConfigSettings.CommandExecutionTimeoutSeconds)) - .Select(c => c.Value) - .FirstOrDefault(); + var commandExecutionTimeout = SetConfigItem( + ApplicationParameters.ConfigSettings.CommandExecutionTimeoutSeconds, + configFileSettings, + ApplicationParameters.DefaultWaitForExitInSeconds.ToStringSafe(), + "Default timeout for command execution. '0' for infinite." + ); int.TryParse(commandExecutionTimeout, out commandExecutionTimeoutSeconds); config.CommandExecutionTimeoutSeconds = commandExecutionTimeoutSeconds; From 3dc4416e4ef5ea2340cfa7b161e4c86177e31fc7 Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Sun, 25 Jun 2023 12:39:09 -0700 Subject: [PATCH 46/52] (#3225) Add Pester Tests to ensure environment Make use of the test-environment package that already exists to get the environment variables set by Chocolatey and ensure that key variables are set as they should be. --- .../features/EnvironmentVariables.Tests.ps1 | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 tests/chocolatey-tests/features/EnvironmentVariables.Tests.ps1 diff --git a/tests/chocolatey-tests/features/EnvironmentVariables.Tests.ps1 b/tests/chocolatey-tests/features/EnvironmentVariables.Tests.ps1 new file mode 100644 index 000000000..cd3a6a2fa --- /dev/null +++ b/tests/chocolatey-tests/features/EnvironmentVariables.Tests.ps1 @@ -0,0 +1,43 @@ +Describe "Ensuring Chocolatey Environment variables are correct (<_>)" -ForEach @( + "config" + "cli" +) -Tag EnvironmentVariables, Chocolatey { + BeforeDiscovery { + $TestedVariables = @( + @{ Name = 'TEMP' ; Value = "C:\Temp\$PID" } + @{ Name = 'TMP' ; Value = "C:\Temp\$PID" } + @{ Name = 'ChocolateyPackageFolder' ; Value = '{0}\lib\test-environment' } + @{ Name = 'ChocolateyPackageName' ; Value = 'test-environment' } + @{ Name = 'ChocolateyPackageTitle' ; Value = 'test-environment (Install)' } + @{ Name = 'ChocolateyPackageVersion' ; Value = '1.0.0' } + ) + } + + BeforeAll { + Initialize-ChocolateyTestInstall + New-ChocolateyInstallSnapshot + $cacheDir = "C:\Temp\$PID" + switch ($_) { + 'config' { + Invoke-Choco config set --name=cachelocation --value $cacheDir + } + 'cli' { + $cacheArg = "--cache-location='$cacheDir'" + } + } + $Output = Invoke-Choco install test-environment --version 1.0.0 $cacheArg + } + + AfterAll { + Remove-ChocolateyTestInstall + } + + It "Should exit with success (0)" { + $Output.ExitCode | Should -Be 0 -Because $Output.String + } + + It 'Should Output the expected value for environment variable' -ForEach $TestedVariables { + $ExpectedLine = "$Name=$Value" -f $env:ChocolateyInstall + $Output.Lines | Should -Contain $ExpectedLine -Because $Output.String + } +} From e12f5fb8f04bafd58113f7739ee06207be00d30d Mon Sep 17 00:00:00 2001 From: Gary Ewan Park Date: Tue, 27 Jun 2023 10:26:41 +0100 Subject: [PATCH 47/52] (maint) Add required whitespace --- src/chocolatey/infrastructure.app/nuget/NugetCommon.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs b/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs index 05f2f41e0..3550ebd46 100644 --- a/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs +++ b/src/chocolatey/infrastructure.app/nuget/NugetCommon.cs @@ -137,7 +137,7 @@ public static IEnumerable GetRemoteRepositories(ChocolateyConf var updatedSources = new StringBuilder(); foreach (var sourceValue in sources.OrEmpty()) { -var source = sourceValue; + var source = sourceValue; var bypassProxy = false; var sourceClientCertificates = new List(); From b810acb88ee741e5be292b2d7969d584b92d5bdc Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Mon, 26 Jun 2023 19:25:45 +0200 Subject: [PATCH 48/52] (#3174) Store non-normalized package version In a previous change we normalized all versions that was being used in Chocolatey CLI. This caused certain packages that uses non-normalized version numbers to start failing to look up additional information in other products. To work around this problem we need to store the non-normalized version of the package when scripts are being ran. This is done by adding a new environment variable that can be used, this environment variable is considered private and is not for public consumption. --- src/chocolatey/StringResources.cs | 60 +++++++++++++++++++ src/chocolatey/chocolatey.csproj | 1 + .../services/PowershellService.cs | 4 ++ .../templates/ChocolateyReadMeTemplate.cs | 2 +- .../commands/choco-install.Tests.ps1 | 33 ++++++++++ 5 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/chocolatey/StringResources.cs diff --git a/src/chocolatey/StringResources.cs b/src/chocolatey/StringResources.cs new file mode 100644 index 000000000..4bbf0f6c9 --- /dev/null +++ b/src/chocolatey/StringResources.cs @@ -0,0 +1,60 @@ +// Copyright © 2023-Present Chocolatey Software, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace chocolatey +{ + using System.ComponentModel; + + public static class StringResources + { + /// + /// Resources for the names of available environment variables + /// that will be created or used as part of executing + /// Chocolatey CLI. + /// + /// + /// DEV NOTICE: Mark anything that is not meant for public consumption as + /// internal constants and not browsable, even if used in other projects. + /// + public static class EnvironmentVariables + { + /// + /// The version of the package that is being handled as it is defined in the embedded + /// nuspec file. + /// + /// + /// Will be sets during package installs, upgrades and uninstalls. + /// Environment variable is only for internal uses. + /// + /// + [EditorBrowsable(EditorBrowsableState.Never)] + [Browsable(false)] + internal const string ChocolateyPackageNuspecVersion = "chocolateyPackageNuspecVersion"; + + /// + /// The version of the package that is being handled as it is defined in the embedded + /// nuspec file. + /// + /// + /// Will be sets during package installs, upgrades and uninstalls. + /// Environment variable is only for internal uses. + /// + /// + [EditorBrowsable(EditorBrowsableState.Never)] + [Browsable(false)] + internal const string PackageNuspecVersion = "packageNuspecVersion"; + } + } +} \ No newline at end of file diff --git a/src/chocolatey/chocolatey.csproj b/src/chocolatey/chocolatey.csproj index cad4959a5..eb291d883 100644 --- a/src/chocolatey/chocolatey.csproj +++ b/src/chocolatey/chocolatey.csproj @@ -475,6 +475,7 @@ + diff --git a/src/chocolatey/infrastructure.app/services/PowershellService.cs b/src/chocolatey/infrastructure.app/services/PowershellService.cs index b0b60b5ef..b80dce5ba 100644 --- a/src/chocolatey/infrastructure.app/services/PowershellService.cs +++ b/src/chocolatey/infrastructure.app/services/PowershellService.cs @@ -446,6 +446,10 @@ public void PreparePowerShellEnvironment(IPackageSearchMetadata package, Chocola Environment.SetEnvironmentVariable("packageTitle", package.Title); Environment.SetEnvironmentVariable("chocolateyPackageVersion", package.Identity.Version.ToNormalizedStringChecked()); Environment.SetEnvironmentVariable("packageVersion", package.Identity.Version.ToNormalizedStringChecked()); + // We use ToStringSafe on purpose here. There is a need for the version + // the package specified, not the normalized version we want users to use. + Environment.SetEnvironmentVariable(StringResources.EnvironmentVariables.ChocolateyPackageNuspecVersion, package.Identity.Version.ToStringSafe()); + Environment.SetEnvironmentVariable(StringResources.EnvironmentVariables.PackageNuspecVersion, package.Identity.Version.ToStringSafe()); Environment.SetEnvironmentVariable("chocolateyPackageVersionPrerelease", package.Identity.Version.Release.ToStringSafe()); Environment.SetEnvironmentVariable("chocolateyPackageFolder", packageDirectory); diff --git a/src/chocolatey/infrastructure.app/templates/ChocolateyReadMeTemplate.cs b/src/chocolatey/infrastructure.app/templates/ChocolateyReadMeTemplate.cs index 7dac594a2..fd17ae41c 100644 --- a/src/chocolatey/infrastructure.app/templates/ChocolateyReadMeTemplate.cs +++ b/src/chocolatey/infrastructure.app/templates/ChocolateyReadMeTemplate.cs @@ -84,7 +84,7 @@ public class ChocolateyReadMeTemplate * ChocolateyInstall - Top level folder where Chocolatey is installed * ChocolateyPackageName - The name of the package, equivalent to the `` field in the nuspec * ChocolateyPackageTitle - The title of the package, equivalent to the `` field in the nuspec - * ChocolateyPackageVersion - The version of the package, equivalent to the `<version />` field in the nuspec + * ChocolateyPackageVersion - The normalized version of the package, equivalent to a normalized edition of the `<version />` field in the nuspec * ChocolateyPackageFolder - The top level location of the package folder - the folder where Chocolatey has downloaded and extracted the NuGet package, typically `C:\ProgramData\chocolatey\lib\packageName`. #### Advanced Environment Variables diff --git a/tests/chocolatey-tests/commands/choco-install.Tests.ps1 b/tests/chocolatey-tests/commands/choco-install.Tests.ps1 index e0664cff3..c5257a4d4 100644 --- a/tests/chocolatey-tests/commands/choco-install.Tests.ps1 +++ b/tests/chocolatey-tests/commands/choco-install.Tests.ps1 @@ -1863,6 +1863,39 @@ To install a local, or remote file, you may use: } } + # Tagged as Internal as this package needs to be packaged by an older version of Chocolatey CLI to have the nuspec version + # not be normalized. + Context 'Installing non-normalized package outputting all environment variables' -Tag Internal { + BeforeAll { + Restore-ChocolateyInstallSnapshot + + $Output = Invoke-Choco install test-environment --version 0.9 --confirm + } + + It 'Exits with Success (0)' { + $Output.ExitCode | Should -Be 0 -Because $Output.String + } + + It 'Outputs <Name> as <Value>' -ForEach @(@{ + Name = 'chocolateyPackageVersion' + Value= '0.9.0' + } + @{ + Name = 'packageVersion' + Value= '0.9.0' + } + @{ + Name = 'chocolateyPackageNuspecVersion' + Value= '0.9' + } + @{ + Name = 'packageNuspecVersion' + Value= '0.9' + }) { + $Output.Lines | Should -Contain "$Name=$Value" + } + } + # This needs to be the last test in this block, to ensure NuGet configurations aren't being created. # Any tests after this block are expected to generate the configuration as they're explicitly using the NuGet CLI Test-NuGetPaths From 580f86cc3c873bd60e7294602db61e55dfe89a13 Mon Sep 17 00:00:00 2001 From: Cory Knox <me@coryknox.dev> Date: Tue, 27 Jun 2023 07:34:10 -0700 Subject: [PATCH 49/52] (#3224) Update version check tests Previously the version check would assume that all of the output from `choco --version` should be considered as part of the version. However, if the licensed assembly reports it's not valid, it does so very early in the process, and outputs on this command before the version is output. In order to work around this, the command to get the running version should get just the very last line it's returned. --- tests/helpers/common/Chocolatey/Get-ChocolateyVersion.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/helpers/common/Chocolatey/Get-ChocolateyVersion.ps1 b/tests/helpers/common/Chocolatey/Get-ChocolateyVersion.ps1 index 867f67639..0be6be028 100644 --- a/tests/helpers/common/Chocolatey/Get-ChocolateyVersion.ps1 +++ b/tests/helpers/common/Chocolatey/Get-ChocolateyVersion.ps1 @@ -8,7 +8,7 @@ [CmdletBinding()] param() if (-not $script:runningVersion) { - [NuGet.Versioning.NuGetVersion]$script:runningVersion = ((Invoke-Choco --version).Lines | Where-Object { $_ -NotMatch "please upgrade" }) -join '`r`n' + [NuGet.Versioning.NuGetVersion]$script:runningVersion = (Invoke-Choco --version).Lines | Where-Object { $_ -Match "^\d+\.[\d\.]+" } | Select-Object -First 1 } $script:runningVersion From 3208ec48a957bf62dc090b29fb9560fd9a93cd46 Mon Sep 17 00:00:00 2001 From: Cory Knox <me@coryknox.dev> Date: Tue, 27 Jun 2023 09:59:43 -0700 Subject: [PATCH 50/52] (maint) Resave without BOM Visual Studio insists on saving this file without BOM. --- .../infrastructure.app/configuration/EnvironmentSettings.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs b/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs index afa69676a..eecfe7865 100644 --- a/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs +++ b/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs @@ -1,4 +1,4 @@ -// Copyright © 2017 - 2021 Chocolatey Software, Inc +// Copyright © 2017 - 2021 Chocolatey Software, Inc // Copyright © 2011 - 2017 RealDimensions Software, LLC // // Licensed under the Apache License, Version 2.0 (the "License"); From 275ed04ff22da1260654791a7ab6dce509787e9b Mon Sep 17 00:00:00 2001 From: Cory Knox <me@coryknox.dev> Date: Mon, 26 Jun 2023 14:43:23 -0700 Subject: [PATCH 51/52] (#3224) Add Assembly Loaded configuration option In order to determine if the Licensed Assembly has been loaded, we either need to validate the license every time, or add it somewhere that we can access more easily. This commit adds a `IsLicensedAssemblyLoaded` boolean to the `InformationCommand` property of `ChocolateyConfiguration` beside `IsLicensedVersion` so that we can reference this property instead of validating the license every time. Additionally when we're checking for license features, we should be also checking if the licensed assembly is loaded. When the licensed assembly is not fully loaded, many features may not work, or are not expected to be used. As such, this commit updates the logic to check for a valid license as well as the Assembly to be loaded so that we don't accidentally cause issues when the assembly is not being used. --- .../infrastructure.app/builders/ConfigurationBuilder.cs | 1 + .../configuration/ChocolateyConfiguration.cs | 1 + .../infrastructure.app/configuration/EnvironmentSettings.cs | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs b/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs index eb9d3afb8..a82d647c4 100644 --- a/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs +++ b/src/chocolatey/infrastructure.app/builders/ConfigurationBuilder.cs @@ -522,6 +522,7 @@ private static void SetEnvironmentOptions(ChocolateyConfiguration config) private static void SetLicensedOptions(ChocolateyConfiguration config, ChocolateyLicense license, ConfigFileSettings configFileSettings) { config.Information.IsLicensedVersion = license.IsLicensedVersion(); + config.Information.IsLicensedAssemblyLoaded = license.AssemblyLoaded; config.Information.LicenseType = license.LicenseType.DescriptionOrValue(); if (license.AssemblyLoaded) diff --git a/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs b/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs index 3e414158b..5ec4816f4 100644 --- a/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs +++ b/src/chocolatey/infrastructure.app/configuration/ChocolateyConfiguration.cs @@ -527,6 +527,7 @@ public sealed class InformationCommandConfiguration public bool IsUserRemote { get; set; } public bool IsProcessElevated { get; set; } public bool IsLicensedVersion { get; set; } + public bool IsLicensedAssemblyLoaded { get; set; } public string LicenseType { get; set; } public string CurrentDirectory { get; set; } } diff --git a/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs b/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs index eecfe7865..ce0fdb54d 100644 --- a/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs +++ b/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs @@ -134,10 +134,10 @@ public static void SetEnvironmentVariables(ChocolateyConfiguration config) private static void SetLicensedEnvironment(ChocolateyConfiguration config) { - if (!config.Information.IsLicensedVersion) return; - Environment.SetEnvironmentVariable("ChocolateyLicenseType", config.Information.LicenseType); + if (!(config.Information.IsLicensedVersion && config.Information.IsLicensedAssemblyLoaded)) return; + var licenseAssembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => a.GetName().Name.IsEqualTo("chocolatey.licensed")); if (licenseAssembly != null) From 293e480ea7ee3d949bfbc01acfa3d879cd687de9 Mon Sep 17 00:00:00 2001 From: Cory Knox <me@coryknox.dev> Date: Tue, 27 Jun 2023 07:32:58 -0700 Subject: [PATCH 52/52] (maint) If statement formatting change --- .../infrastructure.app/configuration/EnvironmentSettings.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs b/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs index ce0fdb54d..6f1decbde 100644 --- a/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs +++ b/src/chocolatey/infrastructure.app/configuration/EnvironmentSettings.cs @@ -136,7 +136,10 @@ private static void SetLicensedEnvironment(ChocolateyConfiguration config) { Environment.SetEnvironmentVariable("ChocolateyLicenseType", config.Information.LicenseType); - if (!(config.Information.IsLicensedVersion && config.Information.IsLicensedAssemblyLoaded)) return; + if (!(config.Information.IsLicensedVersion && config.Information.IsLicensedAssemblyLoaded)) + { + return; + } var licenseAssembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => a.GetName().Name.IsEqualTo("chocolatey.licensed"));