diff --git a/src/Cli/dotnet/CommandFactory/CommandResolution/ProjectToolsCommandResolver.cs b/src/Cli/dotnet/CommandFactory/CommandResolution/ProjectToolsCommandResolver.cs index 2f8bb7badd98..be3d9294b176 100644 --- a/src/Cli/dotnet/CommandFactory/CommandResolution/ProjectToolsCommandResolver.cs +++ b/src/Cli/dotnet/CommandFactory/CommandResolution/ProjectToolsCommandResolver.cs @@ -385,7 +385,7 @@ internal void GenerateDepsJsonFile( string? stdOut; string? stdErr; - var msbuildArgs = MSBuildArgs.AnalyzeMSBuildArguments([..args], CommonOptions.PropertiesOption, CommonOptions.RestorePropertiesOption, BuildCommandParser.TargetOption, BuildCommandParser.VerbosityOption); + var msbuildArgs = MSBuildArgs.AnalyzeMSBuildArguments([.. args], CommonOptions.PropertiesOption, CommonOptions.RestorePropertiesOption, BuildCommandParser.TargetOption, BuildCommandParser.VerbosityOption); var forwardingAppWithoutLogging = new MSBuildForwardingAppWithoutLogging(msbuildArgs, msBuildExePath); if (forwardingAppWithoutLogging.ExecuteMSBuildOutOfProc) { diff --git a/src/Cli/dotnet/Commands/Build/BuildCommand.cs b/src/Cli/dotnet/Commands/Build/BuildCommand.cs index 871ead794e84..4d8e425dace9 100644 --- a/src/Cli/dotnet/Commands/Build/BuildCommand.cs +++ b/src/Cli/dotnet/Commands/Build/BuildCommand.cs @@ -12,7 +12,7 @@ public static class BuildCommand { public static CommandBase FromArgs(string[] args, string? msbuildPath = null) { - var parseResult = Parser.Parse(["dotnet", "build", ..args]); + var parseResult = Parser.Parse(["dotnet", "build", .. args]); return FromParseResult(parseResult, msbuildPath); } diff --git a/src/Cli/dotnet/Commands/Clean/CleanCommand.cs b/src/Cli/dotnet/Commands/Clean/CleanCommand.cs index 1290b8b68cfd..7c5516b05dd3 100644 --- a/src/Cli/dotnet/Commands/Clean/CleanCommand.cs +++ b/src/Cli/dotnet/Commands/Clean/CleanCommand.cs @@ -13,7 +13,7 @@ public class CleanCommand(MSBuildArgs msbuildArgs, string? msbuildPath = null) : { public static CommandBase FromArgs(string[] args, string? msbuildPath = null) { - var result = Parser.Parse(["dotnet", "clean", ..args]); + var result = Parser.Parse(["dotnet", "clean", .. args]); return FromParseResult(result, msbuildPath); } @@ -33,7 +33,7 @@ public static CommandBase FromParseResult(ParseResult result, string? msbuildPat NoWriteBuildMarkers = true, }, static (msbuildArgs, msbuildPath) => new CleanCommand(msbuildArgs, msbuildPath), - [ CommonOptions.PropertiesOption, CommonOptions.RestorePropertiesOption, CleanCommandParser.TargetOption, CleanCommandParser.VerbosityOption ], + [CommonOptions.PropertiesOption, CommonOptions.RestorePropertiesOption, CleanCommandParser.TargetOption, CleanCommandParser.VerbosityOption], result, msbuildPath ); diff --git a/src/Cli/dotnet/Commands/Format/FormatCommand.cs b/src/Cli/dotnet/Commands/Format/FormatCommand.cs index 9ee9296172fa..d6629af67720 100644 --- a/src/Cli/dotnet/Commands/Format/FormatCommand.cs +++ b/src/Cli/dotnet/Commands/Format/FormatCommand.cs @@ -13,7 +13,7 @@ public class FormatCommand(IEnumerable argsToForward) : FormatForwarding { public static FormatCommand FromArgs(string[] args) { - var result = Parser.Parse(["dotnet", "format", ..args]); + var result = Parser.Parse(["dotnet", "format", .. args]); return FromParseResult(result); } diff --git a/src/Cli/dotnet/Commands/Hidden/Complete/CompleteCommand.cs b/src/Cli/dotnet/Commands/Hidden/Complete/CompleteCommand.cs index 5cdf66cfca6e..33904941b817 100644 --- a/src/Cli/dotnet/Commands/Hidden/Complete/CompleteCommand.cs +++ b/src/Cli/dotnet/Commands/Hidden/Complete/CompleteCommand.cs @@ -19,7 +19,7 @@ public static int Run(ParseResult parseResult) public static int RunWithReporter(string[] args, IReporter reporter) { - var result = Parser.Parse(["dotnet", "complete", ..args]); + var result = Parser.Parse(["dotnet", "complete", .. args]); return RunWithReporter(result, reporter); } diff --git a/src/Cli/dotnet/Commands/Hidden/InternalReportInstallSuccess/InternalReportInstallSuccessCommand.cs b/src/Cli/dotnet/Commands/Hidden/InternalReportInstallSuccess/InternalReportInstallSuccessCommand.cs index 744289023948..bed479d01816 100644 --- a/src/Cli/dotnet/Commands/Hidden/InternalReportInstallSuccess/InternalReportInstallSuccessCommand.cs +++ b/src/Cli/dotnet/Commands/Hidden/InternalReportInstallSuccess/InternalReportInstallSuccessCommand.cs @@ -25,7 +25,7 @@ public static int Run(ParseResult parseResult) public static void ProcessInputAndSendTelemetry(string[] args, ITelemetry telemetry) { - var result = Parser.Parse(["dotnet", "internal-reportinstallsuccess", ..args]); + var result = Parser.Parse(["dotnet", "internal-reportinstallsuccess", .. args]); ProcessInputAndSendTelemetry(result, telemetry); } diff --git a/src/Cli/dotnet/Commands/MSBuild/MSBuildCommand.cs b/src/Cli/dotnet/Commands/MSBuild/MSBuildCommand.cs index cf0b7e06c660..5deae21cb609 100644 --- a/src/Cli/dotnet/Commands/MSBuild/MSBuildCommand.cs +++ b/src/Cli/dotnet/Commands/MSBuild/MSBuildCommand.cs @@ -10,11 +10,11 @@ namespace Microsoft.DotNet.Cli.Commands.MSBuild; public class MSBuildCommand( IEnumerable msbuildArgs, string? msbuildPath = null -) : MSBuildForwardingApp(MSBuildArgs.AnalyzeMSBuildArguments([..msbuildArgs], CommonOptions.PropertiesOption, CommonOptions.RestorePropertiesOption, MSBuildCommandParser.TargetOption, CommonOptions.VerbosityOption()), msbuildPath, includeLogo: true) +) : MSBuildForwardingApp(MSBuildArgs.AnalyzeMSBuildArguments([.. msbuildArgs], CommonOptions.PropertiesOption, CommonOptions.RestorePropertiesOption, MSBuildCommandParser.TargetOption, CommonOptions.VerbosityOption()), msbuildPath, includeLogo: true) { public static MSBuildCommand FromArgs(string[] args, string? msbuildPath = null) { - var result = Parser.Parse(["dotnet", "msbuild", ..args]); + var result = Parser.Parse(["dotnet", "msbuild", .. args]); return FromParseResult(result, msbuildPath); } diff --git a/src/Cli/dotnet/Commands/Pack/PackCommand.cs b/src/Cli/dotnet/Commands/Pack/PackCommand.cs index 1e88f22688f5..3d574c30bf18 100644 --- a/src/Cli/dotnet/Commands/Pack/PackCommand.cs +++ b/src/Cli/dotnet/Commands/Pack/PackCommand.cs @@ -24,7 +24,7 @@ public class PackCommand( { public static CommandBase FromArgs(string[] args, string? msbuildPath = null) { - var parseResult = Parser.Parse(["dotnet", "pack", ..args]); + var parseResult = Parser.Parse(["dotnet", "pack", .. args]); return FromParseResult(parseResult, msbuildPath); } @@ -92,14 +92,14 @@ public static int RunPackCommand(ParseResult parseResult) if (args.Count != 1) { - Console.Error.WriteLine(CliStrings.PackCmd_OneNuspecAllowed); + Console.Error.WriteLine(CliStrings.PackCmd_OneNuspecAllowed); return 1; } var nuspecPath = args[0]; var packArgs = new PackArgs() - { + { Logger = new NuGetConsoleLogger(), Exclude = new List(), OutputDirectory = parseResult.GetValue(PackCommandParser.OutputOption), diff --git a/src/Cli/dotnet/Commands/Package/List/PackageListCommand.cs b/src/Cli/dotnet/Commands/Package/List/PackageListCommand.cs index 27520377cad2..7e340ac81fa7 100644 --- a/src/Cli/dotnet/Commands/Package/List/PackageListCommand.cs +++ b/src/Cli/dotnet/Commands/Package/List/PackageListCommand.cs @@ -4,12 +4,12 @@ #nullable disable using System.CommandLine; +using System.Globalization; using Microsoft.DotNet.Cli.Commands.Hidden.List; +using Microsoft.DotNet.Cli.Commands.MSBuild; using Microsoft.DotNet.Cli.Commands.NuGet; using Microsoft.DotNet.Cli.Extensions; using Microsoft.DotNet.Cli.Utils; -using System.Globalization; -using Microsoft.DotNet.Cli.Commands.MSBuild; namespace Microsoft.DotNet.Cli.Commands.Package.List; diff --git a/src/Cli/dotnet/Commands/Package/Search/PackageSearchCommand.cs b/src/Cli/dotnet/Commands/Package/Search/PackageSearchCommand.cs index 4317f96329be..8bbfd5261cdc 100644 --- a/src/Cli/dotnet/Commands/Package/Search/PackageSearchCommand.cs +++ b/src/Cli/dotnet/Commands/Package/Search/PackageSearchCommand.cs @@ -3,9 +3,9 @@ #nullable disable +using System.CommandLine; using Microsoft.DotNet.Cli.Commands.NuGet; using Microsoft.DotNet.Cli.Extensions; -using System.CommandLine; namespace Microsoft.DotNet.Cli.Commands.Package.Search; diff --git a/src/Cli/dotnet/Commands/Publish/PublishCommand.cs b/src/Cli/dotnet/Commands/Publish/PublishCommand.cs index 45dc32c84300..dfafac3d4807 100644 --- a/src/Cli/dotnet/Commands/Publish/PublishCommand.cs +++ b/src/Cli/dotnet/Commands/Publish/PublishCommand.cs @@ -21,7 +21,7 @@ private PublishCommand( public static CommandBase FromArgs(string[] args, string? msbuildPath = null) { - var parseResult = Parser.Parse(["dotnet", "publish", ..args]); + var parseResult = Parser.Parse(["dotnet", "publish", .. args]); return FromParseResult(parseResult); } diff --git a/src/Cli/dotnet/Commands/Restore/RestoreCommand.cs b/src/Cli/dotnet/Commands/Restore/RestoreCommand.cs index 6eb650b0e261..bd685b2b6ec2 100644 --- a/src/Cli/dotnet/Commands/Restore/RestoreCommand.cs +++ b/src/Cli/dotnet/Commands/Restore/RestoreCommand.cs @@ -13,7 +13,7 @@ public static class RestoreCommand { public static CommandBase FromArgs(string[] args, string? msbuildPath = null) { - var result = Parser.Parse(["dotnet", "restore", ..args]); + var result = Parser.Parse(["dotnet", "restore", .. args]); return FromParseResult(result, msbuildPath); } diff --git a/src/Cli/dotnet/Commands/Restore/RestoringCommand.cs b/src/Cli/dotnet/Commands/Restore/RestoringCommand.cs index dd2e961c1524..ea92c35ab063 100644 --- a/src/Cli/dotnet/Commands/Restore/RestoringCommand.cs +++ b/src/Cli/dotnet/Commands/Restore/RestoringCommand.cs @@ -37,7 +37,7 @@ public RestoringCommand( string? msbuildPath = null, string? userProfileDir = null, bool? advertiseWorkloadUpdates = null) - : base(GetCommandArguments(msbuildArgs, noRestore), msbuildPath) + : base(GetCommandArguments(msbuildArgs, noRestore), msbuildPath) { userProfileDir = CliFolderPathCalculator.DotnetUserProfileFolderPath; Task.Run(() => WorkloadManifestUpdater.BackgroundUpdateAdvertisingManifestsAsync(userProfileDir)); @@ -122,13 +122,13 @@ private static MSBuildArgs GetCommandArguments( ReadOnlyDictionary restoreProperties = msbuildArgs.GlobalProperties? .Where(kvp => !IsPropertyExcludedFromRestore(kvp.Key))? - .ToDictionary(kvp => kvp.Key, kvp => kvp.Value, StringComparer.OrdinalIgnoreCase) is { } filteredList ? new(filteredList): ReadOnlyDictionary.Empty; + .ToDictionary(kvp => kvp.Key, kvp => kvp.Value, StringComparer.OrdinalIgnoreCase) is { } filteredList ? new(filteredList) : ReadOnlyDictionary.Empty; var restoreMSBuildArgs = MSBuildArgs.FromProperties(RestoreOptimizationProperties) .CloneWithAdditionalTargets("Restore") .CloneWithExplicitArgs([.. newArgumentsToAdd, .. existingArgumentsToForward]) .CloneWithAdditionalProperties(restoreProperties); - if (msbuildArgs.Verbosity is {} verbosity) + if (msbuildArgs.Verbosity is { } verbosity) { restoreMSBuildArgs = restoreMSBuildArgs.CloneWithVerbosity(verbosity); } @@ -175,7 +175,7 @@ private static bool HasPropertyToExcludeFromRestore(MSBuildArgs msbuildArgs) private static readonly List FlagsThatTriggerSilentSeparateRestore = [.. ComputeFlags(FlagsThatTriggerSilentRestore)]; - private static readonly List PropertiesToExcludeFromSeparateRestore = [ .. PropertiesToExcludeFromRestore ]; + private static readonly List PropertiesToExcludeFromSeparateRestore = [.. PropertiesToExcludeFromRestore]; /// /// We investigate the arguments we're about to send to a separate restore call and filter out diff --git a/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsManager.cs b/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsManager.cs index a1776027476d..3e4c7b2bd53e 100644 --- a/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsManager.cs +++ b/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsManager.cs @@ -84,7 +84,7 @@ public static LaunchSettingsApplyResult TryApplyLaunchSettings(string launchSett { if (prop.Value.TryGetProperty(CommandNameKey, out var commandNameElement) && commandNameElement.ValueKind == JsonValueKind.String) { - if (commandNameElement.GetString() is { } commandNameElementKey && _providers.ContainsKey(commandNameElementKey)) + if (commandNameElement.GetString() is { } commandNameElementKey && _providers.ContainsKey(commandNameElementKey)) { profileObject = prop.Value; break; @@ -120,7 +120,7 @@ public static LaunchSettingsApplyResult TryApplyLaunchSettings(string launchSett } } - private static bool TryLocateHandler(string? commandName, [NotNullWhen(true)]out ILaunchSettingsProvider? provider) + private static bool TryLocateHandler(string? commandName, [NotNullWhen(true)] out ILaunchSettingsProvider? provider) { if (commandName == null) { diff --git a/src/Cli/dotnet/Commands/Run/RunCommand.cs b/src/Cli/dotnet/Commands/Run/RunCommand.cs index 33ec7b5e3219..fb58a107547d 100644 --- a/src/Cli/dotnet/Commands/Run/RunCommand.cs +++ b/src/Cli/dotnet/Commands/Run/RunCommand.cs @@ -824,11 +824,11 @@ private void SendProjectBasedTelemetry(ProjectLaunchSettingsModel? launchSetting { Debug.Assert(ProjectFileFullPath != null); var projectIdentifier = RunTelemetry.GetProjectBasedIdentifier(ProjectFileFullPath, GetRepositoryRoot(), Sha256Hasher.Hash); - + // Get package and project reference counts for project-based apps int packageReferenceCount = 0; int projectReferenceCount = 0; - + // Try to get project information for telemetry if we built the project if (ShouldBuild) { @@ -837,10 +837,10 @@ private void SendProjectBasedTelemetry(ProjectLaunchSettingsModel? launchSetting var globalProperties = MSBuildArgs.GlobalProperties?.ToDictionary() ?? new Dictionary(StringComparer.OrdinalIgnoreCase); globalProperties[Constants.EnableDefaultItems] = "false"; globalProperties[Constants.MSBuildExtensionsPath] = AppContext.BaseDirectory; - + using var collection = new ProjectCollection(globalProperties: globalProperties); var project = collection.LoadProject(ProjectFileFullPath).CreateProjectInstance(); - + packageReferenceCount = RunTelemetry.CountPackageReferences(project); projectReferenceCount = RunTelemetry.CountProjectReferences(project); } @@ -869,10 +869,10 @@ private void SendProjectBasedTelemetry(ProjectLaunchSettingsModel? launchSetting { try { - var currentDir = ProjectFileFullPath != null + var currentDir = ProjectFileFullPath != null ? Path.GetDirectoryName(ProjectFileFullPath) : Directory.GetCurrentDirectory(); - + while (currentDir != null) { if (Directory.Exists(Path.Combine(currentDir, ".git"))) @@ -886,7 +886,7 @@ private void SendProjectBasedTelemetry(ProjectLaunchSettingsModel? launchSetting { // Ignore errors when trying to find repo root } - + return null; } } diff --git a/src/Cli/dotnet/Commands/Run/RunTelemetry.cs b/src/Cli/dotnet/Commands/Run/RunTelemetry.cs index 35e13b2d3fd2..47fae9a27f85 100644 --- a/src/Cli/dotnet/Commands/Run/RunTelemetry.cs +++ b/src/Cli/dotnet/Commands/Run/RunTelemetry.cs @@ -234,4 +234,4 @@ private static bool IsDefaultProfile(string? profileName) // The default profile name at this point is "(Default)" return profileName.Equals("(Default)", StringComparison.OrdinalIgnoreCase); } -} \ No newline at end of file +} diff --git a/src/Cli/dotnet/Commands/Solution/Migrate/SolutionMigrateCommand.cs b/src/Cli/dotnet/Commands/Solution/Migrate/SolutionMigrateCommand.cs index 074431c8981b..8c445a02d87f 100644 --- a/src/Cli/dotnet/Commands/Solution/Migrate/SolutionMigrateCommand.cs +++ b/src/Cli/dotnet/Commands/Solution/Migrate/SolutionMigrateCommand.cs @@ -29,7 +29,9 @@ public override int Execute() { ConvertToSlnxAsync(slnFileFullPath, slnxFileFullPath, CancellationToken.None).Wait(); return 0; - } catch (Exception ex) { + } + catch (Exception ex) + { throw new GracefulException(ex.Message, ex); } } diff --git a/src/Cli/dotnet/Commands/Solution/Remove/SolutionRemoveCommand.cs b/src/Cli/dotnet/Commands/Solution/Remove/SolutionRemoveCommand.cs index 36030bd22621..a0e624ef5a4a 100644 --- a/src/Cli/dotnet/Commands/Solution/Remove/SolutionRemoveCommand.cs +++ b/src/Cli/dotnet/Commands/Solution/Remove/SolutionRemoveCommand.cs @@ -124,7 +124,7 @@ private static async Task RemoveProjectsAsync(string solutionFileFullPath, IEnum { solution.RemoveFolder(folder); // After removal, adjust index and continue to avoid skipping folders after removal - i--; + i--; } } diff --git a/src/Cli/dotnet/Commands/Store/StoreCommand.cs b/src/Cli/dotnet/Commands/Store/StoreCommand.cs index 0c7846c513e2..f02b52b641dc 100644 --- a/src/Cli/dotnet/Commands/Store/StoreCommand.cs +++ b/src/Cli/dotnet/Commands/Store/StoreCommand.cs @@ -19,7 +19,7 @@ private StoreCommand(IEnumerable msbuildArgs, string msbuildPath = null) public static StoreCommand FromArgs(string[] args, string msbuildPath = null) { - var result = Parser.Parse(["dotnet", "store", ..args]); + var result = Parser.Parse(["dotnet", "store", .. args]); return FromParseResult(result, msbuildPath); } diff --git a/src/Cli/dotnet/Commands/Test/MTP/Terminal/TerminalTestReporter.cs b/src/Cli/dotnet/Commands/Test/MTP/Terminal/TerminalTestReporter.cs index 4494ea61535c..dea19d5ba331 100644 --- a/src/Cli/dotnet/Commands/Test/MTP/Terminal/TerminalTestReporter.cs +++ b/src/Cli/dotnet/Commands/Test/MTP/Terminal/TerminalTestReporter.cs @@ -1,12 +1,12 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Collections.Concurrent; -using Microsoft.TemplateEngine.Cli.Help; using System.Globalization; using System.Text.RegularExpressions; using Microsoft.CodeAnalysis; -using Microsoft.Testing.Platform.OutputDevice.Terminal; using Microsoft.DotNet.Cli.Commands.Test.IPC.Models; +using Microsoft.TemplateEngine.Cli.Help; +using Microsoft.Testing.Platform.OutputDevice.Terminal; namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; @@ -801,7 +801,7 @@ void AppendOutputWhenPresent(string description, string? output) private static void AppendAssemblySummary(TestProgressState assemblyRun, ITerminal terminal) { terminal.ResetColor(); - + AppendAssemblyLinkTargetFrameworkAndArchitecture(terminal, assemblyRun.Assembly, assemblyRun.TargetFramework, assemblyRun.Architecture); terminal.Append(' '); AppendAssemblyResult(terminal, assemblyRun); diff --git a/src/Cli/dotnet/Commands/Test/MTP/TestApplicationActionQueue.cs b/src/Cli/dotnet/Commands/Test/MTP/TestApplicationActionQueue.cs index 41ee319317e7..4496703ace28 100644 --- a/src/Cli/dotnet/Commands/Test/MTP/TestApplicationActionQueue.cs +++ b/src/Cli/dotnet/Commands/Test/MTP/TestApplicationActionQueue.cs @@ -78,7 +78,7 @@ private async Task Read(BuildOptions buildOptions, TestOptions testOptions, Term { result = ExitCode.GenericFailure; } - + lock (_lock) { if (_aggregateExitCode is null) diff --git a/src/Cli/dotnet/Commands/Test/VSTest/TestCommand.cs b/src/Cli/dotnet/Commands/Test/VSTest/TestCommand.cs index cf082e5e052e..5327f693f049 100644 --- a/src/Cli/dotnet/Commands/Test/VSTest/TestCommand.cs +++ b/src/Cli/dotnet/Commands/Test/VSTest/TestCommand.cs @@ -154,7 +154,7 @@ private static int ForwardToVSTestConsole(ParseResult parseResult, string[] args public static TestCommand FromArgs(string[] args, string? testSessionCorrelationId = null, string? msbuildPath = null) { - var parseResult = Parser.Parse(["dotnet", "test", ..args]); + var parseResult = Parser.Parse(["dotnet", "test", .. args]); // settings parameters are after -- (including --), these should not be considered by the parser string[] settings = [.. args.SkipWhile(a => a != "--")]; @@ -240,9 +240,10 @@ private static TestCommand FromParseResult(ParseResult result, string[] settings } } - + Dictionary variables = VSTestForwardingApp.GetVSTestRootVariables(); - foreach (var (rootVariableName, rootValue) in variables) { + foreach (var (rootVariableName, rootValue) in variables) + { testCommand.EnvironmentVariable(rootVariableName, rootValue); VSTestTrace.SafeWriteTrace(() => $"Root variable set {rootVariableName}:{rootValue}"); } diff --git a/src/Cli/dotnet/Commands/Test/VSTest/VSTestForwardingApp.cs b/src/Cli/dotnet/Commands/Test/VSTest/VSTestForwardingApp.cs index fb81e15466f9..26a021485c97 100644 --- a/src/Cli/dotnet/Commands/Test/VSTest/VSTestForwardingApp.cs +++ b/src/Cli/dotnet/Commands/Test/VSTest/VSTestForwardingApp.cs @@ -20,7 +20,7 @@ public VSTestForwardingApp(IEnumerable argsToForward) WithEnvironmentVariable(rootVariableName, rootValue); VSTestTrace.SafeWriteTrace(() => $"Root variable set {rootVariableName}:{rootValue}"); } - + VSTestTrace.SafeWriteTrace(() => $"Forwarding to '{GetVSTestExePath()}' with args \"{argsToForward?.Aggregate((a, b) => $"{a} | {b}")}\""); } diff --git a/src/Cli/dotnet/Commands/Tool/Install/ToolInstallGlobalOrToolPathCommand.cs b/src/Cli/dotnet/Commands/Tool/Install/ToolInstallGlobalOrToolPathCommand.cs index 59a47e49159f..b9377c1f6b00 100644 --- a/src/Cli/dotnet/Commands/Tool/Install/ToolInstallGlobalOrToolPathCommand.cs +++ b/src/Cli/dotnet/Commands/Tool/Install/ToolInstallGlobalOrToolPathCommand.cs @@ -2,19 +2,19 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.CommandLine; +using Microsoft.DotNet.Cli.Commands.Tool.List; +using Microsoft.DotNet.Cli.Commands.Tool.Uninstall; +using Microsoft.DotNet.Cli.Commands.Tool.Update; +using Microsoft.DotNet.Cli.Extensions; using Microsoft.DotNet.Cli.NuGetPackageDownloader; +using Microsoft.DotNet.Cli.ShellShim; using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.DotNet.Cli.Utils; +using Microsoft.DotNet.Cli.Utils.Extensions; using Microsoft.Extensions.EnvironmentAbstractions; using NuGet.Common; using NuGet.Frameworks; using NuGet.Versioning; -using Microsoft.DotNet.Cli.Utils.Extensions; -using Microsoft.DotNet.Cli.Extensions; -using Microsoft.DotNet.Cli.ShellShim; -using Microsoft.DotNet.Cli.Commands.Tool.Update; -using Microsoft.DotNet.Cli.Commands.Tool.Uninstall; -using Microsoft.DotNet.Cli.Commands.Tool.List; namespace Microsoft.DotNet.Cli.Commands.Tool.Install; diff --git a/src/Cli/dotnet/Commands/Tool/Install/ToolInstallLocalCommand.cs b/src/Cli/dotnet/Commands/Tool/Install/ToolInstallLocalCommand.cs index 87fb7860f992..e0bf8ccd3247 100644 --- a/src/Cli/dotnet/Commands/Tool/Install/ToolInstallLocalCommand.cs +++ b/src/Cli/dotnet/Commands/Tool/Install/ToolInstallLocalCommand.cs @@ -83,7 +83,7 @@ public override int Execute() } else { - return ExecuteInstallCommand((PackageId) _packageId); + return ExecuteInstallCommand((PackageId)_packageId); } } diff --git a/src/Cli/dotnet/Commands/Tool/List/ToolListJsonHelper.cs b/src/Cli/dotnet/Commands/Tool/List/ToolListJsonHelper.cs index 2ff9552ceeca..914f19efe192 100644 --- a/src/Cli/dotnet/Commands/Tool/List/ToolListJsonHelper.cs +++ b/src/Cli/dotnet/Commands/Tool/List/ToolListJsonHelper.cs @@ -10,12 +10,12 @@ namespace Microsoft.DotNet.Cli.Commands.Tool.List; internal sealed class VersionedDataContract { - /// - /// The version of the JSON format for dotnet tool list. - /// + /// + /// The version of the JSON format for dotnet tool list. + /// [JsonPropertyName("version")] public int Version { get; init; } = 1; - + [JsonPropertyName("data")] public required TContract Data { get; init; } } @@ -24,10 +24,10 @@ internal class ToolListJsonContract { [JsonPropertyName("packageId")] public required string PackageId { get; init; } - + [JsonPropertyName("version")] public required string Version { get; init; } - + [JsonPropertyName("commands")] public required string[] Commands { get; init; } } diff --git a/src/Cli/dotnet/Commands/Tool/Restore/ToolPackageRestorer.cs b/src/Cli/dotnet/Commands/Tool/Restore/ToolPackageRestorer.cs index b1c3b3f4ed52..1377a97cb006 100644 --- a/src/Cli/dotnet/Commands/Tool/Restore/ToolPackageRestorer.cs +++ b/src/Cli/dotnet/Commands/Tool/Restore/ToolPackageRestorer.cs @@ -109,7 +109,7 @@ private static bool ManifestCommandMatchesActualInPackage( IReadOnlyList toolPackageCommands) { ToolCommandName[] commandsFromPackage = [.. toolPackageCommands.Select(t => t.Name)]; -return !commandsFromManifest.Any(cmd => !commandsFromPackage.Contains(cmd)) && !commandsFromPackage.Any(cmd => !commandsFromManifest.Contains(cmd)); + return !commandsFromManifest.Any(cmd => !commandsFromPackage.Contains(cmd)) && !commandsFromPackage.Any(cmd => !commandsFromManifest.Contains(cmd)); } public bool PackageHasBeenRestored( diff --git a/src/Cli/dotnet/Commands/Tool/Uninstall/ToolUninstallGlobalOrToolPathCommand.cs b/src/Cli/dotnet/Commands/Tool/Uninstall/ToolUninstallGlobalOrToolPathCommand.cs index 58db9f55cc04..6db95e91941a 100644 --- a/src/Cli/dotnet/Commands/Tool/Uninstall/ToolUninstallGlobalOrToolPathCommand.cs +++ b/src/Cli/dotnet/Commands/Tool/Uninstall/ToolUninstallGlobalOrToolPathCommand.cs @@ -73,7 +73,7 @@ public override int Execute() TransactionalAction.Run(() => { shellShimRepository.RemoveShim(package.Command); - + toolPackageUninstaller.Uninstall(package.PackageDirectory); }); diff --git a/src/Cli/dotnet/Commands/Tool/Update/ToolUpdateGlobalOrToolPathCommand.cs b/src/Cli/dotnet/Commands/Tool/Update/ToolUpdateGlobalOrToolPathCommand.cs index 4c73cebd76f0..2d4c881bbc83 100644 --- a/src/Cli/dotnet/Commands/Tool/Update/ToolUpdateGlobalOrToolPathCommand.cs +++ b/src/Cli/dotnet/Commands/Tool/Update/ToolUpdateGlobalOrToolPathCommand.cs @@ -4,12 +4,12 @@ #nullable disable using System.CommandLine; +using Microsoft.DotNet.Cli.Commands.Tool.Install; +using Microsoft.DotNet.Cli.ShellShim; +using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.DotNet.Cli.Utils; using Microsoft.Extensions.EnvironmentAbstractions; -using Microsoft.DotNet.Cli.ToolPackage; using CreateShellShimRepository = Microsoft.DotNet.Cli.Commands.Tool.Install.CreateShellShimRepository; -using Microsoft.DotNet.Cli.ShellShim; -using Microsoft.DotNet.Cli.Commands.Tool.Install; namespace Microsoft.DotNet.Cli.Commands.Tool.Update; diff --git a/src/Cli/dotnet/Commands/Workload/History/WorkloadHistoryCommand.cs b/src/Cli/dotnet/Commands/Workload/History/WorkloadHistoryCommand.cs index ceebc46404a9..cbb727effd59 100644 --- a/src/Cli/dotnet/Commands/Workload/History/WorkloadHistoryCommand.cs +++ b/src/Cli/dotnet/Commands/Workload/History/WorkloadHistoryCommand.cs @@ -4,11 +4,11 @@ #nullable disable using System.CommandLine; +using Microsoft.Deployment.DotNet.Releases; +using Microsoft.DotNet.Cli.Commands.Workload.Install; using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.Utils; using Microsoft.NET.Sdk.WorkloadManifestReader; -using Microsoft.Deployment.DotNet.Releases; -using Microsoft.DotNet.Cli.Commands.Workload.Install; namespace Microsoft.DotNet.Cli.Commands.Workload.History; diff --git a/src/Cli/dotnet/Commands/Workload/Restore/WorkloadRestoreCommand.cs b/src/Cli/dotnet/Commands/Workload/Restore/WorkloadRestoreCommand.cs index 1dbc16110933..e1f64e74fb98 100644 --- a/src/Cli/dotnet/Commands/Workload/Restore/WorkloadRestoreCommand.cs +++ b/src/Cli/dotnet/Commands/Workload/Restore/WorkloadRestoreCommand.cs @@ -60,7 +60,7 @@ public override int Execute() }); workloadInstaller.Shutdown(); - + return 0; } diff --git a/src/Cli/dotnet/Commands/Workload/Search/WorkloadSearchVersionsCommand.cs b/src/Cli/dotnet/Commands/Workload/Search/WorkloadSearchVersionsCommand.cs index 7946493de7d3..d4227372c702 100644 --- a/src/Cli/dotnet/Commands/Workload/Search/WorkloadSearchVersionsCommand.cs +++ b/src/Cli/dotnet/Commands/Workload/Search/WorkloadSearchVersionsCommand.cs @@ -161,9 +161,16 @@ private static List GetVersions(int numberOfWorkloadSetsToTake, SdkFeatu installer ??= GenerateInstaller(Utils.Reporter.NullReporter, featureBand, resolver, VerbosityOptions.d, interactive: false); var packageId = installer.GetManifestPackageId(new ManifestId("Microsoft.NET.Workloads"), featureBand); - return [.. packageDownloader.GetLatestPackageVersions(packageId, numberOfWorkloadSetsToTake, packageSourceLocation: null, includePreview: includePreviews) + // Get more results than needed to account for potential duplicates from multiple feeds + int resultsToRequest = numberOfWorkloadSetsToTake * 2; + + var versions = packageDownloader.GetLatestPackageVersions(packageId, resultsToRequest, packageSourceLocation: null, includePreview: includePreviews) .GetAwaiter().GetResult() - .Select(version => WorkloadSetVersion.FromWorkloadSetPackageVersion(featureBand, version.ToString()))]; + .Select(version => WorkloadSetVersion.FromWorkloadSetPackageVersion(featureBand, version.ToString())) + .Distinct() + .OrderByDescending(v => v); + + return [.. (numberOfWorkloadSetsToTake == 0 ? versions : versions.Take(numberOfWorkloadSetsToTake))]; } private IEnumerable FindBestWorkloadSetsFromComponents() diff --git a/src/Cli/dotnet/Commands/Workload/WorkloadCommandBase.cs b/src/Cli/dotnet/Commands/Workload/WorkloadCommandBase.cs index 44b441349be3..83c3622afd18 100644 --- a/src/Cli/dotnet/Commands/Workload/WorkloadCommandBase.cs +++ b/src/Cli/dotnet/Commands/Workload/WorkloadCommandBase.cs @@ -96,7 +96,7 @@ public WorkloadCommandBase( Verbosity = verbosityOptions == null ? parseResult.GetValue(CommonOptions.VerbosityOption(VerbosityOptions.normal)) - : parseResult.GetValue(verbosityOptions) ; + : parseResult.GetValue(verbosityOptions); ILogger nugetLogger = Verbosity.IsDetailedOrDiagnostic() ? new NuGetConsoleLogger() : new NullLogger(); diff --git a/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs b/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs index 3c6e0bb43c6d..79775f7664ac 100644 --- a/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs +++ b/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs @@ -20,8 +20,8 @@ using Microsoft.DotNet.Cli.Utils; using Microsoft.NET.Sdk.WorkloadManifestReader; using Microsoft.TemplateEngine.Cli.Commands; -using IReporter = Microsoft.DotNet.Cli.Utils.IReporter; using Command = System.CommandLine.Command; +using IReporter = Microsoft.DotNet.Cli.Utils.IReporter; namespace Microsoft.DotNet.Cli.Commands.Workload; diff --git a/src/Cli/dotnet/CommonOptions.cs b/src/Cli/dotnet/CommonOptions.cs index aa1730a23525..2b0c376c906f 100644 --- a/src/Cli/dotnet/CommonOptions.cs +++ b/src/Cli/dotnet/CommonOptions.cs @@ -348,7 +348,7 @@ public static ForwardedOption InteractiveOption(bool acceptArgument = fals }; public static readonly Option> EnvOption = CreateEnvOption(CliStrings.CmdEnvironmentVariableDescription); - + public static readonly Option> TestEnvOption = CreateEnvOption(CliStrings.CmdTestEnvironmentVariableDescription); private static IReadOnlyDictionary ParseEnvironmentVariables(ArgumentResult argumentResult) diff --git a/src/Cli/dotnet/DotNetCommandFactory.cs b/src/Cli/dotnet/DotNetCommandFactory.cs index ea5eb912e8f6..dcb70b05e6c9 100644 --- a/src/Cli/dotnet/DotNetCommandFactory.cs +++ b/src/Cli/dotnet/DotNetCommandFactory.cs @@ -38,7 +38,7 @@ private static bool TryGetBuiltInCommand(string commandName, out Func Parser.Invoke([commandName, ..args]); + commandFunc = (args) => Parser.Invoke([commandName, .. args]); return true; } commandFunc = null; diff --git a/src/Cli/dotnet/Extensions/CommonOptionsExtensions.cs b/src/Cli/dotnet/Extensions/CommonOptionsExtensions.cs index 9254bbd73b77..a225056f02f8 100644 --- a/src/Cli/dotnet/Extensions/CommonOptionsExtensions.cs +++ b/src/Cli/dotnet/Extensions/CommonOptionsExtensions.cs @@ -4,8 +4,8 @@ #nullable disable using Microsoft.Build.Framework; -using Microsoft.Extensions.Logging; using Microsoft.DotNet.Cli.Utils; +using Microsoft.Extensions.Logging; namespace Microsoft.DotNet.Cli.Extensions; diff --git a/src/Cli/dotnet/NugetPackageDownloader/INuGetPackageDownloader.cs b/src/Cli/dotnet/NugetPackageDownloader/INuGetPackageDownloader.cs index a5e54ba06bb9..0c606c61dbf7 100644 --- a/src/Cli/dotnet/NugetPackageDownloader/INuGetPackageDownloader.cs +++ b/src/Cli/dotnet/NugetPackageDownloader/INuGetPackageDownloader.cs @@ -43,4 +43,4 @@ Task GetBestPackageVersionAsync(PackageId packageId, Task<(NuGetVersion version, PackageSource source)> GetBestPackageVersionAndSourceAsync(PackageId packageId, VersionRange versionRange, PackageSourceLocation packageSourceLocation = null); -} +} diff --git a/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs b/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs index 8ac89af40212..d4a036721977 100644 --- a/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs +++ b/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs @@ -73,7 +73,7 @@ public NuGetPackageDownloader( _retryTimer = timer; _sourceRepositories = new(); // If windows or env variable is set, verify signatures - _verifySignatures = verifySignatures && (OperatingSystem.IsWindows() ? true + _verifySignatures = verifySignatures && (OperatingSystem.IsWindows() ? true : bool.TryParse(Environment.GetEnvironmentVariable(NuGetSignatureVerificationEnabler.DotNetNuGetSignatureVerification), out var shouldVerifySignature) ? shouldVerifySignature : OperatingSystem.IsLinux()); _cacheSettings = new SourceCacheContext @@ -120,7 +120,7 @@ public async Task DownloadPackageAsync(PackageId packageId, throw new ArgumentException($"Package download folder must be specified either via {nameof(NuGetPackageDownloader)} constructor or via {nameof(downloadFolder)} method argument."); } var pathResolver = new VersionFolderPathResolver(resolvedDownloadFolder); - + string nupkgPath = pathResolver.GetPackageFilePath(packageId.ToString(), resolvedPackageVersion); Directory.CreateDirectory(Path.GetDirectoryName(nupkgPath)); diff --git a/src/Cli/dotnet/ReleasePropertyProjectLocator.cs b/src/Cli/dotnet/ReleasePropertyProjectLocator.cs index e85fb9878d4c..645215ff1c95 100644 --- a/src/Cli/dotnet/ReleasePropertyProjectLocator.cs +++ b/src/Cli/dotnet/ReleasePropertyProjectLocator.cs @@ -230,8 +230,7 @@ DependentCommandOptions commandOptions { return projectData; } - }; - + } return null; } diff --git a/src/Cli/dotnet/Telemetry/DevDeviceIDGetter.cs b/src/Cli/dotnet/Telemetry/DevDeviceIDGetter.cs index 015af6723629..7960deb22cc7 100644 --- a/src/Cli/dotnet/Telemetry/DevDeviceIDGetter.cs +++ b/src/Cli/dotnet/Telemetry/DevDeviceIDGetter.cs @@ -85,11 +85,11 @@ private static void CacheDeviceId(string deviceId) // Cache device Id in Windows registry matching the OS architecture using (RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64)) { - using(var key = baseKey.CreateSubKey(@"SOFTWARE\Microsoft\DeveloperTools")) + using (var key = baseKey.CreateSubKey(@"SOFTWARE\Microsoft\DeveloperTools")) { if (key != null) { - key.SetValue("deviceid", deviceId); + key.SetValue("deviceid", deviceId); } } } diff --git a/src/Cli/dotnet/Telemetry/EnvironmentDetectionRule.cs b/src/Cli/dotnet/Telemetry/EnvironmentDetectionRule.cs index 5cd73f53abb8..5f1aab066131 100644 --- a/src/Cli/dotnet/Telemetry/EnvironmentDetectionRule.cs +++ b/src/Cli/dotnet/Telemetry/EnvironmentDetectionRule.cs @@ -33,7 +33,7 @@ public BooleanEnvironmentRule(params string[] variables) public override bool IsMatch() { - return _variables.Any(variable => + return _variables.Any(variable => bool.TryParse(Environment.GetEnvironmentVariable(variable), out bool value) && value); } } @@ -96,8 +96,8 @@ public EnvironmentDetectionRuleWithResult(T result, params string[] variables) /// The result value if the rule matches; otherwise, null. public T? GetResult() { - return _variables.Any(variable => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable(variable))) - ? _result + return _variables.Any(variable => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable(variable))) + ? _result : null; } -} \ No newline at end of file +} diff --git a/src/Cli/dotnet/Telemetry/ILLMEnvironmentDetector.cs b/src/Cli/dotnet/Telemetry/ILLMEnvironmentDetector.cs index fe599569aa6c..1fb747d47ae5 100644 --- a/src/Cli/dotnet/Telemetry/ILLMEnvironmentDetector.cs +++ b/src/Cli/dotnet/Telemetry/ILLMEnvironmentDetector.cs @@ -6,4 +6,4 @@ namespace Microsoft.DotNet.Cli.Telemetry; internal interface ILLMEnvironmentDetector { string? GetLLMEnvironment(); -} \ No newline at end of file +} diff --git a/src/Cli/dotnet/Telemetry/LLMEnvironmentDetectorForTelemetry.cs b/src/Cli/dotnet/Telemetry/LLMEnvironmentDetectorForTelemetry.cs index 16d13a6879e7..532e91a2bd0a 100644 --- a/src/Cli/dotnet/Telemetry/LLMEnvironmentDetectorForTelemetry.cs +++ b/src/Cli/dotnet/Telemetry/LLMEnvironmentDetectorForTelemetry.cs @@ -20,4 +20,4 @@ internal class LLMEnvironmentDetectorForTelemetry : ILLMEnvironmentDetector var results = _detectionRules.Select(r => r.GetResult()).Where(r => r != null).ToArray(); return results.Length > 0 ? string.Join(", ", results) : null; } -} \ No newline at end of file +} diff --git a/src/Cli/dotnet/Telemetry/Telemetry.cs b/src/Cli/dotnet/Telemetry/Telemetry.cs index d9c3a59bd8a1..38f0d1c7ca19 100644 --- a/src/Cli/dotnet/Telemetry/Telemetry.cs +++ b/src/Cli/dotnet/Telemetry/Telemetry.cs @@ -258,6 +258,6 @@ static IDictionary Combine(IDictionary { eventMeasurements[measurement.Key] = measurement.Value; } - return eventMeasurements; - } + return eventMeasurements; + } } diff --git a/src/Cli/dotnet/ToolPackage/ToolConfiguration.cs b/src/Cli/dotnet/ToolPackage/ToolConfiguration.cs index 641c8c583a7c..9da8558f5384 100644 --- a/src/Cli/dotnet/ToolPackage/ToolConfiguration.cs +++ b/src/Cli/dotnet/ToolPackage/ToolConfiguration.cs @@ -62,7 +62,7 @@ private static void EnsureNoLeadingDot(string commandName) } } - + public string CommandName { get; } public string ToolAssemblyEntryPoint { get; } diff --git a/test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock2.cs b/test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock2.cs index 50bdac18df00..29b30bbb02ad 100644 --- a/test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock2.cs +++ b/test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock2.cs @@ -32,7 +32,7 @@ public void AddMockPackage(MockFeedPackage package) if (_packages == null) { _packages = new List(); - }; + } _packages.Add(package); } diff --git a/test/dotnet.Tests/CommandFactoryTests/GivenAProjectToolsCommandResolver.cs b/test/dotnet.Tests/CommandFactoryTests/GivenAProjectToolsCommandResolver.cs index 08f106cce4ab..dcdb4c9b4930 100644 --- a/test/dotnet.Tests/CommandFactoryTests/GivenAProjectToolsCommandResolver.cs +++ b/test/dotnet.Tests/CommandFactoryTests/GivenAProjectToolsCommandResolver.cs @@ -3,13 +3,13 @@ #nullable disable +using Microsoft.DotNet.Cli; using Microsoft.DotNet.Cli.CommandFactory.CommandResolution; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Tools.Test.Utilities; using NuGet.Frameworks; using NuGet.ProjectModel; using NuGet.Versioning; -using Microsoft.DotNet.Cli; namespace Microsoft.DotNet.Tests { diff --git a/test/dotnet.Tests/CommandTests/Build/GivenDotnetBuildBuildsCsproj.cs b/test/dotnet.Tests/CommandTests/Build/GivenDotnetBuildBuildsCsproj.cs index 2660810b616b..76ac69de2976 100644 --- a/test/dotnet.Tests/CommandTests/Build/GivenDotnetBuildBuildsCsproj.cs +++ b/test/dotnet.Tests/CommandTests/Build/GivenDotnetBuildBuildsCsproj.cs @@ -386,7 +386,7 @@ static string RelativeNuGetPath(string absoluteNuGetPath) { foreach (var nugetRoot in nugetRoots) { - if (nugetRoot is not null && absoluteNuGetPath.StartsWith(nugetRoot + Path.DirectorySeparatorChar)) + if (nugetRoot is not null && absoluteNuGetPath.StartsWith(nugetRoot + Path.DirectorySeparatorChar)) { return absoluteNuGetPath.Substring(nugetRoot.Length + 1) .Replace(Path.DirectorySeparatorChar, '/'); diff --git a/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetBuildInvocation.cs b/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetBuildInvocation.cs index 08c5ee7071cd..7b4781dc0e30 100644 --- a/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetBuildInvocation.cs +++ b/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetBuildInvocation.cs @@ -10,8 +10,8 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests public class GivenDotnetBuildInvocation : IClassFixture { string[] ExpectedPrefix = ["-maxcpucount", "--verbosity:m", "-tlp:default=auto", "-nologo"]; - public static string[] RestoreExpectedPrefixForImplicitRestore = [..RestoringCommand.RestoreOptimizationProperties.Select(kvp => $"--restoreProperty:{kvp.Key}={kvp.Value}")]; - public static string[] RestoreExpectedPrefixForSeparateRestore = [..RestoringCommand.RestoreOptimizationProperties.Select(kvp => $"--property:{kvp.Key}={kvp.Value}")]; + public static string[] RestoreExpectedPrefixForImplicitRestore = [.. RestoringCommand.RestoreOptimizationProperties.Select(kvp => $"--restoreProperty:{kvp.Key}={kvp.Value}")]; + public static string[] RestoreExpectedPrefixForSeparateRestore = [.. RestoringCommand.RestoreOptimizationProperties.Select(kvp => $"--property:{kvp.Key}={kvp.Value}")]; const string NugetInteractiveProperty = "--property:NuGetInteractive=false"; diff --git a/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetOsArchOptions.cs b/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetOsArchOptions.cs index 4b98db3a7b58..b9275466740a 100644 --- a/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetOsArchOptions.cs +++ b/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetOsArchOptions.cs @@ -19,7 +19,7 @@ public GivenDotnetOsArchOptions(ITestOutputHelper log) : base(log) private static readonly string[] DefaultArgs = ["-restore", "-consoleloggerparameters:Summary", NugetInteractiveProperty]; private static readonly string WorkingDirectory = - TestPathUtilities.FormatAbsolutePath(nameof(GivenDotnetBuildInvocation)); [Fact] + TestPathUtilities.FormatAbsolutePath(nameof(GivenDotnetBuildInvocation)); [Fact] public void OsOptionIsCorrectlyResolved() { CommandDirectoryContext.PerformActionWithBasePath(WorkingDirectory, () => diff --git a/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetRunInvocation.cs b/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetRunInvocation.cs index 36c8fe45bc19..b7493551c937 100644 --- a/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetRunInvocation.cs +++ b/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetRunInvocation.cs @@ -43,7 +43,7 @@ public void MsbuildInvocationIsCorrect(string[] args, string[] expectedArgs) var command = RunCommand.FromArgs(args); command.MSBuildArgs .Should() - .BeEquivalentTo(MSBuildArgs.AnalyzeMSBuildArguments([.. ConstantRestoreArgs, .. expectedArgs, NuGetDisabledProperty ], CommonOptions.PropertiesOption, CommonOptions.RestorePropertiesOption, CommonOptions.MSBuildTargetOption(), RunCommandParser.VerbosityOption)); + .BeEquivalentTo(MSBuildArgs.AnalyzeMSBuildArguments([.. ConstantRestoreArgs, .. expectedArgs, NuGetDisabledProperty], CommonOptions.PropertiesOption, CommonOptions.RestorePropertiesOption, CommonOptions.MSBuildTargetOption(), RunCommandParser.VerbosityOption)); }); } finally diff --git a/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetStoreInvocation.cs b/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetStoreInvocation.cs index f13c7258f291..fec7e61d63a7 100644 --- a/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetStoreInvocation.cs +++ b/test/dotnet.Tests/CommandTests/MSBuild/GivenDotnetStoreInvocation.cs @@ -62,7 +62,7 @@ public void ItAddsOutputPathToMsBuildInvocation(string optionName) var msbuildPath = ""; StoreCommand.FromArgs(args, msbuildPath) - .GetArgumentTokensToMSBuild().Should().BeEquivalentTo([..ExpectedPrefix, $"--property:ComposeDir={Path.GetFullPath(path)}", "--property:_CommandLineDefinedOutputPath=true"]); + .GetArgumentTokensToMSBuild().Should().BeEquivalentTo([.. ExpectedPrefix, $"--property:ComposeDir={Path.GetFullPath(path)}", "--property:_CommandLineDefinedOutputPath=true"]); } } } diff --git a/test/dotnet.Tests/CommandTests/MSBuild/MSBuildArgumentCommandLineParserTests.cs b/test/dotnet.Tests/CommandTests/MSBuild/MSBuildArgumentCommandLineParserTests.cs index 5c88f074a5c5..fb18bd4e75a5 100644 --- a/test/dotnet.Tests/CommandTests/MSBuild/MSBuildArgumentCommandLineParserTests.cs +++ b/test/dotnet.Tests/CommandTests/MSBuild/MSBuildArgumentCommandLineParserTests.cs @@ -54,7 +54,7 @@ public void MSBuildArgumentsAreForwardedCorrectly(string[] arguments, bool build [InlineData(new string[] { "-p:RuntimeIdentifiers=linux-x64;linux-arm64" }, new string[] { "--property:RuntimeIdentifiers=linux-x64;linux-arm64" })] public void Can_pass_msbuild_properties_safely(string[] tokens, string[] forwardedTokens) { - var forwardingFunction = (CommonOptions.PropertiesOption as ForwardedOption?>)!.GetForwardingFunction(); + var forwardingFunction = (CommonOptions.PropertiesOption as ForwardedOption?>)!.GetForwardingFunction(); var result = new RootCommand() { CommonOptions.PropertiesOption }.Parse(tokens); var parsedTokens = forwardingFunction(result); parsedTokens.Should().BeEquivalentTo(forwardedTokens); diff --git a/test/dotnet.Tests/CommandTests/New/DotnetAddPostActionTests.cs b/test/dotnet.Tests/CommandTests/New/DotnetAddPostActionTests.cs index 907da662a0f6..433ab1afedeb 100644 --- a/test/dotnet.Tests/CommandTests/New/DotnetAddPostActionTests.cs +++ b/test/dotnet.Tests/CommandTests/New/DotnetAddPostActionTests.cs @@ -209,7 +209,7 @@ public void AddRefCanHandleExistingProjectFiles() { var callback = new MockAddProjectReferenceCallback(); DotnetAddPostActionProcessor actionProcessor = new(callback.AddPackageReference, callback.AddProjectReference); - string targetBasePath = _engineEnvironmentSettings.GetTempVirtualizedPath(); //Commented code throws exception + string targetBasePath = _engineEnvironmentSettings.GetTempVirtualizedPath(); //Commented code throws exception _engineEnvironmentSettings.Host.VirtualizeDirectory(targetBasePath); const string existingProjectFolder = "ExistingProjectFolder"; @@ -231,7 +231,8 @@ public void AddRefCanHandleExistingProjectFiles() var postAction = new MockPostAction(default, default, default, default, default!) { - ActionId = DotnetAddPostActionProcessor.ActionProcessorId, Args = args + ActionId = DotnetAddPostActionProcessor.ActionProcessorId, + Args = args }; MockCreationEffects creationEffects = new MockCreationEffects(); diff --git a/test/dotnet.Tests/CommandTests/New/DotnetSlnPostActionTests.cs b/test/dotnet.Tests/CommandTests/New/DotnetSlnPostActionTests.cs index 001c30dd1a29..08fc19cdcc02 100644 --- a/test/dotnet.Tests/CommandTests/New/DotnetSlnPostActionTests.cs +++ b/test/dotnet.Tests/CommandTests/New/DotnetSlnPostActionTests.cs @@ -35,7 +35,7 @@ public void AddProjectToSolutionPostActionFindSlnxFileAtOutputPath() string targetBasePath = _engineEnvironmentSettings.GetTempVirtualizedPath(); _engineEnvironmentSettings.Host.VirtualizeDirectory(targetBasePath); EnsureParentDirectoriesExist(targetBasePath); - + string solutionFileFullPath = Path.Combine(targetBasePath, "MySln.slnx"); _engineEnvironmentSettings.Host.FileSystem.WriteAllText(solutionFileFullPath, string.Empty); @@ -50,7 +50,7 @@ public void AddProjectToSolutionPostActionPrefersSlnOverSlnx() string targetBasePath = _engineEnvironmentSettings.GetTempVirtualizedPath(); _engineEnvironmentSettings.Host.VirtualizeDirectory(targetBasePath); EnsureParentDirectoriesExist(targetBasePath); - + string slnFileFullPath = Path.Combine(targetBasePath, "MySln.sln"); string slnxFileFullPath = Path.Combine(targetBasePath, "MySln.slnx"); _engineEnvironmentSettings.Host.FileSystem.WriteAllText(slnFileFullPath, string.Empty); diff --git a/test/dotnet.Tests/CommandTests/NuGet/GivenANuGetCommand.cs b/test/dotnet.Tests/CommandTests/NuGet/GivenANuGetCommand.cs index a114c98a1e4d..14777a7abb6d 100644 --- a/test/dotnet.Tests/CommandTests/NuGet/GivenANuGetCommand.cs +++ b/test/dotnet.Tests/CommandTests/NuGet/GivenANuGetCommand.cs @@ -69,7 +69,7 @@ public GivenANuGetCommand(ITestOutputHelper log) : base(log) "--certificate-store-location", "CurrentUser", "--certificate-subject-name", "CE40881FF5F0AD3E58965DA20A9F57", "--certificate-password", "PlaceholderPassword"}, 0)] - [InlineData(new[] { "package", "search", "nuget"}, 0)] + [InlineData(new[] { "package", "search", "nuget" }, 0)] [InlineData(new[] { "package", "search", "nuget", "--source", "https://api.nuget.org/v3/index.json", "--take", "10", diff --git a/test/dotnet.Tests/CommandTests/Pack/PackTests.cs b/test/dotnet.Tests/CommandTests/Pack/PackTests.cs index 985547b2b91f..8e38fdd780ca 100644 --- a/test/dotnet.Tests/CommandTests/Pack/PackTests.cs +++ b/test/dotnet.Tests/CommandTests/Pack/PackTests.cs @@ -329,7 +329,7 @@ public void DotnetPack_FailsWhenVersionOptionHasNoValue() string nuspecPath = Path.Combine(testInstance.Path, "PackNoCsproj.nuspec"); var result = new DotnetPackCommand(Log) .WithWorkingDirectory(testInstance.Path) - .Execute(nuspecPath, "--property", "id=PackNoCsproj","--property", "authors=author", "--version"); + .Execute(nuspecPath, "--property", "id=PackNoCsproj", "--property", "authors=author", "--version"); result.Should().Fail(); result.StdErr.Should().Contain("Required argument missing for option: '--version'."); @@ -429,7 +429,7 @@ public void DotnetPack_FailsForNonExistentNuspec() .WithWorkingDirectory(testInstance.Path) .Execute(nuspecPath); - result.Should().Fail(); + result.Should().Fail(); } } } diff --git a/test/dotnet.Tests/CommandTests/Package/List/GivenDotnetListPackage.cs b/test/dotnet.Tests/CommandTests/Package/List/GivenDotnetListPackage.cs index e0901d0a4b68..5adc09dbd3a0 100644 --- a/test/dotnet.Tests/CommandTests/Package/List/GivenDotnetListPackage.cs +++ b/test/dotnet.Tests/CommandTests/Package/List/GivenDotnetListPackage.cs @@ -347,7 +347,7 @@ public void ItListsFSharpProject() [InlineData(true, "--deprecated", "--outdated")] public void ItEnforcesOptionRules(bool throws, params string[] options) { - var parseResult = Parser.Parse(["dotnet", "list", "package", ..options]); + var parseResult = Parser.Parse(["dotnet", "list", "package", .. options]); Action checkRules = () => Microsoft.DotNet.Cli.Commands.Package.List.PackageListCommand.EnforceOptionRules(parseResult); if (throws) diff --git a/test/dotnet.Tests/CommandTests/Restore/GivenThatIWantToRestoreApp.cs b/test/dotnet.Tests/CommandTests/Restore/GivenThatIWantToRestoreApp.cs index 22e2f89acb30..d8ae3f0bc25a 100644 --- a/test/dotnet.Tests/CommandTests/Restore/GivenThatIWantToRestoreApp.cs +++ b/test/dotnet.Tests/CommandTests/Restore/GivenThatIWantToRestoreApp.cs @@ -1,9 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Runtime.InteropServices; using Microsoft.DotNet.Tools.Test.Utilities; using Newtonsoft.Json.Linq; -using System.Runtime.InteropServices; namespace Microsoft.DotNet.Restore.Test { @@ -170,7 +170,7 @@ public void ItAcceptsArgumentsAfterProperties() .Should() .Pass(); } - + /// /// Tests for RID-specific restore options: -r/--runtime, --os, and -a/--arch /// @@ -191,9 +191,9 @@ public void ItRestoresWithRidSpecificOptions(params string[] ridOptions) }; testProject.PackageReferences.Add(new TestPackageReference("Newtonsoft.Json", ToolsetInfo.GetNewtonsoftJsonPackageVersion())); - + var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: string.Join("_", ridOptions)); - + var rootPath = Path.Combine(testAsset.TestRoot, testProject.Name); // Create the command with the RID-specific options @@ -203,7 +203,7 @@ public void ItRestoresWithRidSpecificOptions(params string[] ridOptions) // Verify that the command runs successfully restoreCommand.Should().Pass(); - + // Verify that assets file was created var assetsFilePath = Path.Combine(rootPath, "obj", "project.assets.json"); File.Exists(assetsFilePath).Should().BeTrue(); @@ -212,11 +212,11 @@ public void ItRestoresWithRidSpecificOptions(params string[] ridOptions) var assetsContents = JObject.Parse(File.ReadAllText(assetsFilePath)); var targets = assetsContents["targets"]; targets.Should().NotBeNull("assets file should contain targets section"); - + // Determine the expected RID based on the options provided string expectedRid = GetExpectedRid(ridOptions); string expectedTarget = $"{ToolsetInfo.CurrentTargetFramework}/{expectedRid}"; - + // Check that the specific target exists var specificTarget = targets[expectedTarget]; specificTarget.Should().NotBeNull($"assets file should contain target '{expectedTarget}' when using RID options: {string.Join(" ", ridOptions)}"); diff --git a/test/dotnet.Tests/CommandTests/Run/GivenDotnetRunBuildsCsProj.cs b/test/dotnet.Tests/CommandTests/Run/GivenDotnetRunBuildsCsProj.cs index c14cccd87ca5..575a1b327625 100644 --- a/test/dotnet.Tests/CommandTests/Run/GivenDotnetRunBuildsCsProj.cs +++ b/test/dotnet.Tests/CommandTests/Run/GivenDotnetRunBuildsCsProj.cs @@ -1018,13 +1018,13 @@ public void ItProvidesConsistentErrorMessageWhenProjectFileDoesNotExistWithNoBui { // After the fix, we should get a clear error message about the file not existing var stderr = result.StdErr; - + // Should provide a clear error message about the project file not existing - var hasExpectedErrorMessage = stderr.Contains("does not exist") || - stderr.Contains("not found") || - stderr.Contains("cannot find") || + var hasExpectedErrorMessage = stderr.Contains("does not exist") || + stderr.Contains("not found") || + stderr.Contains("cannot find") || stderr.Contains("could not find"); - + hasExpectedErrorMessage.Should().BeTrue($"Expected error message to clearly indicate file doesn't exist, but got: {stderr}"); } } diff --git a/test/dotnet.Tests/CommandTests/Run/RunFileTests.cs b/test/dotnet.Tests/CommandTests/Run/RunFileTests.cs index 2c87e8cc7469..ad8797542341 100644 --- a/test/dotnet.Tests/CommandTests/Run/RunFileTests.cs +++ b/test/dotnet.Tests/CommandTests/Run/RunFileTests.cs @@ -1965,7 +1965,7 @@ Hello from First Message: 'First1' """); - new DotnetCommand(Log, "run", "-v", "q", "Second.cs") + new DotnetCommand(Log, "run", "-v", "q", "Second.cs") .WithWorkingDirectory(testInstance.Path) .Execute() .Should().Pass() diff --git a/test/dotnet.Tests/CommandTests/Run/RunParserTests.cs b/test/dotnet.Tests/CommandTests/Run/RunParserTests.cs index 3c2897bbe34e..3c1fcd0e1cde 100644 --- a/test/dotnet.Tests/CommandTests/Run/RunParserTests.cs +++ b/test/dotnet.Tests/CommandTests/Run/RunParserTests.cs @@ -23,7 +23,7 @@ public void RunParserCanGetArgumentFromDoubleDash() Directory.SetCurrentDirectory(newWorkingDir); var projectPath = Path.Combine(newWorkingDir, "HelloWorld.csproj"); - + var runCommand = RunCommand.FromArgs(new[] { "--project", projectPath, "--", "foo" }); runCommand.ApplicationArgs.Single().Should().Be("foo"); } diff --git a/test/dotnet.Tests/CommandTests/Run/RunTelemetryTests.cs b/test/dotnet.Tests/CommandTests/Run/RunTelemetryTests.cs index 8ced55de7342..2572ecdd9fa8 100644 --- a/test/dotnet.Tests/CommandTests/Run/RunTelemetryTests.cs +++ b/test/dotnet.Tests/CommandTests/Run/RunTelemetryTests.cs @@ -146,9 +146,9 @@ public void TrackRunEvent_FileBasedApp_SendsCorrectTelemetry() { // Arrange var events = new List<(string? eventName, IDictionary? properties, IDictionary? measurements)>(); - + void handler(object? sender, InstrumentationEventArgs args) => events.Add((args.EventName, args.Properties, args.Measurements)); - + TelemetryEventEntry.EntryPosted += handler; try @@ -172,7 +172,7 @@ public void TrackRunEvent_FileBasedApp_SendsCorrectTelemetry() var eventData = events[0]; eventData.eventName.Should().Be("run"); eventData.properties.Should().NotBeNull(); - + var props = eventData.properties!; props["app_type"].Should().Be("file_based"); props["project_id"].Should().Be("test-hash"); @@ -197,9 +197,9 @@ public void TrackRunEvent_ProjectBasedApp_SendsCorrectTelemetry() { // Arrange var events = new List<(string? eventName, IDictionary? properties, IDictionary? measurements)>(); - + void handler(object? sender, InstrumentationEventArgs args) => events.Add((args.EventName, args.Properties, args.Measurements)); - + TelemetryEventEntry.EntryPosted += handler; try @@ -220,7 +220,7 @@ public void TrackRunEvent_ProjectBasedApp_SendsCorrectTelemetry() var eventData = events[0]; eventData.eventName.Should().Be("run"); eventData.properties.Should().NotBeNull(); - + var props = eventData.properties!; props["app_type"].Should().Be("project_based"); props["project_id"].Should().Be("project-hash"); @@ -244,9 +244,9 @@ public void TrackRunEvent_WithDefaultLaunchProfile_MarksTelemetryCorrectly() { // Arrange var events = new List<(string? eventName, IDictionary? properties, IDictionary? measurements)>(); - + void handler(object? sender, InstrumentationEventArgs args) => events.Add((args.EventName, args.Properties, args.Measurements)); - + TelemetryEventEntry.EntryPosted += handler; var launchSettings = new ProjectLaunchSettingsModel diff --git a/test/dotnet.Tests/CommandTests/Solution/Add/GivenDotnetSlnAdd.cs b/test/dotnet.Tests/CommandTests/Solution/Add/GivenDotnetSlnAdd.cs index 3f78a0896e87..5449e9e08541 100644 --- a/test/dotnet.Tests/CommandTests/Solution/Add/GivenDotnetSlnAdd.cs +++ b/test/dotnet.Tests/CommandTests/Solution/Add/GivenDotnetSlnAdd.cs @@ -3,12 +3,12 @@ #nullable disable +using System.Threading.Tasks; +using Microsoft.DotNet.Cli.Commands; using Microsoft.DotNet.Cli.Utils; -using Microsoft.VisualStudio.SolutionPersistence.Serializer; using Microsoft.VisualStudio.SolutionPersistence; using Microsoft.VisualStudio.SolutionPersistence.Model; -using Microsoft.DotNet.Cli.Commands; -using System.Threading.Tasks; +using Microsoft.VisualStudio.SolutionPersistence.Serializer; namespace Microsoft.DotNet.Cli.Sln.Add.Tests { @@ -841,11 +841,11 @@ public void WhenPassedAProjectWithDefaultProjectGuidItPasses(string solutionComm .CopyTestAsset("TestAppWithSlnAndDefaultProjectType", identifier: $"GivenDotnetSlnAdd-{solutionCommand}{solutionExtension}") .WithSource() .Path; - + var cmd = new DotnetCommand(Log) .WithWorkingDirectory(solutionDirectory) .Execute(solutionCommand, $"App{solutionExtension}", "add", "Unknown.unknownproj"); - + cmd.Should().Pass(); cmd.StdErr.Should().BeEmpty(); } diff --git a/test/dotnet.Tests/CommandTests/Test/GivenDotnetTestRunsConsoleAppWithoutHandshake.cs b/test/dotnet.Tests/CommandTests/Test/GivenDotnetTestRunsConsoleAppWithoutHandshake.cs index be317b4d5ed4..c486dbacab72 100644 --- a/test/dotnet.Tests/CommandTests/Test/GivenDotnetTestRunsConsoleAppWithoutHandshake.cs +++ b/test/dotnet.Tests/CommandTests/Test/GivenDotnetTestRunsConsoleAppWithoutHandshake.cs @@ -30,4 +30,4 @@ public void RunConsoleAppDoesNothing_ShouldReturnCorrectExitCode(string configur result.ExitCode.Should().Be(ExitCodes.GenericFailure, "dotnet test should fail with a meaningful error when run against console app without MTP handshake"); } } -} \ No newline at end of file +} diff --git a/test/dotnet.Tests/CommandTests/Test/TestCommandParserTests.cs b/test/dotnet.Tests/CommandTests/Test/TestCommandParserTests.cs index 9b86d3c92c4c..57eff95b9aae 100644 --- a/test/dotnet.Tests/CommandTests/Test/TestCommandParserTests.cs +++ b/test/dotnet.Tests/CommandTests/Test/TestCommandParserTests.cs @@ -66,11 +66,11 @@ public void SurroundWithDoubleQuotesHandlesCorrectlyOddCountOfTrailingBackslashe public void VSTestCommandIncludesPropertiesOption() { var command = TestCommandParser.GetCommand(); - + // Verify that the command includes a property option that supports the /p alias - var propertyOption = command.Options.FirstOrDefault(o => + var propertyOption = command.Options.FirstOrDefault(o => o.Aliases.Contains("/p") || o.Aliases.Contains("--property")); - + propertyOption.Should().NotBeNull("VSTest command should include CommonOptions.PropertiesOption to support /p Property=Value syntax"); propertyOption.Aliases.Should().Contain("/p", "PropertiesOption should include /p alias for MSBuild compatibility"); } diff --git a/test/dotnet.Tests/CommandTests/Test/TestProgressStateTests.cs b/test/dotnet.Tests/CommandTests/Test/TestProgressStateTests.cs index 257338656fc3..0a1d81939459 100644 --- a/test/dotnet.Tests/CommandTests/Test/TestProgressStateTests.cs +++ b/test/dotnet.Tests/CommandTests/Test/TestProgressStateTests.cs @@ -195,7 +195,7 @@ public void FailedTestRetryShouldShouldShowTheSameTotalCountsInEachRetry() state.ReportFailedTest("failed-test", "run1"); state.ReportPassingTest("passed-test", "run1"); state.ReportSkippedTest("skipped-test", "run1"); - + state.RetriedFailedTests.Should().Be(0); state.FailedTests.Should().Be(1); state.PassedTests.Should().Be(1); diff --git a/test/dotnet.Tests/CommandTests/Tool/Install/ToolInstallGlobalOrToolPathCommandTests.cs b/test/dotnet.Tests/CommandTests/Tool/Install/ToolInstallGlobalOrToolPathCommandTests.cs index 8b1f84c62cc8..c0f13470918c 100644 --- a/test/dotnet.Tests/CommandTests/Tool/Install/ToolInstallGlobalOrToolPathCommandTests.cs +++ b/test/dotnet.Tests/CommandTests/Tool/Install/ToolInstallGlobalOrToolPathCommandTests.cs @@ -23,7 +23,7 @@ namespace Microsoft.DotNet.Tests.Commands.Tool { - public class ToolInstallGlobalOrToolPathCommandTests: SdkTest + public class ToolInstallGlobalOrToolPathCommandTests : SdkTest { private readonly PackageId _packageId; private readonly IFileSystem _fileSystem; @@ -47,7 +47,7 @@ public class ToolInstallGlobalOrToolPathCommandTests: SdkTest private const string ToolCommandName = "SimulatorCommand"; private readonly string UnlistedPackageId = "elemental.sysinfotool"; - public ToolInstallGlobalOrToolPathCommandTests(ITestOutputHelper log): base(log) + public ToolInstallGlobalOrToolPathCommandTests(ITestOutputHelper log) : base(log) { _packageId = new PackageId(PackageId); _reporter = new BufferedReporter(); diff --git a/test/dotnet.Tests/CommandTests/Tool/List/ToolListLocalCommandTests.cs b/test/dotnet.Tests/CommandTests/Tool/List/ToolListLocalCommandTests.cs index ac3b40a90ee8..224f1f8fbf2f 100644 --- a/test/dotnet.Tests/CommandTests/Tool/List/ToolListLocalCommandTests.cs +++ b/test/dotnet.Tests/CommandTests/Tool/List/ToolListLocalCommandTests.cs @@ -5,13 +5,13 @@ using System.CommandLine; using System.Text.Json; +using Microsoft.DotNet.Cli.Commands.Tool.List; using Microsoft.DotNet.Cli.ToolManifest; -using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Cli.ToolPackage; +using Microsoft.DotNet.Cli.Utils; using Microsoft.Extensions.EnvironmentAbstractions; using NuGet.Versioning; using Parser = Microsoft.DotNet.Cli.Parser; -using Microsoft.DotNet.Cli.Commands.Tool.List; namespace Microsoft.DotNet.Tests.Commands.Tool { diff --git a/test/dotnet.Tests/CommandTests/Tool/Restore/ToolRestoreCommandTests.cs b/test/dotnet.Tests/CommandTests/Tool/Restore/ToolRestoreCommandTests.cs index c84b9c8ee372..9eab7fef1ccd 100644 --- a/test/dotnet.Tests/CommandTests/Tool/Restore/ToolRestoreCommandTests.cs +++ b/test/dotnet.Tests/CommandTests/Tool/Restore/ToolRestoreCommandTests.cs @@ -4,24 +4,24 @@ #nullable disable using System.CommandLine; +using System.Text.Json; using Microsoft.DotNet.Cli; +using Microsoft.DotNet.Cli.Commands; +using Microsoft.DotNet.Cli.Commands.Tool.Restore; +using Microsoft.DotNet.Cli.ToolManifest; +using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.DotNet.Cli.Utils; +using Microsoft.DotNet.Cli.Utils.Extensions; using Microsoft.DotNet.Tools.Tests.ComponentMocks; using Microsoft.Extensions.DependencyModel.Tests; using Microsoft.Extensions.EnvironmentAbstractions; using NuGet.Frameworks; using NuGet.Versioning; using Parser = Microsoft.DotNet.Cli.Parser; -using Microsoft.DotNet.Cli.ToolPackage; -using System.Text.Json; -using Microsoft.DotNet.Cli.Utils.Extensions; -using Microsoft.DotNet.Cli.ToolManifest; -using Microsoft.DotNet.Cli.Commands.Tool.Restore; -using Microsoft.DotNet.Cli.Commands; namespace Microsoft.DotNet.Tests.Commands.Tool { - public class ToolRestoreCommandTests: SdkTest + public class ToolRestoreCommandTests : SdkTest { private readonly IFileSystem _fileSystem; private readonly IToolPackageStore _toolPackageStore; @@ -48,7 +48,7 @@ public class ToolRestoreCommandTests: SdkTest private int _installCalledCount = 0; - public ToolRestoreCommandTests(ITestOutputHelper log): base(log) + public ToolRestoreCommandTests(ITestOutputHelper log) : base(log) { _packageVersionA = NuGetVersion.Parse("1.0.4"); _packageVersionWithCommandNameCollisionWithA = NuGetVersion.Parse("1.0.9"); diff --git a/test/dotnet.Tests/CommandTests/Tool/Run/ToolRunCommandTests.cs b/test/dotnet.Tests/CommandTests/Tool/Run/ToolRunCommandTests.cs index f122a680dc71..32c4cf876cde 100644 --- a/test/dotnet.Tests/CommandTests/Tool/Run/ToolRunCommandTests.cs +++ b/test/dotnet.Tests/CommandTests/Tool/Run/ToolRunCommandTests.cs @@ -13,7 +13,7 @@ namespace Microsoft.DotNet.Tests.Commands.Tool { - public class ToolRunCommandTests: SdkTest + public class ToolRunCommandTests : SdkTest { private const string ManifestFilename = "dotnet-tools.json"; private DirectoryPath _nugetGlobalPackagesFolder; diff --git a/test/dotnet.Tests/CommandTests/Tool/Search/NugetSearchApiParameterTests.cs b/test/dotnet.Tests/CommandTests/Tool/Search/NugetSearchApiParameterTests.cs index fc0a15472c3c..5cdb9199c548 100644 --- a/test/dotnet.Tests/CommandTests/Tool/Search/NugetSearchApiParameterTests.cs +++ b/test/dotnet.Tests/CommandTests/Tool/Search/NugetSearchApiParameterTests.cs @@ -1,8 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Cli.NugetSearch; +using Microsoft.DotNet.Cli.Utils; using Parser = Microsoft.DotNet.Cli.Parser; namespace dotnet.Tests.ToolSearchTests diff --git a/test/dotnet.Tests/CommandTests/Tool/Update/ToolUpdateGlobalOrToolPathCommandTests.cs b/test/dotnet.Tests/CommandTests/Tool/Update/ToolUpdateGlobalOrToolPathCommandTests.cs index 7bc758e8fd07..a9393c1ec553 100644 --- a/test/dotnet.Tests/CommandTests/Tool/Update/ToolUpdateGlobalOrToolPathCommandTests.cs +++ b/test/dotnet.Tests/CommandTests/Tool/Update/ToolUpdateGlobalOrToolPathCommandTests.cs @@ -259,7 +259,7 @@ public void GivenAnExistedHigherversionInstallationWhenUpdateToLowerVersionItErr string.Format(CliCommandStrings.UpdateToLowerVersion, LowerPackageVersion, HigherPackageVersion)); } - [Fact] + [Fact] public void GivenAnExistedHigherversionInstallationWithDowngradeFlagWhenUpdateToLowerVersionItSucceeds() { CreateInstallCommand($"-g {_packageId} --version {HigherPackageVersion}").Execute(); @@ -397,7 +397,7 @@ public void GivenAnExistedLowerversionWhenReinstallThrowsItRollsBack() fileSystem: _fileSystem, reporter: _reporter, feeds: _mockFeeds, - downloadCallback: () => throw new ToolConfigurationException("Simulated error")), + downloadCallback: () => throw new ToolConfigurationException("Simulated error")), new ToolPackageUninstallerMock(_fileSystem, _store)), (_, _) => GetMockedShellShimRepository(), _reporter); @@ -452,7 +452,7 @@ private ToolInstallGlobalOrToolPathCommand CreateInstallCommand(string options, return new ToolInstallGlobalOrToolPathCommand( result, - packageId is null ? _packageId : new PackageId(packageId) , + packageId is null ? _packageId : new PackageId(packageId), (location, forwardArguments, currentWorkingDirectory) => (_store, _store, _toolPackageDownloader, new ToolPackageUninstallerMock(_fileSystem, _store)), (_, _) => GetMockedShellShimRepository(), _environmentPathInstructionMock, diff --git a/test/dotnet.Tests/CommandTests/Workload/Clean/GivenDotnetWorkloadClean.cs b/test/dotnet.Tests/CommandTests/Workload/Clean/GivenDotnetWorkloadClean.cs index 73576f45f9dd..067a6e8744fd 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Clean/GivenDotnetWorkloadClean.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Clean/GivenDotnetWorkloadClean.cs @@ -4,13 +4,13 @@ #nullable disable using System.CommandLine; +using System.Text.Json; using ManifestReaderTests; +using Microsoft.DotNet.Cli.Commands.Workload.Clean; +using Microsoft.DotNet.Cli.Commands.Workload.Install; using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.Workload.Install.Tests; using Microsoft.NET.Sdk.WorkloadManifestReader; -using System.Text.Json; -using Microsoft.DotNet.Cli.Commands.Workload.Clean; -using Microsoft.DotNet.Cli.Commands.Workload.Install; namespace Microsoft.DotNet.Cli.Workload.Clean.Tests { diff --git a/test/dotnet.Tests/CommandTests/Workload/Install/GivenDotnetWorkloadInstall.cs b/test/dotnet.Tests/CommandTests/Workload/Install/GivenDotnetWorkloadInstall.cs index 316337d5712a..7df9c2394038 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Install/GivenDotnetWorkloadInstall.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Install/GivenDotnetWorkloadInstall.cs @@ -6,14 +6,14 @@ using System.CommandLine; using System.Runtime.CompilerServices; using ManifestReaderTests; +using Microsoft.DotNet.Cli.Commands; +using Microsoft.DotNet.Cli.Commands.Workload; +using Microsoft.DotNet.Cli.Commands.Workload.Config; +using Microsoft.DotNet.Cli.Commands.Workload.Install; using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.Utils; using Microsoft.Extensions.EnvironmentAbstractions; using Microsoft.NET.Sdk.WorkloadManifestReader; -using Microsoft.DotNet.Cli.Commands.Workload.Install; -using Microsoft.DotNet.Cli.Commands.Workload; -using Microsoft.DotNet.Cli.Commands.Workload.Config; -using Microsoft.DotNet.Cli.Commands; namespace Microsoft.DotNet.Cli.Workload.Install.Tests { diff --git a/test/dotnet.Tests/CommandTests/Workload/Install/GivenFileBasedWorkloadInstall.cs b/test/dotnet.Tests/CommandTests/Workload/Install/GivenFileBasedWorkloadInstall.cs index 2d516d6fd80c..1a0b43d033af 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Install/GivenFileBasedWorkloadInstall.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Install/GivenFileBasedWorkloadInstall.cs @@ -6,14 +6,14 @@ using System.Runtime.CompilerServices; using System.Text.Json; using ManifestReaderTests; +using Microsoft.DotNet.Cli.Commands.Workload; +using Microsoft.DotNet.Cli.Commands.Workload.Install; using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.Extensions.EnvironmentAbstractions; using Microsoft.NET.Sdk.WorkloadManifestReader; using NuGet.Versioning; using static Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver; -using Microsoft.DotNet.Cli.Commands.Workload.Install; -using Microsoft.DotNet.Cli.Commands.Workload; namespace Microsoft.DotNet.Cli.Workload.Install.Tests { diff --git a/test/dotnet.Tests/CommandTests/Workload/Install/MockPackWorkloadInstaller.cs b/test/dotnet.Tests/CommandTests/Workload/Install/MockPackWorkloadInstaller.cs index c1e7354d9d21..535e9d602261 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Install/MockPackWorkloadInstaller.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Install/MockPackWorkloadInstaller.cs @@ -3,15 +3,15 @@ #nullable disable +using System.Reflection; +using Microsoft.DotNet.Cli.Commands.Workload; +using Microsoft.DotNet.Cli.Commands.Workload.Install; +using Microsoft.DotNet.Cli.Commands.Workload.Install.WorkloadInstallRecords; using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.Extensions.EnvironmentAbstractions; using Microsoft.NET.Sdk.WorkloadManifestReader; -using static Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver; -using System.Reflection; using NuGet.Packaging; -using Microsoft.DotNet.Cli.Commands.Workload.Install; -using Microsoft.DotNet.Cli.Commands.Workload; -using Microsoft.DotNet.Cli.Commands.Workload.Install.WorkloadInstallRecords; +using static Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver; namespace Microsoft.DotNet.Cli.Workload.Install.Tests { diff --git a/test/dotnet.Tests/CommandTests/Workload/Install/MockWorkloadManifestUpdater.cs b/test/dotnet.Tests/CommandTests/Workload/Install/MockWorkloadManifestUpdater.cs index af555afdcfc8..a818e38f4115 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Install/MockWorkloadManifestUpdater.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Install/MockWorkloadManifestUpdater.cs @@ -83,6 +83,6 @@ public void DeleteUpdatableWorkloadsFile() { } public IEnumerable CalculateManifestUpdatesForWorkloadSet(WorkloadSet workloadSet) => _manifestUpdates.Select(t => t.ManifestUpdate); public string GetAdvertisedWorkloadSetVersion() => _workloadSetVersion; - + } } diff --git a/test/dotnet.Tests/CommandTests/Workload/Install/WorkloadGarbageCollectionTests.cs b/test/dotnet.Tests/CommandTests/Workload/Install/WorkloadGarbageCollectionTests.cs index 71155d432ec5..c10c587c721d 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Install/WorkloadGarbageCollectionTests.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Install/WorkloadGarbageCollectionTests.cs @@ -4,11 +4,11 @@ #nullable disable using System.Runtime.CompilerServices; +using System.Text.Json; +using Microsoft.DotNet.Cli.Commands.Workload.Install; using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.NET.Sdk.WorkloadManifestReader; using static Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver; -using System.Text.Json; -using Microsoft.DotNet.Cli.Commands.Workload.Install; namespace Microsoft.DotNet.Cli.Workload.Install.Tests { @@ -42,7 +42,7 @@ public void GivenManagedInstallItCanGarbageCollect() CreatePackInfo("Xamarin.Android.Framework", "8.4.0", WorkloadPackKind.Framework), CreatePackInfo("Xamarin.Android.Runtime", "8.4.7.4", WorkloadPackKind.Library) }; - var sdkVersions = new [] { "6.0.100", "6.0.300" }; + var sdkVersions = new[] { "6.0.100", "6.0.300" }; // Write packs foreach (var sdkVersion in sdkVersions) @@ -348,7 +348,7 @@ private void CreateInstallState(string featureBand, string installStateContents) File.WriteAllText(installStatePath, installStateContents); } - private void CreateDotnetRoot([CallerMemberName]string testName = "", string identifier = "") + private void CreateDotnetRoot([CallerMemberName] string testName = "", string identifier = "") { if (_dotnetRoot == null) { @@ -397,7 +397,7 @@ private void CreateManifestRecord(string manifestId, string manifestVersion, str var manifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetRoot, sdkVersion, userProfileDir: null, globalJsonPath: null); var workloadResolver = WorkloadResolver.CreateForTests(manifestProvider, _dotnetRoot); - + IWorkloadResolver GetResolver(string workloadSetVersion) { diff --git a/test/dotnet.Tests/CommandTests/Workload/Restore/GivenDotnetWorkloadRestore.cs b/test/dotnet.Tests/CommandTests/Workload/Restore/GivenDotnetWorkloadRestore.cs index 301293b0141f..76b0c8453e00 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Restore/GivenDotnetWorkloadRestore.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Restore/GivenDotnetWorkloadRestore.cs @@ -15,7 +15,7 @@ public GivenDotnetWorkloadRestore(ITestOutputHelper log) : base(log) [Fact] public void ProjectsThatDoNotSupportWorkloadsAreNotInspected() { - if(IsRunningInContainer()) + if (IsRunningInContainer()) { // Skipping test in a Helix container environment due to read-only DOTNET_ROOT, which causes workload restore to fail when writing workload metadata. return; @@ -38,7 +38,7 @@ public void ProjectsThatDoNotSupportWorkloadsAreNotInspected() [Fact] public void ProjectsThatDoNotSupportWorkloadsAndAreTransitivelyReferencedDoNotBreakTheBuild() { - if(IsRunningInContainer()) + if (IsRunningInContainer()) { // Skipping test in a Helix container environment due to read-only DOTNET_ROOT, which causes workload restore to fail when writing workload metadata. return; diff --git a/test/dotnet.Tests/CommandTests/Workload/Search/GivenDotnetWorkloadSearch.cs b/test/dotnet.Tests/CommandTests/Workload/Search/GivenDotnetWorkloadSearch.cs index 7fe5c47b8e2f..e901703f343b 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Search/GivenDotnetWorkloadSearch.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Search/GivenDotnetWorkloadSearch.cs @@ -191,6 +191,44 @@ public void GivenSearchResultsAreOrdered() _reporter.Lines[7].Should().Contain("mock-workload-3"); } + [Fact] + public void GivenMultipleFeedsWithSameVersionSearchVersionsShowsNoDuplicates() + { + _reporter.Clear(); + + // Create a mock package downloader that simulates duplicate versions from different feeds + var duplicateVersions = new List + { + new NuGetVersion("9.100.0"), // Same version from feed 1 + new NuGetVersion("9.100.0"), // Same version from feed 2 (duplicate) + new NuGetVersion("9.101.0"), + new NuGetVersion("9.102.0") + }; + + MockNuGetPackageDownloader nugetPackageDownloader = new(packageVersions: duplicateVersions); + MockPackWorkloadInstaller installer = new(); + + var parseResult = Parser.Parse("dotnet workload search version --take 4"); + var workloadResolver = new MockWorkloadResolver(Enumerable.Empty()); + var command = new WorkloadSearchVersionsCommand(parseResult, _reporter, installer: installer, nugetPackageDownloader: nugetPackageDownloader, resolver: workloadResolver, sdkVersion: new ReleaseVersion(9, 0, 100)); + + command.Execute(); + + // The output should be a single line containing all versions separated by newlines + _reporter.Lines.Should().HaveCount(1, "Should have one output line"); + var outputLine = _reporter.Lines[0]; + var versions = outputLine.Split('\n', StringSplitOptions.RemoveEmptyEntries); + + // Verify no duplicates in output - should only show unique versions + versions.Should().HaveCount(3, "Should show only unique versions: 9.0.102, 9.0.101, 9.0.100"); + versions.Should().Contain("9.0.102"); + versions.Should().Contain("9.0.101"); + versions.Should().Contain("9.0.100"); + + // Verify that 9.0.100 appears only once + versions.Count(v => v == "9.0.100").Should().Be(1, "Version 9.0.100 should appear only once"); + } + [Fact] public void GivenWorkloadSearchItSearchesDescription() { diff --git a/test/dotnet.Tests/CommandTests/Workload/Update/GivenDotnetWorkloadUpdate.cs b/test/dotnet.Tests/CommandTests/Workload/Update/GivenDotnetWorkloadUpdate.cs index 3f0a820e801d..a75c5f81e6d2 100644 --- a/test/dotnet.Tests/CommandTests/Workload/Update/GivenDotnetWorkloadUpdate.cs +++ b/test/dotnet.Tests/CommandTests/Workload/Update/GivenDotnetWorkloadUpdate.cs @@ -5,20 +5,20 @@ using System.CommandLine; using System.Runtime.CompilerServices; +using System.Text.Json; using ManifestReaderTests; +using Microsoft.DotNet.Cli.Commands; +using Microsoft.DotNet.Cli.Commands.Workload; +using Microsoft.DotNet.Cli.Commands.Workload.Config; +using Microsoft.DotNet.Cli.Commands.Workload.Install; +using Microsoft.DotNet.Cli.Commands.Workload.Update; using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Cli.Workload.Install.Tests; -using Microsoft.NET.Sdk.WorkloadManifestReader; -using static Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver; -using System.Text.Json; using Microsoft.DotNet.Cli.Workload.Search.Tests; +using Microsoft.NET.Sdk.WorkloadManifestReader; using NuGet.Versioning; -using Microsoft.DotNet.Cli.Commands.Workload; -using Microsoft.DotNet.Cli.Commands.Workload.Install; -using Microsoft.DotNet.Cli.Commands.Workload.Config; -using Microsoft.DotNet.Cli.Commands.Workload.Update; -using Microsoft.DotNet.Cli.Commands; +using static Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver; namespace Microsoft.DotNet.Cli.Workload.Update.Tests { diff --git a/test/dotnet.Tests/GivenThatTheUserIsRunningDotNetForTheFirstTime.cs b/test/dotnet.Tests/GivenThatTheUserIsRunningDotNetForTheFirstTime.cs index b67afbf7dacd..ec5281199301 100644 --- a/test/dotnet.Tests/GivenThatTheUserIsRunningDotNetForTheFirstTime.cs +++ b/test/dotnet.Tests/GivenThatTheUserIsRunningDotNetForTheFirstTime.cs @@ -125,7 +125,7 @@ public void FirstRunExperienceMessagesShouldGoToStdErr() // not stdout, to avoid interfering with completion commands and other // tools that parse stdout. See: https://github.com/dotnet/sdk/issues/50444 var expectedVersion = GetDotnetVersion(); - + // StdErr should contain first-run messages _fixture.FirstDotnetVerbUseCommandResult.StdErr .Should() @@ -134,7 +134,7 @@ public void FirstRunExperienceMessagesShouldGoToStdErr() DotnetFirstTimeUseConfigurer.ParseDotNetVersion(expectedVersion), expectedVersion)) .And.ContainVisuallySameFragment(Configurer.LocalizableStrings.FirstTimeMessageMoreInformation); - + // StdOut should NOT contain first-run messages (they should only be in stderr) _fixture.FirstDotnetVerbUseCommandResult.StdOut .Should() diff --git a/test/dotnet.Tests/ParserTests/CommonOptionsTests.cs b/test/dotnet.Tests/ParserTests/CommonOptionsTests.cs index a7949775bade..f54e577a92f6 100644 --- a/test/dotnet.Tests/ParserTests/CommonOptionsTests.cs +++ b/test/dotnet.Tests/ParserTests/CommonOptionsTests.cs @@ -32,7 +32,7 @@ public void Duplicates_CasingDifference() var result = command.Parse(["-e", "A=1", "-e", "a=2"]); var expected = new Dictionary(); - + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { expected.Add("A", "2"); diff --git a/test/dotnet.Tests/ShellShimTests/ShellShimRepositoryTests.cs b/test/dotnet.Tests/ShellShimTests/ShellShimRepositoryTests.cs index facb4cda8184..54e5e06385dd 100644 --- a/test/dotnet.Tests/ShellShimTests/ShellShimRepositoryTests.cs +++ b/test/dotnet.Tests/ShellShimTests/ShellShimRepositoryTests.cs @@ -193,11 +193,11 @@ public void GivenAnExceptionItWillRollback(bool testMockBehaviorIsInSync) shellShimRepository = ConfigBasicTestDependencyShellShimRepository(pathToShim); } - + Action intendedError = () => throw new ToolPackageException("simulated error"); - + Action a = () => { diff --git a/test/dotnet.Tests/TelemetryCommonPropertiesTests.cs b/test/dotnet.Tests/TelemetryCommonPropertiesTests.cs index a77f0bf81765..ae4833dab820 100644 --- a/test/dotnet.Tests/TelemetryCommonPropertiesTests.cs +++ b/test/dotnet.Tests/TelemetryCommonPropertiesTests.cs @@ -211,7 +211,7 @@ public void CanDetectLLMStatusForEnvVars(Dictionary envVars, str } } } - + [Theory] [InlineData("dummySessionId")] [InlineData(null)]