Skip to content

Commit 1d36b28

Browse files
authored
[automated] Merge branch 'release/8.0.4xx' => 'release/9.0.1xx' (#44990)
2 parents 9fb180f + 7adf6fa commit 1d36b28

12 files changed

+178
-16
lines changed

src/Cli/dotnet/ToolPackage/IToolPackageDownloader.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.Threading.Tasks;
5+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
56
using Microsoft.DotNet.ToolPackage;
67
using NuGet.Versioning;
78

@@ -15,7 +16,8 @@ IToolPackage InstallPackage(PackageLocation packageLocation,
1516
VersionRange versionRange = null,
1617
string targetFramework = null,
1718
bool isGlobalTool = false,
18-
bool isGlobalToolRollForward = false
19+
bool isGlobalToolRollForward = false,
20+
RestoreActionConfig restoreActionConfig = null
1921
);
2022

2123
NuGetVersion GetNuGetVersion(

src/Cli/dotnet/ToolPackage/ToolPackageDownloader.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
7777
VersionRange versionRange = null,
7878
string targetFramework = null,
7979
bool isGlobalTool = false,
80-
bool isGlobalToolRollForward = false
80+
bool isGlobalToolRollForward = false,
81+
RestoreActionConfig restoreActionConfig = null
8182
)
8283
{
8384
var packageRootDirectory = _toolPackageStore.GetRootPackageDirectory(packageId);
@@ -100,7 +101,7 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
100101

101102
var toolDownloadDir = isGlobalTool ? _globalToolStageDir : _localToolDownloadDir;
102103
var assetFileDirectory = isGlobalTool ? _globalToolStageDir : _localToolAssetDir;
103-
var nugetPackageDownloader = new NuGetPackageDownloader.NuGetPackageDownloader(toolDownloadDir, verboseLogger: nugetLogger, shouldUsePackageSourceMapping: true, verbosityOptions: verbosity);
104+
var nugetPackageDownloader = new NuGetPackageDownloader.NuGetPackageDownloader(toolDownloadDir, verboseLogger: nugetLogger, shouldUsePackageSourceMapping: true, restoreActionConfig: restoreActionConfig, verbosityOptions: verbosity);
104105

105106
var packageSourceLocation = new PackageSourceLocation(packageLocation.NugetConfig, packageLocation.RootConfigDirectory, packageLocation.SourceFeedOverrides, packageLocation.AdditionalFeeds);
106107

src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallGlobalOrToolPathCommand.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ internal class ToolInstallGlobalOrToolPathCommand : CommandBase
5050
private readonly bool _updateAll;
5151

5252

53+
internal readonly RestoreActionConfig _restoreActionConfig;
54+
5355
public ToolInstallGlobalOrToolPathCommand(
5456
ParseResult parseResult,
5557
PackageId? packageId = null,
@@ -81,11 +83,11 @@ public ToolInstallGlobalOrToolPathCommand(
8183
var configOption = parseResult.GetValue(ToolInstallCommandParser.ConfigOption);
8284
var sourceOption = parseResult.GetValue(ToolInstallCommandParser.AddSourceOption);
8385
var packageSourceLocation = new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), additionalSourceFeeds: sourceOption);
84-
var restoreAction = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption),
86+
_restoreActionConfig = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption),
8587
NoCache: (parseResult.GetValue(ToolCommandRestorePassThroughOptions.NoCacheOption) || parseResult.GetValue(ToolCommandRestorePassThroughOptions.NoHttpCacheOption)),
8688
IgnoreFailedSources: parseResult.GetValue(ToolCommandRestorePassThroughOptions.IgnoreFailedSourcesOption),
8789
Interactive: parseResult.GetValue(ToolCommandRestorePassThroughOptions.InteractiveRestoreOption));
88-
nugetPackageDownloader ??= new NuGetPackageDownloader(tempDir, verboseLogger: new NullLogger(), restoreActionConfig: restoreAction, verbosityOptions: _verbosity);
90+
nugetPackageDownloader ??= new NuGetPackageDownloader(tempDir, verboseLogger: new NullLogger(), restoreActionConfig: _restoreActionConfig, verbosityOptions: _verbosity);
8991
_shellShimTemplateFinder = new ShellShimTemplateFinder(nugetPackageDownloader, tempDir, packageSourceLocation);
9092
_store = store;
9193

