public ToolInstallCommandTests() { _reporter = new BufferedReporter(); _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build(); _temporaryDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; _pathToPlaceShim = Path.Combine(_temporaryDirectory, "pathToPlace"); _pathToPlacePackages = _pathToPlaceShim + "Packages"; var toolPackageStoreMock = new ToolPackageStoreMock(new DirectoryPath(_pathToPlacePackages), _fileSystem); _toolPackageStore = toolPackageStoreMock; _toolPackageStoreQuery = toolPackageStoreMock; _createShellShimRepository = (nonGlobalLocation) => new ShellShimRepository( new DirectoryPath(_pathToPlaceShim), fileSystem: _fileSystem, appHostShellShimMaker: new AppHostShellShimMakerMock(_fileSystem), filePermissionSetter: new NoOpFilePermissionSetter()); _environmentPathInstructionMock = new EnvironmentPathInstructionMock(_reporter, _pathToPlaceShim); _createToolPackageStoreAndInstaller = (_) => (_toolPackageStore, _toolPackageStoreQuery, CreateToolPackageInstaller()); ParseResult result = Parser.Instance.Parse($"dotnet tool install -g {PackageId}"); _appliedCommand = result["dotnet"]["tool"]["install"]; var parser = Parser.Instance; _parseResult = parser.ParseFrom("dotnet tool", new[] { "install", "-g", PackageId }); }
public ToolInstallGlobalOrToolPathCommandTests() { _reporter = new BufferedReporter(); _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build(); _temporaryDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath; _pathToPlaceShim = Path.Combine(_temporaryDirectory, "pathToPlace"); _fileSystem.Directory.CreateDirectory(_pathToPlaceShim); _pathToPlacePackages = _pathToPlaceShim + "Packages"; var toolPackageStoreMock = new ToolPackageStoreMock(new DirectoryPath(_pathToPlacePackages), _fileSystem); _toolPackageStore = toolPackageStoreMock; _toolPackageStoreQuery = toolPackageStoreMock; _createShellShimRepository = (_, nonGlobalLocation) => new ShellShimRepository( new DirectoryPath(_pathToPlaceShim), string.Empty, fileSystem: _fileSystem, appHostShellShimMaker: new AppHostShellShimMakerMock(_fileSystem), filePermissionSetter: new NoOpFilePermissionSetter()); _environmentPathInstructionMock = new EnvironmentPathInstructionMock(_reporter, _pathToPlaceShim); _createToolPackageStoreAndInstaller = (location, forwardArguments) => (_toolPackageStore, _toolPackageStoreQuery, CreateToolPackageInstaller()); _parseResult = Parser.Instance.Parse($"dotnet tool install -g {PackageId}"); }
public ToolPackageUninstallerMock(IFileSystem fileSystem, IToolPackageStoreQuery toolPackageStore, Action uninstallCallback = null) { _toolPackageStore = toolPackageStore ?? throw new ArgumentNullException(nameof(toolPackageStore)); _uninstallCallback = uninstallCallback; _fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); }
private ToolListGlobalOrToolPathCommand CreateCommand(IToolPackageStoreQuery store, string options = "", string expectedToolPath = null) { var result = Parser.Instance.Parse("dotnet tool list " + options); return(new ToolListGlobalOrToolPathCommand( result, toolPath => { AssertExpectedToolPath(toolPath, expectedToolPath); return store; }, _reporter)); }
private ListToolCommand CreateCommand(IToolPackageStoreQuery store, string options = "", string expectedToolPath = null) { ParseResult result = Parser.Instance.Parse("dotnet tool list " + options); return(new ListToolCommand( result["dotnet"]["tool"]["list"], result, toolPath => { AssertExpectedToolPath(toolPath, expectedToolPath); return store; }, _reporter)); }
private IEnumerable <string> EnumerateExpectedTableLines(IToolPackageStoreQuery store) { string GetCommandsString(IToolPackage package) { return(string.Join(ListToolCommand.CommandDelimiter, package.Commands.Select(c => c.Name))); } var packages = store.EnumeratePackages().Where(PackageHasCommands).OrderBy(package => package.Id); var columnDelimiter = PrintableTable <IToolPackageStoreQuery> .ColumnDelimiter; int packageIdColumnWidth = LocalizableStrings.PackageIdColumn.Length; int versionColumnWidth = LocalizableStrings.VersionColumn.Length; int commandsColumnWidth = LocalizableStrings.CommandsColumn.Length; foreach (var package in packages) { packageIdColumnWidth = Math.Max(packageIdColumnWidth, package.Id.ToString().Length); versionColumnWidth = Math.Max(versionColumnWidth, package.Version.ToNormalizedString().Length); commandsColumnWidth = Math.Max(commandsColumnWidth, GetCommandsString(package).Length); } yield return(string.Format( "{0}{1}{2}{3}{4}", LocalizableStrings.PackageIdColumn.PadRight(packageIdColumnWidth), columnDelimiter, LocalizableStrings.VersionColumn.PadRight(versionColumnWidth), columnDelimiter, LocalizableStrings.CommandsColumn.PadRight(commandsColumnWidth))); yield return(new string( '-', packageIdColumnWidth + versionColumnWidth + commandsColumnWidth + (columnDelimiter.Length * 2))); foreach (var package in packages) { yield return(string.Format( "{0}{1}{2}{3}{4}", package.Id.ToString().PadRight(packageIdColumnWidth), columnDelimiter, package.Version.ToNormalizedString().PadRight(versionColumnWidth), columnDelimiter, GetCommandsString(package).PadRight(commandsColumnWidth))); } }
private IToolPackage GetOldPackage(IToolPackageStoreQuery toolPackageStoreQuery) { IToolPackage oldPackageNullable; try { oldPackageNullable = toolPackageStoreQuery.EnumeratePackageVersions(_packageId).SingleOrDefault(); } catch (InvalidOperationException) { throw new GracefulException( messages: new[] { string.Format( LocalizableStrings.ToolHasMultipleVersionsInstalled, _packageId), }, isUserError: false); } return(oldPackageNullable); }
private static void AssertPackageInstall( BufferedReporter reporter, IFileSystem fileSystem, IToolPackage package, IToolPackageStore store, IToolPackageStoreQuery storeQuery) { reporter.Lines.Should().BeEmpty(); package.Id.Should().Be(TestPackageId); package.Version.ToNormalizedString().Should().Be(TestPackageVersion); package.PackageDirectory.Value.Should().Contain(store.Root.Value); storeQuery.EnumeratePackageVersions(TestPackageId) .Select(p => p.Version.ToNormalizedString()) .Should() .Equal(TestPackageVersion); package.Commands.Count.Should().Be(1); fileSystem.File.Exists(package.Commands[0].Executable.Value).Should() .BeTrue($"{package.Commands[0].Executable.Value} should exist"); package.Commands[0].Executable.Value.Should().Contain(store.Root.Value); }