private (FilePath, LocalToolsCommandResolver) DefaultSetup(string toolCommand) { NuGetVersion packageVersionA = NuGetVersion.Parse("1.0.4"); _fileSystem.File.WriteAllText(Path.Combine(_testDirectoryRoot, ManifestFilename), _jsonContent.Replace("$TOOLCOMMAND$", toolCommand)); ToolManifestFinder toolManifest = new ToolManifestFinder(new DirectoryPath(_testDirectoryRoot), _fileSystem, new FakeDangerousFileDetector()); ToolCommandName toolCommandNameA = new ToolCommandName(toolCommand); FilePath fakeExecutable = _nugetGlobalPackagesFolder.WithFile("fakeExecutable.dll"); _fileSystem.Directory.CreateDirectory(_nugetGlobalPackagesFolder.Value); _fileSystem.File.CreateEmptyFile(fakeExecutable.Value); _localToolsResolverCache.Save( new Dictionary <RestoredCommandIdentifier, RestoredCommand> { [new RestoredCommandIdentifier( new PackageId("local.tool.console.a"), packageVersionA, NuGetFramework.Parse(BundledTargetFramework.GetTargetFrameworkMoniker()), Constants.AnyRid, toolCommandNameA)] = new RestoredCommand(toolCommandNameA, "dotnet", fakeExecutable) }); var localToolsCommandResolver = new LocalToolsCommandResolver( toolManifest, _localToolsResolverCache, _fileSystem); return(fakeExecutable, localToolsCommandResolver); }
public ToolRunCommand( ParseResult result, LocalToolsCommandResolver localToolsCommandResolver = null) : base(result) { _toolCommandName = result.GetValueForArgument(ToolRunCommandParser.CommandNameArgument); _forwardArgument = result.UnmatchedTokens.Concat(result.UnparsedTokens); _localToolsCommandResolver = localToolsCommandResolver ?? new LocalToolsCommandResolver(); }
public ToolRunCommand( AppliedOption options, ParseResult result, LocalToolsCommandResolver localToolsCommandResolver = null) : base(result) { _toolCommandName = options.Arguments.Single(); _forwardArgument = result.UnmatchedTokens.Concat(result.UnparsedTokens); _localToolsCommandResolver = localToolsCommandResolver ?? new LocalToolsCommandResolver(); }
public void ItCanResolveAmbiguityCausedByPrefixDotnetDash() { _fileSystem.File.WriteAllText(Path.Combine(_testDirectoryRoot, ManifestFilename), _jsonContentWithDotnetDash); ToolManifestFinder toolManifest = new ToolManifestFinder(new DirectoryPath(_testDirectoryRoot), _fileSystem); var fakeExecutableA = _nugetGlobalPackagesFolder.WithFile("fakeExecutable-a.dll"); var fakeExecutableDotnetA = _nugetGlobalPackagesFolder.WithFile("fakeExecutable-a.dll"); _fileSystem.Directory.CreateDirectory(_nugetGlobalPackagesFolder.Value); _fileSystem.File.CreateEmptyFile(fakeExecutableA.Value); _fileSystem.File.CreateEmptyFile(fakeExecutableDotnetA.Value); _localToolsResolverCache.Save( new Dictionary <RestoredCommandIdentifier, RestoredCommand> { [new RestoredCommandIdentifier( new PackageId("local.tool.console.a"), NuGetVersion.Parse("1.0.4"), NuGetFramework.Parse(BundledTargetFramework.GetTargetFrameworkMoniker()), Constants.AnyRid, new ToolCommandName("a"))] = new RestoredCommand(new ToolCommandName("a"), "dotnet", fakeExecutableA), [new RestoredCommandIdentifier( new PackageId("local.tool.console.dotnet.a"), NuGetVersion.Parse("1.0.4"), NuGetFramework.Parse(BundledTargetFramework.GetTargetFrameworkMoniker()), Constants.AnyRid, new ToolCommandName("dotnet-a"))] = new RestoredCommand(new ToolCommandName("dotnet-a"), "dotnet", fakeExecutableDotnetA) }, _nugetGlobalPackagesFolder); var localToolsCommandResolver = new LocalToolsCommandResolver( toolManifest, _localToolsResolverCache, _fileSystem, _nugetGlobalPackagesFolder); localToolsCommandResolver.Resolve(new CommandResolverArguments() { CommandName = "dotnet-a", }).Args.Trim('"').Should().Be(fakeExecutableA.Value); localToolsCommandResolver.Resolve(new CommandResolverArguments() { CommandName = "dotnet-dotnet-a", }).Args.Trim('"').Should().Be(fakeExecutableDotnetA.Value); }
public void ItCanFindToolExecutable() { var toolCommand = "a"; NuGetVersion packageVersionA = NuGetVersion.Parse("1.0.4"); _fileSystem.File.WriteAllText(Path.Combine(_testDirectoryRoot, ManifestFilename), _jsonContent.Replace("$TOOLCOMMAND$", toolCommand)); ToolManifestFinder toolManifest = new ToolManifestFinder(new DirectoryPath(_testDirectoryRoot), _fileSystem); ToolCommandName toolCommandNameA = new ToolCommandName(toolCommand); var fakeExecutable = _nugetGlobalPackagesFolder.WithFile("fakeExecutable.dll"); _fileSystem.Directory.CreateDirectory(_nugetGlobalPackagesFolder.Value); _fileSystem.File.CreateEmptyFile(fakeExecutable.Value); _localToolsResolverCache.Save( new Dictionary <RestoredCommandIdentifier, RestoredCommand> { [new RestoredCommandIdentifier( new PackageId("local.tool.console.a"), packageVersionA, NuGetFramework.Parse(BundledTargetFramework.GetTargetFrameworkMoniker()), Constants.AnyRid, toolCommandNameA)] = new RestoredCommand(toolCommandNameA, "dotnet", fakeExecutable) }, _nugetGlobalPackagesFolder); var localToolsCommandResolver = new LocalToolsCommandResolver( toolManifest, _localToolsResolverCache, _fileSystem, _nugetGlobalPackagesFolder); var result = localToolsCommandResolver.Resolve(new CommandResolverArguments() { CommandName = "dotnet-a", }); result.Should().NotBeNull(); var commandPath = result.Args.Trim('"'); _fileSystem.File.Exists(commandPath).Should().BeTrue("the following path exists: " + commandPath); commandPath.Should().Be(fakeExecutable.Value); }
public void WhenNuGetGlobalPackageLocationIsCleanedAfterRestoreItShowError() { ToolCommandName toolCommandNameA = new ToolCommandName("a"); NuGetVersion packageVersionA = NuGetVersion.Parse("1.0.4"); _fileSystem.File.WriteAllText(Path.Combine(_testDirectoryRoot, ManifestFilename), _jsonContent.Replace("$TOOLCOMMAND$", toolCommandNameA.Value)); ToolManifestFinder toolManifest = new ToolManifestFinder(new DirectoryPath(_testDirectoryRoot), _fileSystem); var fakeExecutable = _nugetGlobalPackagesFolder.WithFile("fakeExecutable.dll"); _fileSystem.Directory.CreateDirectory(_nugetGlobalPackagesFolder.Value); _fileSystem.File.CreateEmptyFile(fakeExecutable.Value); _localToolsResolverCache.Save( new Dictionary <RestoredCommandIdentifier, RestoredCommand> { [new RestoredCommandIdentifier( new PackageId("local.tool.console.a"), packageVersionA, NuGetFramework.Parse(BundledTargetFramework.GetTargetFrameworkMoniker()), Constants.AnyRid, toolCommandNameA)] = new RestoredCommand(toolCommandNameA, "dotnet", fakeExecutable) }, _nugetGlobalPackagesFolder); var localToolsCommandResolver = new LocalToolsCommandResolver( toolManifest, _localToolsResolverCache, _fileSystem, _nugetGlobalPackagesFolder); _fileSystem.File.Delete(fakeExecutable.Value); Action action = () => localToolsCommandResolver.Resolve(new CommandResolverArguments() { CommandName = $"dotnet-{toolCommandNameA.ToString()}", }); action.ShouldThrow <GracefulException>(string.Format(CommandFactory.LocalizableStrings.NeedRunToolRestore, toolCommandNameA.ToString())); }
public void WhenNuGetGlobalPackageLocationIsNotRestoredItThrowsGracefulException() { ToolCommandName toolCommandNameA = new ToolCommandName("a"); NuGetVersion packageVersionA = NuGetVersion.Parse("1.0.4"); _fileSystem.File.WriteAllText(Path.Combine(_testDirectoryRoot, ManifestFilename), _jsonContent.Replace("$TOOLCOMMAND$", toolCommandNameA.Value)); ToolManifestFinder toolManifest = new ToolManifestFinder(new DirectoryPath(_testDirectoryRoot), _fileSystem); var localToolsCommandResolver = new LocalToolsCommandResolver( toolManifest, _localToolsResolverCache, _fileSystem); Action action = () => localToolsCommandResolver.ResolveStrict(new CommandResolverArguments() { CommandName = $"dotnet-{toolCommandNameA.ToString()}", }); action.ShouldThrow <GracefulException>(string.Format(CommandFactory.LocalizableStrings.NeedRunToolRestore, toolCommandNameA.ToString())); }