@@ -190,7 +192,8 @@ private int ExecuteInstallCommand(PackageId packageId)
190192
targetFramework: _framework,
191193
verbosity: _verbosity,
192194
isGlobalTool: true,
193-
isGlobalToolRollForward: _allowRollForward
195+
isGlobalToolRollForward: _allowRollForward,
196+
restoreActionConfig: _restoreActionConfig
194197
);
195198

196199
EnsureVersionIsHigher(oldPackageNullable, newInstalledPackage, _allowPackageDowngrade);

src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalCommand.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System.CommandLine;
55
using Microsoft.DotNet.Cli;
6+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
67
using Microsoft.DotNet.Cli.ToolPackage;
78
using Microsoft.DotNet.Cli.Utils;
89
using Microsoft.DotNet.ToolManifest;
@@ -28,6 +29,8 @@ internal class ToolInstallLocalCommand : CommandBase
2829
private readonly bool _allowRollForward;
2930
private readonly bool _updateAll;
3031

32+
internal readonly RestoreActionConfig _restoreActionConfig;
33+
3134
public ToolInstallLocalCommand(
3235
ParseResult parseResult,
3336
PackageId? packageId = null,
@@ -53,7 +56,11 @@ public ToolInstallLocalCommand(
5356
new ToolManifestFinder(new DirectoryPath(Directory.GetCurrentDirectory()));
5457
_toolManifestEditor = toolManifestEditor ?? new ToolManifestEditor();
5558
_localToolsResolverCache = localToolsResolverCache ?? new LocalToolsResolverCache();
56-
_toolLocalPackageInstaller = new ToolInstallLocalInstaller(parseResult, toolPackageDownloader, runtimeJsonPathForTests);
59+
_restoreActionConfig = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption),
60+
NoCache: parseResult.GetValue(ToolCommandRestorePassThroughOptions.NoCacheOption),
61+
IgnoreFailedSources: parseResult.GetValue(ToolCommandRestorePassThroughOptions.IgnoreFailedSourcesOption),
62+
Interactive: parseResult.GetValue(ToolCommandRestorePassThroughOptions.InteractiveRestoreOption));
63+
_toolLocalPackageInstaller = new ToolInstallLocalInstaller(parseResult, toolPackageDownloader, runtimeJsonPathForTests, _restoreActionConfig);
5764
_allowRollForward = parseResult.GetValue(ToolInstallCommandParser.RollForwardOption);
5865
_allowPackageDowngrade = parseResult.GetValue(ToolInstallCommandParser.AllowPackageDowngradeOption);
5966
}

src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalInstaller.cs

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

44
using System.CommandLine;
55
using Microsoft.DotNet.Cli;
6+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
67
using Microsoft.DotNet.Cli.ToolPackage;
78
using Microsoft.DotNet.Cli.Utils;
89
using Microsoft.DotNet.ToolPackage;
@@ -20,11 +21,13 @@ internal class ToolInstallLocalInstaller
2021
private readonly string _configFilePath;
2122
private readonly string[] _sources;
2223
private readonly VerbosityOptions _verbosity;
24+
private readonly RestoreActionConfig _restoreActionConfig;
2325

