Example #1
0
        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 });
        }
Example #2
0
        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}");
        }
Example #3
0
 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));
 }
Example #4
0
        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));
        }
Example #5
0
        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));
        }
Example #6
0
        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)));
            }
        }
Example #7
0
        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);
        }