コード例 #1
0
        public void WhenRunWithPackageIdWithSourceItShouldCreateValidShim()
        {
            const string  sourcePath     = "http://mysouce.com";
            ParseResult   result         = Parser.Instance.Parse($"dotnet install tool -g {PackageId} --source {sourcePath}");
            AppliedOption appliedCommand = result["dotnet"]["install"]["tool"];
            ParseResult   parseResult    =
                Parser.Instance.ParseFrom("dotnet install", new[] { "tool", PackageId, "--source", sourcePath });

            var installToolCommand = new InstallToolCommand(appliedCommand,
                                                            parseResult,
                                                            new ToolPackageObtainerMock(_fileSystemWrapper, additionalFeeds: new List <MockFeed>
            {
                new MockFeed
                {
                    Type     = MockFeedType.Source,
                    Uri      = sourcePath,
                    Packages = new List <MockFeedPackage>
                    {
                        new MockFeedPackage
                        {
                            PackageId = PackageId,
                            Version   = "1.0.4"
                        }
                    }
                }
            }),
                                                            _shellShimMakerMock,
                                                            _environmentPathInstructionMock);

            installToolCommand.Execute().Should().Be(0);

            // It is hard to simulate shell behavior. Only Assert shim can point to executable dll
            _fileSystemWrapper.File.Exists(ExpectedCommandPath())
            .Should().BeTrue();
            ShellShimMakerMock.FakeShim deserializedFakeShim =
                JsonConvert.DeserializeObject <ShellShimMakerMock.FakeShim>(
                    _fileSystemWrapper.File.ReadAllText(ExpectedCommandPath()));
            _fileSystemWrapper.File.Exists(deserializedFakeShim.ExecutablePath).Should().BeTrue();
        }
コード例 #2
0
        public void WhenRunWithPackageIdItShouldShowSuccessMessage()
        {
            var installToolCommand = new InstallToolCommand(
                _appliedCommand,
                _parseResult,
                _toolPackageStore,
                CreateToolPackageInstaller(),
                _shellShimRepositoryMock,
                new EnvironmentPathInstructionMock(_reporter, PathToPlaceShim, true),
                _reporter);

            installToolCommand.Execute().Should().Be(0);

            _reporter
            .Lines
            .Should()
            .Equal(string.Format(
                       LocalizableStrings.InstallationSucceeded,
                       ProjectRestorerMock.FakeCommandName,
                       PackageId,
                       PackageVersion).Green());
        }
コード例 #3
0
        public void WhenRunWithoutAMatchingRangeItShouldFail()
        {
            ParseResult   result         = Parser.Instance.Parse($"dotnet install tool -g {PackageId} --version [5.0,10.0]");
            AppliedOption appliedCommand = result["dotnet"]["install"]["tool"];

            var installToolCommand = new InstallToolCommand(
                appliedCommand,
                result,
                _createToolPackageStoreAndInstaller,
                _createShellShimRepository,
                new EnvironmentPathInstructionMock(_reporter, PathToPlaceShim, true),
                _reporter);

            installToolCommand.Execute().Should().Be(1);

            _reporter
            .Lines
            .Should()
            .Equal(
                $"Error: failed to restore package {PackageId}.",     // From mock implementation, not localized
                LocalizableStrings.ToolInstallationRestoreFailed.Red(),
                string.Format(LocalizableStrings.ToolInstallationFailed, PackageId).Red());
        }
コード例 #4
0
        public void WhenRunWithInvalidVersionItShouldThrow()
        {
            const string  invalidVersion = "!NotValidVersion!";
            ParseResult   result         = Parser.Instance.Parse($"dotnet install tool -g {PackageId} --version {invalidVersion}");
            AppliedOption appliedCommand = result["dotnet"]["install"]["tool"];

            var installToolCommand = new InstallToolCommand(
                appliedCommand,
                result,
                _toolPackageStore,
                CreateToolPackageInstaller(),
                _shellShimRepositoryMock,
                new EnvironmentPathInstructionMock(_reporter, PathToPlaceShim, true),
                _reporter);

            Action action = () => installToolCommand.Execute();

            action
            .ShouldThrow <GracefulException>()
            .WithMessage(string.Format(
                             LocalizableStrings.InvalidNuGetVersionRange,
                             invalidVersion));
        }
コード例 #5
0
        public void WhenRunWithValidVersionWildcardItShouldSucceed()
        {
            ParseResult   result         = Parser.Instance.Parse($"dotnet install tool -g {PackageId} --version 1.0.*");
            AppliedOption appliedCommand = result["dotnet"]["install"]["tool"];

            var installToolCommand = new InstallToolCommand(
                appliedCommand,
                result,
                _createToolPackageStoreAndInstaller,
                _createShellShimRepository,
                new EnvironmentPathInstructionMock(_reporter, PathToPlaceShim, true),
                _reporter);

            installToolCommand.Execute().Should().Be(0);

            _reporter
            .Lines
            .Should()
            .Equal(string.Format(
                       LocalizableStrings.InstallationSucceeded,
                       ProjectRestorerMock.FakeCommandName,
                       PackageId,
                       PackageVersion).Green());
        }
コード例 #6
0
        public void GivenCreateShimItShouldHaveNoBrokenFolderOnDisk()
        {
            _fileSystem.File.CreateEmptyFile(ExpectedCommandPath()); // Create conflict shim

            var installToolCommand = new InstallToolCommand(
                _appliedCommand,
                _parseResult,
                _createToolPackageStoreAndInstaller,
                _createShellShimRepository,
                _environmentPathInstructionMock,
                _reporter);

            installToolCommand.Execute().Should().Be(1);

            _reporter
            .Lines[0]
            .Should()
            .Contain(
                string.Format(
                    CommonLocalizableStrings.ShellShimConflict,
                    ProjectRestorerMock.FakeCommandName));

            _fileSystem.Directory.Exists(Path.Combine(PathToPlacePackages, PackageId)).Should().BeFalse();
        }