public void GivenPathNotSetItAddsToEnvironment() { var reporter = new BufferedReporter(); var toolsPath = new BashPathUnderHomeDirectory("/home/user", ".dotnet/tools"); var pathValue = @"/usr/bin"; var provider = new Mock <IEnvironmentProvider>(MockBehavior.Strict); IFileSystem fileSystem = new FileSystemMockBuilder().Build(); fileSystem.Directory.CreateDirectory("/etc/profile.d"); provider .Setup(p => p.GetEnvironmentVariable("PATH")) .Returns(pathValue); var environmentPath = new LinuxEnvironmentPath( toolsPath, reporter, provider.Object, fileSystem.File); environmentPath.AddPackageExecutablePathToUserPath(); reporter.Lines.Should().BeEmpty(); fileSystem .File .ReadAllText(LinuxEnvironmentPath.DotnetCliToolsProfilePath) .Should() .Be($"export PATH=\"$PATH:{toolsPath.PathWithDollar}\""); }
public void GivenPathSetItDoesNotAddPathToEnvironment() { var reporter = new BufferedReporter(); var toolsPath = new BashPathUnderHomeDirectory("/home/user", ".dotnet/tools"); var pathValue = @"/usr/bin"; var provider = new Mock <IEnvironmentProvider>(MockBehavior.Strict); var fileSystem = new FileSystemMockBuilder().Build().File; provider .Setup(p => p.GetEnvironmentVariable("PATH")) .Returns(pathValue + ":" + toolsPath.Path); var environmentPath = new LinuxEnvironmentPath( toolsPath, reporter, provider.Object, fileSystem); environmentPath.AddPackageExecutablePathToUserPath(); reporter.Lines.Should().BeEmpty(); fileSystem .Exists(LinuxEnvironmentPath.DotnetCliToolsProfilePath) .Should() .Be(false); }
public void GivenPathSetItPrintsInstruction(string toolsDirectoryOnPath) { BufferedReporter reporter = new BufferedReporter(); BashPathUnderHomeDirectory toolsPath = new BashPathUnderHomeDirectory( "/home/user", ".dotnet/tools"); string pathValue = @"/usr/bin"; Mock <IEnvironmentProvider> provider = new Mock <IEnvironmentProvider>(MockBehavior.Strict); provider .Setup(p => p.GetEnvironmentVariable("PATH")) .Returns(pathValue + ":" + toolsDirectoryOnPath); provider .Setup(p => p.GetEnvironmentVariable("SHELL")) .Returns("/bin/zsh"); OsxZshEnvironmentPathInstruction environmentPath = new OsxZshEnvironmentPathInstruction( toolsPath, reporter, provider.Object); environmentPath.PrintAddPathInstructionIfPathDoesNotExist(); reporter.Lines.Should().Equal( string.Format( CommonLocalizableStrings.EnvironmentPathOSXZshManualInstructions, toolsPath.Path)); }
public OsxZshEnvironmentPathInstruction( BashPathUnderHomeDirectory executablePath, IReporter reporter, IEnvironmentProvider environmentProvider ) { _packageExecutablePath = executablePath; _environmentProvider = environmentProvider ?? throw new ArgumentNullException(nameof(environmentProvider)); _reporter = reporter ?? throw new ArgumentNullException(nameof(reporter)); }
internal LinuxEnvironmentPath( BashPathUnderHomeDirectory packageExecutablePath, IReporter reporter, IEnvironmentProvider environmentProvider, IFile fileSystem) { _fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); _environmentProvider = environmentProvider ?? throw new ArgumentNullException(nameof(environmentProvider)); _reporter = reporter ?? throw new ArgumentNullException(nameof(reporter)); _packageExecutablePath = packageExecutablePath; }
public void GivenPathSetItPrintsNothing(string toolsDiretoryOnPath) { var reporter = new BufferedReporter(); var toolsPath = new BashPathUnderHomeDirectory("/home/user", ".dotnet/tools"); var pathValue = @"/usr/bin"; var provider = new Mock <IEnvironmentProvider>(MockBehavior.Strict); provider .Setup(p => p.GetEnvironmentVariable("PATH")) .Returns(pathValue + ":" + toolsDiretoryOnPath); var environmentPath = new LinuxEnvironmentPath( toolsPath, reporter, provider.Object, FileSystemMockBuilder.Empty.File); environmentPath.PrintAddPathInstructionIfPathDoesNotExist(); reporter.Lines.Should().BeEmpty(); }
public void GivenPathNotSetAndProfileExistsItPrintsLogoutMessage() { var reporter = new BufferedReporter(); var toolsPath = new BashPathUnderHomeDirectory("/home/user", ".dotnet/tools"); var pathValue = @"/usr/bin"; var provider = new Mock <IEnvironmentProvider>(MockBehavior.Strict); provider .Setup(p => p.GetEnvironmentVariable("PATH")) .Returns(pathValue); var environmentPath = new LinuxEnvironmentPath( toolsPath, reporter, provider.Object, new FileSystemMockBuilder() .AddFile(LinuxEnvironmentPath.DotnetCliToolsProfilePath, "") .Build() .File); environmentPath.PrintAddPathInstructionIfPathDoesNotExist(); reporter.Lines.Should().Equal(CommonLocalizableStrings.EnvironmentPathLinuxNeedLogout); }
public void GivenPathNotSetItPrintsManualInstructions() { var reporter = new BufferedReporter(); var toolsPath = new BashPathUnderHomeDirectory("/home/user", ".dotnet/tools"); var pathValue = @"/usr/bin"; var provider = new Mock <IEnvironmentProvider>(MockBehavior.Strict); provider .Setup(p => p.GetEnvironmentVariable("PATH")) .Returns(pathValue); var environmentPath = new LinuxEnvironmentPath( toolsPath, reporter, provider.Object, FileSystemMockBuilder.Empty.File); environmentPath.PrintAddPathInstructionIfPathDoesNotExist(); reporter.Lines.Should().Equal( string.Format( CommonLocalizableStrings.EnvironmentPathLinuxManualInstructions, toolsPath.Path)); }