public void GivenNugetConfigInstallSucceeds(bool testMockBehaviorIsInSync) { var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed(); var(store, installer, reporter, fileSystem) = Setup( useMock: testMockBehaviorIsInSync, feeds: GetMockFeedsForConfigFile(nugetConfigPath)); var nugetCacheLocation = new DirectoryPath(Path.GetTempPath()).WithSubDirectories(Path.GetRandomFileName()); IToolPackage toolPackage = installer.InstallPackageToExternalManagedLocation( packageId: TestPackageId, versionRange: VersionRange.Parse(TestPackageVersion), packageLocation: new PackageLocation(nugetConfig: nugetConfigPath), targetFramework: _testTargetframework); var commands = toolPackage.Commands; commands[0].Executable.Value.Should().StartWith(NuGetGlobalPackagesFolder.GetLocation()); fileSystem.File .Exists(commands[0].Executable.Value) .Should().BeTrue($"{commands[0].Executable.Value} should exist"); }
public IToolPackage InstallPackageToExternalManagedLocation( PackageLocation packageLocation, PackageId packageId, VersionRange versionRange = null, string targetFramework = null, string verbosity = null) { _installCallback?.Invoke(); var packageDirectory = new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation()).WithSubDirectories(packageId.ToString()); _fileSystem.Directory.CreateDirectory(packageDirectory.Value); var executable = packageDirectory.WithFile("exe"); _fileSystem.File.CreateEmptyFile(executable.Value); MockFeedPackage package = _projectRestorer.GetPackage( packageId.ToString(), versionRange ?? VersionRange.Parse("*"), packageLocation.NugetConfig, packageLocation.RootConfigDirectory); return(new TestToolPackage { Id = packageId, Version = NuGetVersion.Parse(package.Version), Commands = new List <RestoredCommand> { new RestoredCommand(new ToolCommandName(package.ToolCommandName), "runner", executable) }, Warnings = Array.Empty <string>(), PackagedShims = Array.Empty <FilePath>() }); }
public void GivenNugetConfigVersionRangeInstallSucceeds(bool testMockBehaviorIsInSync) { string testDirectory = _testAssetsManager.CreateTestDirectory(identifier: testMockBehaviorIsInSync.ToString()).Path; var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed(testDirectory); var(store, installer, reporter, fileSystem) = Setup( useMock: testMockBehaviorIsInSync, testDirectory: testDirectory, feeds: GetMockFeedsForConfigFile(nugetConfigPath)); var nugetCacheLocation = new DirectoryPath(testDirectory).WithSubDirectories(Path.GetRandomFileName()); IToolPackage toolPackage = installer.InstallPackageToExternalManagedLocation( packageId: TestPackageId, versionRange: VersionRange.Parse("1.0.0-*"), packageLocation: new PackageLocation(nugetConfig: nugetConfigPath), targetFramework: _testTargetframework); var expectedPackagesFolder = testMockBehaviorIsInSync ? NuGetGlobalPackagesFolder.GetLocation() : TestContext.Current.NuGetCachePath; var commands = toolPackage.Commands; commands[0].Executable.Value.Should().StartWith(expectedPackagesFolder); toolPackage.Version.Should().Be(NuGetVersion.Parse(TestPackageVersion)); }
public ToolRestoreCommandWithMultipleNugetConfigTests() { _packageVersionA = NuGetVersion.Parse("1.0.4"); _packageVersionB = NuGetVersion.Parse("1.0.4"); _reporter = new BufferedReporter(); _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build(); _nugetGlobalPackagesFolder = new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation()); string temporaryDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; string pathToPlacePackages = Path.Combine(temporaryDirectory, "pathToPlacePackage"); ToolPackageStoreMock toolPackageStoreMock = new ToolPackageStoreMock(new DirectoryPath(pathToPlacePackages), _fileSystem); SetupFileLayoutAndFeed(temporaryDirectory, toolPackageStoreMock); ParseResult result = Parser.Instance.Parse("dotnet tool restore"); _appliedCommand = result["dotnet"]["tool"]["restore"]; Cli.CommandLine.Parser parser = Parser.Instance; _parseResult = parser.ParseFrom("dotnet tool", new[] { "restore" }); _localToolsResolverCache = new LocalToolsResolverCache( _fileSystem, new DirectoryPath(Path.Combine(temporaryDirectory, "cache")), 1); }
public ToolInstallLocalCommandTests() { _packageVersionA = NuGetVersion.Parse("1.0.4"); _reporter = new BufferedReporter(); _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build(); _nugetGlobalPackagesFolder = new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation()); _temporaryDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; _pathToPlacePackages = Path.Combine(_temporaryDirectory, "pathToPlacePackage"); ToolPackageStoreMock toolPackageStoreMock = new ToolPackageStoreMock(new DirectoryPath(_pathToPlacePackages), _fileSystem); _toolPackageStore = toolPackageStoreMock; _toolPackageInstallerMock = new ToolPackageInstallerMock( _fileSystem, _toolPackageStore, new ProjectRestorerMock( _fileSystem, _reporter, new[] { new MockFeed { Type = MockFeedType.ImplicitAdditionalFeed, Packages = new List <MockFeedPackage> { new MockFeedPackage { PackageId = _packageIdA.ToString(), Version = _packageVersionA.ToNormalizedString(), ToolCommandName = _toolCommandNameA.ToString() } } } })); _localToolsResolverCache = new LocalToolsResolverCache( _fileSystem, new DirectoryPath(Path.Combine(_temporaryDirectory, "cache")), 1); _manifestFilePath = Path.Combine(_temporaryDirectory, "dotnet-tools.json"); _fileSystem.File.WriteAllText(Path.Combine(_temporaryDirectory, _manifestFilePath), _jsonContent); _toolManifestFinder = new ToolManifestFinder(new DirectoryPath(_temporaryDirectory), _fileSystem); _toolManifestEditor = new ToolManifestEditor(_fileSystem); ParseResult result = Parser.Instance.Parse($"dotnet tool install {_packageIdA.ToString()}"); _appliedCommand = result["dotnet"]["tool"]["install"]; Cli.CommandLine.Parser parser = Parser.Instance; _parseResult = parser.ParseFrom("dotnet tool", new[] { "install", _packageIdA.ToString() }); _localToolsResolverCache = new LocalToolsResolverCache( _fileSystem, new DirectoryPath(Path.Combine(_temporaryDirectory, "cache")), 1); }
public ToolRestoreCommandTests() { _packageVersionA = NuGetVersion.Parse("1.0.4"); _packageVersionWithCommandNameCollisionWithA = NuGetVersion.Parse("1.0.9"); _packageVersionB = NuGetVersion.Parse("1.0.4"); _reporter = new BufferedReporter(); _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build(); _nugetGlobalPackagesFolder = new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation()); _temporaryDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; _pathToPlacePackages = Path.Combine(_temporaryDirectory, "pathToPlacePackage"); ToolPackageStoreMock toolPackageStoreMock = new ToolPackageStoreMock(new DirectoryPath(_pathToPlacePackages), _fileSystem); _toolPackageStore = toolPackageStoreMock; _toolPackageInstallerMock = new ToolPackageInstallerMock( _fileSystem, _toolPackageStore, new ProjectRestorerMock( _fileSystem, _reporter, new List <MockFeed> { new MockFeed { Type = MockFeedType.ImplicitAdditionalFeed, Packages = new List <MockFeedPackage> { new MockFeedPackage { PackageId = _packageIdA.ToString(), Version = _packageVersionA.ToNormalizedString(), ToolCommandName = _toolCommandNameA.ToString() }, new MockFeedPackage { PackageId = _packageIdB.ToString(), Version = _packageVersionB.ToNormalizedString(), ToolCommandName = _toolCommandNameB.ToString() }, new MockFeedPackage { PackageId = _packageIdWithCommandNameCollisionWithA.ToString(), Version = _packageVersionWithCommandNameCollisionWithA.ToNormalizedString(), ToolCommandName = "A" } } } }), installCallback: () => _installCalledCount++); _parseResult = Parser.Instance.Parse("dotnet tool restore"); _localToolsResolverCache = new LocalToolsResolverCache( _fileSystem, new DirectoryPath(Path.Combine(_temporaryDirectory, "cache")), 1); }
public GivenALocalToolsCommandResolver(ITestOutputHelper log) : base(log) { _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build(); _nugetGlobalPackagesFolder = new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation()); string temporaryDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; _testDirectoryRoot = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; _localToolsResolverCache = new LocalToolsResolverCache( _fileSystem, new DirectoryPath(Path.Combine(temporaryDirectory, "cache"))); }
public LocalToolsCommandResolver( ToolManifestFinder toolManifest = null, ILocalToolsResolverCache localToolsResolverCache = null, IFileSystem fileSystem = null, DirectoryPath?nugetGlobalPackagesFolder = null) { _toolManifest = toolManifest ?? new ToolManifestFinder(new DirectoryPath(Directory.GetCurrentDirectory())); _localToolsResolverCache = localToolsResolverCache ?? new LocalToolsResolverCache(); _fileSystem = fileSystem ?? new FileSystemWrapper(); _nugetGlobalPackagesFolder = nugetGlobalPackagesFolder ?? new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation()); }
public ToolInstallLocalCommand( AppliedOption appliedCommand, ParseResult parseResult, IToolPackageInstaller toolPackageInstaller = null, IToolManifestFinder toolManifestFinder = null, IToolManifestEditor toolManifestEditor = null, ILocalToolsResolverCache localToolsResolverCache = null, DirectoryPath?nugetGlobalPackagesFolder = null, IReporter reporter = null) : base(parseResult) { if (appliedCommand == null) { throw new ArgumentNullException(nameof(appliedCommand)); } _packageId = new PackageId(appliedCommand.Arguments.Single()); _packageVersion = appliedCommand.ValueOrDefault <string>("version"); _configFilePath = appliedCommand.ValueOrDefault <string>("configfile"); _sources = appliedCommand.ValueOrDefault <string[]>("add-source"); _verbosity = appliedCommand.SingleArgumentOrDefault("verbosity"); _explicitManifestFile = appliedCommand.SingleArgumentOrDefault("--tool-manifest"); _reporter = (reporter ?? Reporter.Output); if (toolPackageInstaller == null) { (IToolPackageStore, IToolPackageStoreQuery, IToolPackageInstaller installer)toolPackageStoresAndInstaller = ToolPackageFactory.CreateToolPackageStoresAndInstaller( additionalRestoreArguments: appliedCommand.OptionValuesToBeForwarded()); _toolPackageInstaller = toolPackageStoresAndInstaller.installer; } else { _toolPackageInstaller = toolPackageInstaller; } _toolManifestFinder = toolManifestFinder ?? new ToolManifestFinder(new DirectoryPath(Directory.GetCurrentDirectory())); _toolManifestEditor = toolManifestEditor ?? new ToolManifestEditor(); _localToolsResolverCache = localToolsResolverCache ?? new LocalToolsResolverCache(); _nugetGlobalPackagesFolder = nugetGlobalPackagesFolder ?? new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation()); }
public ToolRestoreCommand( AppliedOption appliedCommand, ParseResult result, IToolPackageInstaller toolPackageInstaller = null, IToolManifestFinder toolManifestFinder = null, ILocalToolsResolverCache localToolsResolverCache = null, DirectoryPath?nugetGlobalPackagesFolder = null, IReporter reporter = null) : base(result) { _options = appliedCommand ?? throw new ArgumentNullException(nameof(appliedCommand)); if (toolPackageInstaller == null) { (IToolPackageStore, IToolPackageStoreQuery, IToolPackageInstaller installer)toolPackageStoresAndInstaller = ToolPackageFactory.CreateToolPackageStoresAndInstaller( additionalRestoreArguments: appliedCommand.OptionValuesToBeForwarded()); _toolPackageInstaller = toolPackageStoresAndInstaller.installer; } else { _toolPackageInstaller = toolPackageInstaller; } _toolManifestFinder = toolManifestFinder ?? new ToolManifestFinder(new DirectoryPath(Directory.GetCurrentDirectory())); _localToolsResolverCache = localToolsResolverCache ?? new LocalToolsResolverCache( new FileSystemWrapper(), new DirectoryPath( Path.Combine(CliFolderPathCalculator.ToolsResolverCachePath)), LocalToolResolverCacheVersion); _nugetGlobalPackagesFolder = nugetGlobalPackagesFolder ?? new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation()); _reporter = reporter ?? Reporter.Output; _errorReporter = reporter ?? Reporter.Error; _configFilePath = appliedCommand.ValueOrDefault <string>("configfile"); _sources = appliedCommand.ValueOrDefault <string[]>("add-source"); _verbosity = appliedCommand.SingleArgumentOrDefault("verbosity"); }
public void GivenNugetConfigInstallSucceeds(bool testMockBehaviorIsInSync) { string testDirectory = _testAssetsManager.CreateTestDirectory(identifier: testMockBehaviorIsInSync.ToString()).Path; var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed(testDirectory); var(store, installer, reporter, fileSystem) = Setup( useMock: testMockBehaviorIsInSync, testDirectory: testDirectory, feeds: GetMockFeedsForConfigFile(nugetConfigPath)); try { var nugetCacheLocation = new DirectoryPath(testDirectory).WithSubDirectories(Path.GetRandomFileName()); IToolPackage toolPackage = installer.InstallPackageToExternalManagedLocation( packageId: TestPackageId, versionRange: VersionRange.Parse(TestPackageVersion), packageLocation: new PackageLocation(nugetConfig: nugetConfigPath), targetFramework: _testTargetframework); var commands = toolPackage.Commands; commands[0].Executable.Value.Should().StartWith(NuGetGlobalPackagesFolder.GetLocation()); fileSystem.File .Exists(commands[0].Executable.Value) .Should().BeTrue($"{commands[0].Executable.Value} should exist"); } finally { foreach (var line in reporter.Lines) { Log.WriteLine(line); } } }