2426
public ToolInstallLocalInstaller(
2527
ParseResult parseResult,
2628
IToolPackageDownloader toolPackageDownloader = null,
27-
string runtimeJsonPathForTests = null)
29+
string runtimeJsonPathForTests = null,
30+
RestoreActionConfig restoreActionConfig = null)
2831
{
2932
_parseResult = parseResult;
3033
_configFilePath = parseResult.GetValue(ToolInstallCommandParser.ConfigOption);
@@ -37,7 +40,7 @@ public ToolInstallLocalInstaller(
3740
= ToolPackageFactory.CreateToolPackageStoresAndDownloader(
3841
additionalRestoreArguments: parseResult.OptionValuesToBeForwarded(ToolInstallCommandParser.GetCommand()), runtimeJsonPathForTests: runtimeJsonPathForTests);
3942
_toolPackageDownloader = toolPackageDownloader ?? toolPackageStoresAndDownloader.downloader;
40-
43+
_restoreActionConfig = restoreActionConfig;
4144

4245
TargetFrameworkToInstall = BundledTargetFramework.GetTargetFrameworkMoniker();
4346
}
@@ -70,7 +73,8 @@ public IToolPackage Install(FilePath manifestFile, PackageId packageId)
7073
packageId,
7174
verbosity: _verbosity,
7275
versionRange,
73-
TargetFrameworkToInstall
76+
TargetFrameworkToInstall,
77+
restoreActionConfig: _restoreActionConfig
7478
);
7579

7680
return toolDownloadedPackage;

src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateGlobalOrToolPathCommand.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Microsoft.DotNet.Tools.Tool.Uninstall;
1111
using Microsoft.Extensions.EnvironmentAbstractions;
1212
using Microsoft.DotNet.Cli.ToolPackage;
13+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
1314
using CreateShellShimRepository = Microsoft.DotNet.Tools.Tool.Install.CreateShellShimRepository;
1415

1516
namespace Microsoft.DotNet.Tools.Tool.Update
@@ -22,7 +23,7 @@ internal class ToolUpdateGlobalOrToolPathCommand : CommandBase
2223
{
2324
private readonly CreateShellShimRepository _createShellShimRepository;
2425
private readonly CreateToolPackageStoresAndDownloaderAndUninstaller _createToolPackageStoreDownloaderUninstaller;
25-
private readonly ToolInstallGlobalOrToolPathCommand _toolInstallGlobalOrToolPathCommand;
26+
internal readonly ToolInstallGlobalOrToolPathCommand _toolInstallGlobalOrToolPathCommand;
2627

2728
public ToolUpdateGlobalOrToolPathCommand(ParseResult parseResult,
2829
CreateToolPackageStoresAndDownloaderAndUninstaller createToolPackageStoreDownloaderUninstaller = null,

src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateLocalCommand.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System.CommandLine;
55
using Microsoft.DotNet.Cli;
6+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
67
using Microsoft.DotNet.Cli.ToolPackage;
78
using Microsoft.DotNet.Cli.Utils;
89
using Microsoft.DotNet.ToolManifest;
@@ -19,7 +20,7 @@ internal class ToolUpdateLocalCommand : CommandBase
1920
private readonly IToolManifestEditor _toolManifestEditor;
2021
private readonly ILocalToolsResolverCache _localToolsResolverCache;
2122
private readonly IToolPackageDownloader _toolPackageDownloader;
22-
private readonly Lazy<ToolInstallLocalCommand> _toolInstallLocalCommand;
23+
internal readonly Lazy<ToolInstallLocalCommand> _toolInstallLocalCommand;
2324
private readonly IReporter _reporter;
2425

2526
public ToolUpdateLocalCommand(

test/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Linq;
88
using System.Text.Json;
99
using Microsoft.DotNet.Cli;
10+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
1011
using Microsoft.DotNet.Cli.ToolPackage;
1112
using Microsoft.DotNet.Cli.Utils;
1213
using Microsoft.DotNet.ToolPackage;
@@ -97,7 +98,8 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
9798
VersionRange versionRange = null,
9899
string targetFramework = null,
99100
bool isGlobalTool = false,
100-
bool isGlobalToolRollForward = false
101+
bool isGlobalToolRollForward = false,
102+
RestoreActionConfig restoreActionConfig = null
101103
)
102104
{
103105
string rollbackDirectory = null;

test/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,31 @@ public ToolInstallGlobalOrToolPathCommandTests(ITestOutputHelper log): base(log)
7575
_parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId}");
7676
}
7777

78+
[Fact]
79+
public void WhenPassingRestoreActionConfigOptions()
80+
{
81+
var parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId} --ignore-failed-sources");
82+
var toolInstallCommand = new ToolInstallGlobalOrToolPathCommand(parseResult);
83+
toolInstallCommand._restoreActionConfig.IgnoreFailedSources.Should().BeTrue();
84+
}
85+
86+
[Fact]
87+
public void WhenPassingIgnoreFailedSourcesItShouldNotThrow()
88+
{
89+
_fileSystem.File.WriteAllText(Path.Combine(_temporaryDirectory, "nuget.config"), _nugetConfigWithInvalidSources);
90+
var parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId} --ignore-failed-sources");
91+
var toolInstallGlobalOrToolPathCommand = new ToolInstallGlobalOrToolPathCommand(
92+
parseResult,
93+
_packageId,
94+
_createToolPackageStoreDownloaderUninstaller,
95+
_createShellShimRepository,
96+
_environmentPathInstructionMock,
97+
_reporter);
98+
99+
toolInstallGlobalOrToolPathCommand.Execute().Should().Be(0);
100+
_fileSystem.File.Delete(Path.Combine(_temporaryDirectory, "nuget.config"));
101+
}
102+
78103
[Fact]
79104
public void WhenRunWithPackageIdItShouldCreateValidShim()
80105
{
@@ -946,6 +971,16 @@ public void SetPermission(string path, string chmodArgument)
946971
{
947972
}
948973
}
974+
975+
private string _nugetConfigWithInvalidSources = @"{
976+
<?xml version=""1.0"" encoding=""utf-8""?>
977+
<configuration>
978+
<packageSources>
979+
<add key=""nuget"" value=""https://api.nuget.org/v3/index.json"" />
980+
<add key=""invalid_source"" value=""https://api.nuget.org/v3/invalid.json"" />
981+
</packageSources>
982+
</configuration>
983+
}";
949984
}
950985
}
951986

