Skip to content

Commit 7da0b73

Browse files
author
v-wuzhai
authored
[automated] Merge branch 'release/8.0.1xx' => 'release/8.0.3xx' (#44657)
2 parents 75bf2d7 + b0968a1 commit 7da0b73

12 files changed

+177
-18
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

@@ -14,7 +15,8 @@ IToolPackage InstallPackage(PackageLocation packageLocation, PackageId packageId
1415
VersionRange versionRange = null,
1516
string targetFramework = null,
1617
bool isGlobalTool = false,
17-
bool isGlobalToolRollForward = false
18+
bool isGlobalToolRollForward = false,
19+
RestoreActionConfig restoreActionConfig = null
1820
);
1921
}
2022
}

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, isNuGetTool: true, verbosityOptions: verbosity);
104+
var nugetPackageDownloader = new NuGetPackageDownloader.NuGetPackageDownloader(toolDownloadDir, verboseLogger: nugetLogger, isNuGetTool: true, restoreActionConfig: restoreActionConfig, verbosityOptions: verbosity);
104105

105106
var packageSourceLocation = new PackageSourceLocation(packageLocation.NugetConfig, packageLocation.RootConfigDirectory, null, 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
@@ -49,6 +49,8 @@ internal class ToolInstallGlobalOrToolPathCommand : CommandBase
4949
private readonly bool _allowPackageDowngrade;
5050

5151

52+
internal readonly RestoreActionConfig _restoreActionConfig;
53+
5254
public ToolInstallGlobalOrToolPathCommand(
5355
ParseResult parseResult,
5456
CreateToolPackageStoresAndDownloaderAndUninstaller createToolPackageStoreDownloaderUninstaller = null,
@@ -77,11 +79,11 @@ public ToolInstallGlobalOrToolPathCommand(
7779
var configOption = parseResult.GetValue(ToolInstallCommandParser.ConfigOption);
7880
var sourceOption = parseResult.GetValue(ToolInstallCommandParser.AddSourceOption);
7981
var packageSourceLocation = new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), additionalSourceFeeds: sourceOption);
80-
var restoreAction = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption),
82+
_restoreActionConfig = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption),
8183
NoCache: parseResult.GetValue(ToolCommandRestorePassThroughOptions.NoCacheOption),
8284
IgnoreFailedSources: parseResult.GetValue(ToolCommandRestorePassThroughOptions.IgnoreFailedSourcesOption),
8385
Interactive: parseResult.GetValue(ToolCommandRestorePassThroughOptions.InteractiveRestoreOption));
84-
nugetPackageDownloader ??= new NuGetPackageDownloader(tempDir, verboseLogger: new NullLogger(), restoreActionConfig: restoreAction, verbosityOptions: _verbosity);
86+
nugetPackageDownloader ??= new NuGetPackageDownloader(tempDir, verboseLogger: new NullLogger(), restoreActionConfig: _restoreActionConfig, verbosityOptions: _verbosity);
8587
_shellShimTemplateFinder = new ShellShimTemplateFinder(nugetPackageDownloader, tempDir, packageSourceLocation);
8688

8789
_allowRollForward = parseResult.GetValue(ToolInstallCommandParser.RollForwardOption);
@@ -153,7 +155,8 @@ public override int Execute()
153155
targetFramework: _framework,
154156
verbosity: _verbosity,
155157
isGlobalTool: true,
156-
isGlobalToolRollForward: _allowRollForward
158+
isGlobalToolRollForward: _allowRollForward,
159+
restoreActionConfig: _restoreActionConfig
157160
);
158161

159162
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;
@@ -26,6 +27,8 @@ internal class ToolInstallLocalCommand : CommandBase
2627
private readonly bool _createManifestIfNeeded;
2728
private readonly bool _allowRollForward;
2829

30+
internal readonly RestoreActionConfig _restoreActionConfig;
31+
2932
public ToolInstallLocalCommand(
3033
ParseResult parseResult,
3134
IToolPackageDownloader toolPackageDownloader = null,
@@ -46,7 +49,11 @@ public ToolInstallLocalCommand(
4649
new ToolManifestFinder(new DirectoryPath(Directory.GetCurrentDirectory()));
4750
_toolManifestEditor = toolManifestEditor ?? new ToolManifestEditor();
4851
_localToolsResolverCache = localToolsResolverCache ?? new LocalToolsResolverCache();
49-
_toolLocalPackageInstaller = new ToolInstallLocalInstaller(parseResult, toolPackageDownloader);
52+
_restoreActionConfig = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption),
53+
NoCache: parseResult.GetValue(ToolCommandRestorePassThroughOptions.NoCacheOption),
54+
IgnoreFailedSources: parseResult.GetValue(ToolCommandRestorePassThroughOptions.IgnoreFailedSourcesOption),
55+
Interactive: parseResult.GetValue(ToolCommandRestorePassThroughOptions.InteractiveRestoreOption));
56+
_toolLocalPackageInstaller = new ToolInstallLocalInstaller(parseResult, toolPackageDownloader, _restoreActionConfig);
5057
_allowRollForward = parseResult.GetValue(ToolInstallCommandParser.RollForwardOption);
5158

5259
_packageId = new PackageId(parseResult.GetValue(ToolUpdateCommandParser.PackageIdArgument));

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.CommandLine;
55
using System.IO;
66
using Microsoft.DotNet.Cli;
7+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
78
using Microsoft.DotNet.Cli.ToolPackage;
89
using Microsoft.DotNet.Cli.Utils;
910
using Microsoft.DotNet.ToolPackage;
@@ -24,10 +25,12 @@ internal class ToolInstallLocalInstaller
2425
private readonly string _configFilePath;
2526
private readonly string[] _sources;
2627
private readonly VerbosityOptions _verbosity;
28+
private readonly RestoreActionConfig _restoreActionConfig;
2729

