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(); }
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()); }
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()); }
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)); }
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()); }
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(); }