test/dotnet.Tests/CommandTests/ToolInstallLocalCommandTests.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,33 @@ public ToolInstallLocalCommandTests(ITestOutputHelper log) : base(log)
9090
1);
9191
}
9292

93+
[Fact]
94+
public void WhenPassingRestoreActionConfigOptions()
95+
{
96+
var parseResult = Parser.Instance.Parse($"dotnet tool install {_packageIdA.ToString()} --ignore-failed-sources");
97+
var command = new ToolInstallLocalCommand(parseResult);
98+
command._restoreActionConfig.IgnoreFailedSources.Should().BeTrue();
99+
}
100+
101+
[Fact]
102+
public void WhenPassingIgnoreFailedSourcesItShouldNotThrow()
103+
{
104+
_fileSystem.File.WriteAllText(Path.Combine(_temporaryDirectory, "nuget.config"), _nugetConfigWithInvalidSources);
105+
var parseResult = Parser.Instance.Parse($"dotnet tool install {_packageIdA.ToString()} --ignore-failed-sources");
106+
var installLocalCommand = new ToolInstallLocalCommand(
107+
parseResult,
108+
_packageIdA,
109+
_toolPackageDownloaderMock,
110+
_toolManifestFinder,
111+
_toolManifestEditor,
112+
_localToolsResolverCache,
113+
_reporter);
114+
115+
installLocalCommand.Execute().Should().Be(0);
116+
117+
_fileSystem.File.Delete(Path.Combine(_temporaryDirectory, "nuget.config"));
118+
}
119+
93120
[Fact]
94121
public void WhenRunWithPackageIdItShouldSaveToCacheAndAddToManifestFile()
95122
{
@@ -485,6 +512,16 @@ out RestoredCommand restoredCommand
485512
""isRoot"":true,
486513
""tools"":{
487514
}
515+
}";
516+
517+
private string _nugetConfigWithInvalidSources = @"{
518+
<?xml version=""1.0"" encoding=""utf-8""?>
519+
<configuration>
520+
<packageSources>
521+
<add key=""nuget"" value=""https://api.nuget.org/v3/index.json"" />
522+
<add key=""invalid_source"" value=""https://api.nuget.org/v3/invalid.json"" />
523+
</packageSources>
524+
</configuration>
488525
}";
489526
}
490527
}

0 commit comments

Comments
 (0)