diff --git a/src/Cli/dotnet/ToolPackage/IToolPackageDownloader.cs b/src/Cli/dotnet/ToolPackage/IToolPackageDownloader.cs index 87c810b2f51e..4bb960b06514 100644 --- a/src/Cli/dotnet/ToolPackage/IToolPackageDownloader.cs +++ b/src/Cli/dotnet/ToolPackage/IToolPackageDownloader.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Threading.Tasks; +using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.ToolPackage; using NuGet.Versioning; @@ -14,7 +15,8 @@ IToolPackage InstallPackage(PackageLocation packageLocation, PackageId packageId VersionRange versionRange = null, string targetFramework = null, bool isGlobalTool = false, - bool isGlobalToolRollForward = false + bool isGlobalToolRollForward = false, + RestoreActionConfig restoreActionConfig = null ); } } diff --git a/src/Cli/dotnet/ToolPackage/ToolPackageDownloader.cs b/src/Cli/dotnet/ToolPackage/ToolPackageDownloader.cs index 5e571b63ad85..f92e10e6924e 100644 --- a/src/Cli/dotnet/ToolPackage/ToolPackageDownloader.cs +++ b/src/Cli/dotnet/ToolPackage/ToolPackageDownloader.cs @@ -77,7 +77,8 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa VersionRange versionRange = null, string targetFramework = null, bool isGlobalTool = false, - bool isGlobalToolRollForward = false + bool isGlobalToolRollForward = false, + RestoreActionConfig restoreActionConfig = null ) { var packageRootDirectory = _toolPackageStore.GetRootPackageDirectory(packageId); @@ -100,7 +101,7 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa var toolDownloadDir = isGlobalTool ? _globalToolStageDir : _localToolDownloadDir; var assetFileDirectory = isGlobalTool ? _globalToolStageDir : _localToolAssetDir; - var nugetPackageDownloader = new NuGetPackageDownloader.NuGetPackageDownloader(toolDownloadDir, verboseLogger: nugetLogger, isNuGetTool: true, verbosityOptions: verbosity); + var nugetPackageDownloader = new NuGetPackageDownloader.NuGetPackageDownloader(toolDownloadDir, verboseLogger: nugetLogger, isNuGetTool: true, restoreActionConfig: restoreActionConfig, verbosityOptions: verbosity); var packageSourceLocation = new PackageSourceLocation(packageLocation.NugetConfig, packageLocation.RootConfigDirectory, null, packageLocation.AdditionalFeeds); diff --git a/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallGlobalOrToolPathCommand.cs b/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallGlobalOrToolPathCommand.cs index fdfdd6e0fa06..095ac1ef8e71 100644 --- a/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallGlobalOrToolPathCommand.cs +++ b/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallGlobalOrToolPathCommand.cs @@ -49,6 +49,8 @@ internal class ToolInstallGlobalOrToolPathCommand : CommandBase private readonly bool _allowPackageDowngrade; + internal readonly RestoreActionConfig _restoreActionConfig; + public ToolInstallGlobalOrToolPathCommand( ParseResult parseResult, CreateToolPackageStoresAndDownloaderAndUninstaller createToolPackageStoreDownloaderUninstaller = null, @@ -77,11 +79,11 @@ public ToolInstallGlobalOrToolPathCommand( var configOption = parseResult.GetValue(ToolInstallCommandParser.ConfigOption); var sourceOption = parseResult.GetValue(ToolInstallCommandParser.AddSourceOption); var packageSourceLocation = new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), additionalSourceFeeds: sourceOption); - var restoreAction = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption), + _restoreActionConfig = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption), NoCache: parseResult.GetValue(ToolCommandRestorePassThroughOptions.NoCacheOption), IgnoreFailedSources: parseResult.GetValue(ToolCommandRestorePassThroughOptions.IgnoreFailedSourcesOption), Interactive: parseResult.GetValue(ToolCommandRestorePassThroughOptions.InteractiveRestoreOption)); - nugetPackageDownloader ??= new NuGetPackageDownloader(tempDir, verboseLogger: new NullLogger(), restoreActionConfig: restoreAction, verbosityOptions: _verbosity); + nugetPackageDownloader ??= new NuGetPackageDownloader(tempDir, verboseLogger: new NullLogger(), restoreActionConfig: _restoreActionConfig, verbosityOptions: _verbosity); _shellShimTemplateFinder = new ShellShimTemplateFinder(nugetPackageDownloader, tempDir, packageSourceLocation); _allowRollForward = parseResult.GetValue(ToolInstallCommandParser.RollForwardOption); @@ -153,7 +155,8 @@ public override int Execute() targetFramework: _framework, verbosity: _verbosity, isGlobalTool: true, - isGlobalToolRollForward: _allowRollForward + isGlobalToolRollForward: _allowRollForward, + restoreActionConfig: _restoreActionConfig ); EnsureVersionIsHigher(oldPackageNullable, newInstalledPackage, _allowPackageDowngrade); diff --git a/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalCommand.cs b/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalCommand.cs index 6bb861e7c6c7..4bc5e3cddf03 100644 --- a/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalCommand.cs +++ b/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalCommand.cs @@ -3,6 +3,7 @@ using System.CommandLine; using Microsoft.DotNet.Cli; +using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.ToolManifest; @@ -26,6 +27,8 @@ internal class ToolInstallLocalCommand : CommandBase private readonly bool _createManifestIfNeeded; private readonly bool _allowRollForward; + internal readonly RestoreActionConfig _restoreActionConfig; + public ToolInstallLocalCommand( ParseResult parseResult, IToolPackageDownloader toolPackageDownloader = null, @@ -46,7 +49,11 @@ public ToolInstallLocalCommand( new ToolManifestFinder(new DirectoryPath(Directory.GetCurrentDirectory())); _toolManifestEditor = toolManifestEditor ?? new ToolManifestEditor(); _localToolsResolverCache = localToolsResolverCache ?? new LocalToolsResolverCache(); - _toolLocalPackageInstaller = new ToolInstallLocalInstaller(parseResult, toolPackageDownloader); + _restoreActionConfig = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption), + NoCache: parseResult.GetValue(ToolCommandRestorePassThroughOptions.NoCacheOption), + IgnoreFailedSources: parseResult.GetValue(ToolCommandRestorePassThroughOptions.IgnoreFailedSourcesOption), + Interactive: parseResult.GetValue(ToolCommandRestorePassThroughOptions.InteractiveRestoreOption)); + _toolLocalPackageInstaller = new ToolInstallLocalInstaller(parseResult, toolPackageDownloader, _restoreActionConfig); _allowRollForward = parseResult.GetValue(ToolInstallCommandParser.RollForwardOption); _packageId = new PackageId(parseResult.GetValue(ToolUpdateCommandParser.PackageIdArgument)); diff --git a/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalInstaller.cs b/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalInstaller.cs index 4c370c34523f..1b778332aa69 100644 --- a/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalInstaller.cs +++ b/src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalInstaller.cs @@ -4,6 +4,7 @@ using System.CommandLine; using System.IO; using Microsoft.DotNet.Cli; +using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.ToolPackage; @@ -24,10 +25,12 @@ internal class ToolInstallLocalInstaller private readonly string _configFilePath; private readonly string[] _sources; private readonly VerbosityOptions _verbosity; + private readonly RestoreActionConfig _restoreActionConfig; public ToolInstallLocalInstaller( ParseResult parseResult, - IToolPackageDownloader toolPackageDownloader = null) + IToolPackageDownloader toolPackageDownloader = null, + RestoreActionConfig restoreActionConfig = null) { _parseResult = parseResult; _packageId = new PackageId(parseResult.GetValue(ToolInstallCommandParser.PackageIdArgument)); @@ -43,7 +46,7 @@ public ToolInstallLocalInstaller( additionalRestoreArguments: parseResult.OptionValuesToBeForwarded(ToolInstallCommandParser.GetCommand())); _toolPackageStore = toolPackageStoresAndDownloader.store; _toolPackageDownloader = toolPackageDownloader?? toolPackageStoresAndDownloader.downloader; - + _restoreActionConfig = restoreActionConfig; TargetFrameworkToInstall = BundledTargetFramework.GetTargetFrameworkMoniker(); } @@ -76,7 +79,8 @@ public IToolPackage Install(FilePath manifestFile) _packageId, verbosity: _verbosity, versionRange, - TargetFrameworkToInstall + TargetFrameworkToInstall, + restoreActionConfig: _restoreActionConfig ); return toolDownloadedPackage; diff --git a/src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateGlobalOrToolPathCommand.cs b/src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateGlobalOrToolPathCommand.cs index 74c034b509c1..6f8891aab1d0 100644 --- a/src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateGlobalOrToolPathCommand.cs +++ b/src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateGlobalOrToolPathCommand.cs @@ -10,6 +10,7 @@ using Microsoft.DotNet.Tools.Tool.Uninstall; using Microsoft.Extensions.EnvironmentAbstractions; using Microsoft.DotNet.Cli.ToolPackage; +using Microsoft.DotNet.Cli.NuGetPackageDownloader; using CreateShellShimRepository = Microsoft.DotNet.Tools.Tool.Install.CreateShellShimRepository; namespace Microsoft.DotNet.Tools.Tool.Update @@ -22,7 +23,7 @@ internal class ToolUpdateGlobalOrToolPathCommand : CommandBase { private readonly CreateShellShimRepository _createShellShimRepository; private readonly CreateToolPackageStoresAndDownloaderAndUninstaller _createToolPackageStoreDownloaderUninstaller; - private readonly ToolInstallGlobalOrToolPathCommand _toolInstallGlobalOrToolPathCommand; + internal readonly ToolInstallGlobalOrToolPathCommand _toolInstallGlobalOrToolPathCommand; public ToolUpdateGlobalOrToolPathCommand(ParseResult parseResult, CreateToolPackageStoresAndDownloaderAndUninstaller createToolPackageStoreDownloaderUninstaller = null, @@ -35,9 +36,8 @@ public ToolUpdateGlobalOrToolPathCommand(ParseResult parseResult, _createShellShimRepository = createShellShimRepository ?? ShellShimRepositoryFactory.CreateShellShimRepository; - - _toolInstallGlobalOrToolPathCommand = new ToolInstallGlobalOrToolPathCommand( + _toolInstallGlobalOrToolPathCommand = new ToolInstallGlobalOrToolPathCommand( parseResult, _createToolPackageStoreDownloaderUninstaller, _createShellShimRepository, diff --git a/src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateLocalCommand.cs b/src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateLocalCommand.cs index 5a3f232865b1..6e8d5c5e284b 100644 --- a/src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateLocalCommand.cs +++ b/src/Cli/dotnet/commands/dotnet-tool/update/ToolUpdateLocalCommand.cs @@ -3,6 +3,7 @@ using System.CommandLine; using Microsoft.DotNet.Cli; +using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.ToolManifest; @@ -19,7 +20,7 @@ internal class ToolUpdateLocalCommand : CommandBase private readonly IToolManifestEditor _toolManifestEditor; private readonly ILocalToolsResolverCache _localToolsResolverCache; private readonly IToolPackageDownloader _toolPackageDownloader; - private readonly Lazy _toolInstallLocalCommand; + internal readonly Lazy _toolInstallLocalCommand; private readonly IReporter _reporter; public ToolUpdateLocalCommand( diff --git a/src/Tests/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock.cs b/src/Tests/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock.cs index f787d1c2415b..46482067fc87 100644 --- a/src/Tests/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock.cs +++ b/src/Tests/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Text.Json; using Microsoft.DotNet.Cli; +using Microsoft.DotNet.Cli.NuGetPackageDownloader; using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.ToolPackage; @@ -97,7 +98,8 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa VersionRange versionRange = null, string targetFramework = null, bool isGlobalTool = false, - bool isGlobalToolRollForward = false + bool isGlobalToolRollForward = false, + RestoreActionConfig restoreActionConfig = null ) { string rollbackDirectory = null; diff --git a/src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs b/src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs index 3c2268b28038..0baba19cbfb7 100644 --- a/src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs +++ b/src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs @@ -74,6 +74,30 @@ public ToolInstallGlobalOrToolPathCommandTests(ITestOutputHelper log): base(log) _parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId}"); } + [Fact] + public void WhenPassingRestoreActionConfigOptions() + { + var parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId} --ignore-failed-sources"); + var toolInstallCommand = new ToolInstallGlobalOrToolPathCommand(parseResult); + toolInstallCommand._restoreActionConfig.IgnoreFailedSources.Should().BeTrue(); + } + + [Fact] + public void WhenPassingIgnoreFailedSourcesItShouldNotThrow() + { + _fileSystem.File.WriteAllText(Path.Combine(_temporaryDirectory, "nuget.config"), _nugetConfigWithInvalidSources); + var parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId} --ignore-failed-sources"); + var toolInstallGlobalOrToolPathCommand = new ToolInstallGlobalOrToolPathCommand( + parseResult, + _createToolPackageStoreDownloaderUninstaller, + _createShellShimRepository, + _environmentPathInstructionMock, + _reporter); + + toolInstallGlobalOrToolPathCommand.Execute().Should().Be(0); + _fileSystem.File.Delete(Path.Combine(_temporaryDirectory, "nuget.config")); + } + [Fact] public void WhenRunWithPackageIdItShouldCreateValidShim() { @@ -885,6 +909,16 @@ public void SetPermission(string path, string chmodArgument) { } } + + private string _nugetConfigWithInvalidSources = @"{ + + + + + + + +}"; } } diff --git a/src/Tests/dotnet.Tests/CommandTests/ToolInstallLocalCommandTests.cs b/src/Tests/dotnet.Tests/CommandTests/ToolInstallLocalCommandTests.cs index d873824680c6..88d354a57834 100644 --- a/src/Tests/dotnet.Tests/CommandTests/ToolInstallLocalCommandTests.cs +++ b/src/Tests/dotnet.Tests/CommandTests/ToolInstallLocalCommandTests.cs @@ -90,6 +90,32 @@ public ToolInstallLocalCommandTests(ITestOutputHelper log):base(log) 1); } + [Fact] + public void WhenPassingRestoreActionConfigOptions() + { + var parseResult = Parser.Instance.Parse($"dotnet tool install {_packageIdA.ToString()} --ignore-failed-sources"); + var command = new ToolInstallLocalCommand(parseResult); + command._restoreActionConfig.IgnoreFailedSources.Should().BeTrue(); + } + + [Fact] + public void WhenPassingIgnoreFailedSourcesItShouldNotThrow() + { + _fileSystem.File.WriteAllText(Path.Combine(_temporaryDirectory, "nuget.config"), _nugetConfigWithInvalidSources); + var parseResult = Parser.Instance.Parse($"dotnet tool install {_packageIdA.ToString()} --ignore-failed-sources"); + var installLocalCommand = new ToolInstallLocalCommand( + parseResult, + _toolPackageDownloaderMock, + _toolManifestFinder, + _toolManifestEditor, + _localToolsResolverCache, + _reporter); + + installLocalCommand.Execute().Should().Be(0); + + _fileSystem.File.Delete(Path.Combine(_temporaryDirectory, "nuget.config")); + } + [Fact] public void WhenRunWithPackageIdItShouldSaveToCacheAndAddToManifestFile() { @@ -474,6 +500,16 @@ out RestoredCommand restoredCommand ""isRoot"":true, ""tools"":{ } +}"; + + private string _nugetConfigWithInvalidSources = @"{ + + + + + + + }"; } } diff --git a/src/Tests/dotnet.Tests/CommandTests/ToolUpdateGlobalOrToolPathCommandTests.cs b/src/Tests/dotnet.Tests/CommandTests/ToolUpdateGlobalOrToolPathCommandTests.cs index 9b1f7e3bdcd8..bd2f3d563276 100644 --- a/src/Tests/dotnet.Tests/CommandTests/ToolUpdateGlobalOrToolPathCommandTests.cs +++ b/src/Tests/dotnet.Tests/CommandTests/ToolUpdateGlobalOrToolPathCommandTests.cs @@ -12,6 +12,8 @@ using Microsoft.DotNet.ShellShim; using System.CommandLine; using Parser = Microsoft.DotNet.Cli.Parser; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.DotNet.Tools.Tool.Uninstall; namespace Microsoft.DotNet.Tests.Commands.Tool { @@ -28,14 +30,15 @@ public class ToolUpdateGlobalOrToolPathCommandTests private const string HigherPreviewPackageVersion = "1.0.5-preview3"; private readonly string _shimsDirectory; private readonly string _toolsDirectory; + private readonly string _tempDirectory; public ToolUpdateGlobalOrToolPathCommandTests() { _reporter = new BufferedReporter(); _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build(); - var tempDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; - _shimsDirectory = Path.Combine(tempDirectory, "shims"); - _toolsDirectory = Path.Combine(tempDirectory, "tools"); + _tempDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; + _shimsDirectory = Path.Combine(_tempDirectory, "shims"); + _toolsDirectory = Path.Combine(_tempDirectory, "tools"); _environmentPathInstructionMock = new EnvironmentPathInstructionMock(_reporter, _shimsDirectory); _store = new ToolPackageStoreMock(new DirectoryPath(_toolsDirectory), _fileSystem); _mockFeeds = new List @@ -68,6 +71,25 @@ public ToolUpdateGlobalOrToolPathCommandTests() }; } + [Fact] + public void WhenPassingRestoreActionConfigOptions() + { + var parseResult = Parser.Instance.Parse($"dotnet tool update -g {_packageId} --ignore-failed-sources"); + var toolUpdateCommand = new ToolUpdateGlobalOrToolPathCommand(parseResult); + toolUpdateCommand._toolInstallGlobalOrToolPathCommand._restoreActionConfig.IgnoreFailedSources.Should().BeTrue(); + } + + [Fact] + public void WhenPassingIgnoreFailedSourcesItShouldNotThrow() + { + _fileSystem.File.WriteAllText(Path.Combine(_tempDirectory, "nuget.config"), _nugetConfigWithInvalidSources); + + var command = CreateUpdateCommand($"-g {_packageId} --ignore-failed-sources"); + + command.Execute().Should().Be(0); + _fileSystem.File.Delete(Path.Combine(_tempDirectory, "nuget.config")); + } + [Fact] public void GivenANonFeedExistentPackageItErrors() { @@ -406,6 +428,16 @@ private ShellShimRepository GetMockedShellShimRepository() appHostShellShimMaker: new AppHostShellShimMakerMock(_fileSystem), filePermissionSetter: new ToolInstallGlobalOrToolPathCommandTests.NoOpFilePermissionSetter()); } + + private string _nugetConfigWithInvalidSources = @"{ + + + + + + + +}"; } } diff --git a/src/Tests/dotnet.Tests/CommandTests/ToolUpdateLocalCommandTests.cs b/src/Tests/dotnet.Tests/CommandTests/ToolUpdateLocalCommandTests.cs index d6742c26f443..aa4ea6c3db0b 100644 --- a/src/Tests/dotnet.Tests/CommandTests/ToolUpdateLocalCommandTests.cs +++ b/src/Tests/dotnet.Tests/CommandTests/ToolUpdateLocalCommandTests.cs @@ -7,6 +7,7 @@ using Microsoft.DotNet.ToolManifest; using Microsoft.DotNet.ToolPackage; using Microsoft.DotNet.Tools.Tests.ComponentMocks; +using Microsoft.DotNet.Tools.Tool.Install; using Microsoft.DotNet.Tools.Tool.Restore; using Microsoft.DotNet.Tools.Tool.Update; using Microsoft.Extensions.DependencyModel.Tests; @@ -112,6 +113,32 @@ public ToolUpdateLocalCommandTests() _reporter); } + [Fact] + public void WhenPassingRestoreActionConfigOptions() + { + var parseResult = Parser.Instance.Parse($"dotnet tool update {_packageIdA.ToString()} --ignore-failed-sources"); + var command = new ToolUpdateLocalCommand(parseResult); + command._toolInstallLocalCommand.Value._restoreActionConfig.IgnoreFailedSources.Should().BeTrue(); + } + + [Fact] + public void WhenPassingIgnoreFailedSourcesItShouldNotThrow() + { + _fileSystem.File.WriteAllText(Path.Combine(_temporaryDirectory, "nuget.config"), _nugetConfigWithInvalidSources); + var parseResult = Parser.Instance.Parse($"dotnet tool update {_packageIdA.ToString()} --ignore-failed-sources"); + var updateLocalCommand = new ToolUpdateLocalCommand( + parseResult, + _toolPackageDownloaderMock, + _toolManifestFinder, + _toolManifestEditor, + _localToolsResolverCache, + _reporter); + + updateLocalCommand.Execute().Should().Be(0); + + _fileSystem.File.Delete(Path.Combine(_temporaryDirectory, "nuget.config")); + } + [Fact] public void WhenRunWithPackageIdItShouldUpdateFromManifestFile() { @@ -372,6 +399,16 @@ out RestoredCommand restoredCommand ""version"": 1, ""isRoot"": false, ""tools"": {} +}"; + + private string _nugetConfigWithInvalidSources = @"{ + + + + + + + }"; } }