2830
public ToolInstallLocalInstaller(
2931
ParseResult parseResult,
30-
IToolPackageDownloader toolPackageDownloader = null)
32+
IToolPackageDownloader toolPackageDownloader = null,
33+
RestoreActionConfig restoreActionConfig = null)
3134
{
3235
_parseResult = parseResult;
3336
_packageId = new PackageId(parseResult.GetValue(ToolInstallCommandParser.PackageIdArgument));
@@ -43,7 +46,7 @@ public ToolInstallLocalInstaller(
4346
additionalRestoreArguments: parseResult.OptionValuesToBeForwarded(ToolInstallCommandParser.GetCommand()));
4447
_toolPackageStore = toolPackageStoresAndDownloader.store;
4548
_toolPackageDownloader = toolPackageDownloader?? toolPackageStoresAndDownloader.downloader;
46-
49+
_restoreActionConfig = restoreActionConfig;
4750

4851
TargetFrameworkToInstall = BundledTargetFramework.GetTargetFrameworkMoniker();
4952
}
@@ -76,7 +79,8 @@ public IToolPackage Install(FilePath manifestFile)
7679
_packageId,
7780
verbosity: _verbosity,
7881
versionRange,
79-
TargetFrameworkToInstall
82+
TargetFrameworkToInstall,
83+
restoreActionConfig: _restoreActionConfig
8084
);
8185

8286
return toolDownloadedPackage;

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

Lines changed: 3 additions & 3 deletions
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,
@@ -35,9 +36,8 @@ public ToolUpdateGlobalOrToolPathCommand(ParseResult parseResult,
3536

3637
_createShellShimRepository =
3738
createShellShimRepository ?? ShellShimRepositoryFactory.CreateShellShimRepository;
38-
39-
_toolInstallGlobalOrToolPathCommand = new ToolInstallGlobalOrToolPathCommand(
4039

40+
_toolInstallGlobalOrToolPathCommand = new ToolInstallGlobalOrToolPathCommand(
4141
parseResult,
4242
_createToolPackageStoreDownloaderUninstaller,
4343
_createShellShimRepository,

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(

src/Tests/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;

src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs

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

77+
[Fact]
78+
public void WhenPassingRestoreActionConfigOptions()
79+
{
80+
var parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId} --ignore-failed-sources");
81+
var toolInstallCommand = new ToolInstallGlobalOrToolPathCommand(parseResult);
82+
toolInstallCommand._restoreActionConfig.IgnoreFailedSources.Should().BeTrue();
83+
}
84+
85+
[Fact]
86+
public void WhenPassingIgnoreFailedSourcesItShouldNotThrow()
87+
{
88+
_fileSystem.File.WriteAllText(Path.Combine(_temporaryDirectory, "nuget.config"), _nugetConfigWithInvalidSources);
89+
var parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId} --ignore-failed-sources");
90+
var toolInstallGlobalOrToolPathCommand = new ToolInstallGlobalOrToolPathCommand(
91+
parseResult,
92+
_createToolPackageStoreDownloaderUninstaller,
93+
_createShellShimRepository,
94+
_environmentPathInstructionMock,
95+
_reporter);
96+
97+
toolInstallGlobalOrToolPathCommand.Execute().Should().Be(0);
98+
_fileSystem.File.Delete(Path.Combine(_temporaryDirectory, "nuget.config"));
99+
}
100+
77101
[Fact]
78102
public void WhenRunWithPackageIdItShouldCreateValidShim()
79103
{
@@ -885,6 +909,16 @@ public void SetPermission(string path, string chmodArgument)
885909
{
886910
}
887911
}
912+
913+
private string _nugetConfigWithInvalidSources = @"{
914+
<?xml version=""1.0"" encoding=""utf-8""?>
915+
<configuration>
916+
<packageSources>
917+
<add key=""nuget"" value=""https://api.nuget.org/v3/index.json"" />
918+
<add key=""invalid_source"" value=""https://api.nuget.org/v3/invalid.json"" />
919+
</packageSources>
920+
</configuration>
921+
}";
888922
}
889923
}
890924

src/Tests/dotnet.Tests/CommandTests/ToolInstallLocalCommandTests.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,32 @@ 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+
_toolPackageDownloaderMock,
109+
_toolManifestFinder,
110+
_toolManifestEditor,
111+
_localToolsResolverCache,
112+
_reporter);
113+
114+
installLocalCommand.Execute().Should().Be(0);
115+
116+
_fileSystem.File.Delete(Path.Combine(_temporaryDirectory, "nuget.config"));
117+
}
118+
93119
[Fact]
94120
public void WhenRunWithPackageIdItShouldSaveToCacheAndAddToManifestFile()
95121
{
@@ -474,6 +500,16 @@ out RestoredCommand restoredCommand
474500
""isRoot"":true,
475501
""tools"":{
476502
}
503+
}";
504+
505+
private string _nugetConfigWithInvalidSources = @"{
506+
<?xml version=""1.0"" encoding=""utf-8""?>
507+
<configuration>
508+
<packageSources>
509+
<add key=""nuget"" value=""https://api.nuget.org/v3/index.json"" />
510+
<add key=""invalid_source"" value=""https://api.nuget.org/v3/invalid.json"" />
511+
</packageSources>
512+
</configuration>
477513
}";
478514
}
479515
}

0 commit comments

Comments
 (0)