Exemple #1
0
 public ToolUpdateCommandTests()
 {
     _reporter   = new BufferedReporter();
     _fileSystem = new FileSystemMockBuilder().Build();
     _environmentPathInstructionMock = new EnvironmentPathInstructionMock(_reporter, ShimsDirectory);
     _store     = new ToolPackageStoreMock(new DirectoryPath(ToolsDirectory), _fileSystem);
     _mockFeeds = new List <MockFeed>
     {
         new MockFeed
         {
             Type     = MockFeedType.FeedFromLookUpNugetConfig,
             Packages = new List <MockFeedPackage>
             {
                 new MockFeedPackage
                 {
                     PackageId = _packageId.ToString(),
                     Version   = LowerPackageVersion
                 },
                 new MockFeedPackage
                 {
                     PackageId = _packageId.ToString(),
                     Version   = HigherPackageVersion
                 }
             }
         }
     };
 }
Exemple #2
0
        public void GivenARootWithNonAsciiCharactorInstallSucceeds()
        {
            var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed();

            var    surrogate = char.ConvertFromUtf32(int.Parse("2A601", NumberStyles.HexNumber));
            string nonAscii  = "ab Ṱ̺̺̕o 田中さん åä," + surrogate;

            var root       = new DirectoryPath(Path.Combine(TempRoot.Root, nonAscii, Path.GetRandomFileName()));
            var reporter   = new BufferedReporter();
            var fileSystem = new FileSystemWrapper();
            var store      = new ToolPackageStore(root);
            var installer  = new ToolPackageInstaller(
                store: store,
                projectRestorer: new ProjectRestorer(reporter),
                tempProject: GetUniqueTempProjectPathEachTest(),
                offlineFeed: new DirectoryPath("does not exist"));

            var package = installer.InstallPackage(new PackageLocation(nugetConfig: nugetConfigPath),
                                                   packageId: TestPackageId,
                                                   versionRange: VersionRange.Parse(TestPackageVersion),
                                                   targetFramework: _testTargetframework);

            AssertPackageInstall(reporter, fileSystem, package, store);

            package.Uninstall();
        }
                 ) Setup(
            bool useMock,
            List <MockFeed> feeds                   = null,
            FilePath?tempProject                    = null,
            DirectoryPath?offlineFeed               = null,
            FilePath?writeLocalFeedToNugetConfig    = null,
            [CallerMemberName] string callingMethod = "",
            string identiifer = null)
        {
            var root     = new DirectoryPath(_testAssetsManager.CreateTestDirectory(callingMethod, identifier: useMock.ToString() + identiifer).Path);
            var reporter = new BufferedReporter();

            IFileSystem             fileSystem;
            IToolPackageStore       store;
            IToolPackageStoreQuery  storeQuery;
            IToolPackageInstaller   installer;
            IToolPackageUninstaller uninstaller;

            if (useMock)
            {
                fileSystem = new FileSystemMockBuilder().Build();
                var frameworksMap = new Dictionary <PackageId, IEnumerable <NuGetFramework> >()
                {
                    { TestPackageId, TestFrameworks }
                };
                WriteNugetConfigFileToPointToTheFeed(fileSystem, writeLocalFeedToNugetConfig);
                var toolPackageStoreMock = new ToolPackageStoreMock(root, fileSystem, frameworksMap);
                store      = toolPackageStoreMock;
                storeQuery = toolPackageStoreMock;
                installer  = new ToolPackageInstallerMock(
                    fileSystem: fileSystem,
                    store: toolPackageStoreMock,
                    projectRestorer: new ProjectRestorerMock(
                        fileSystem: fileSystem,
                        reporter: reporter,
                        feeds: feeds == null
                            ? GetMockFeedsForConfigFile(writeLocalFeedToNugetConfig)
                            : feeds.Concat(GetMockFeedsForConfigFile(writeLocalFeedToNugetConfig)).ToList()),
                    frameworksMap: frameworksMap);
                uninstaller = new ToolPackageUninstallerMock(fileSystem, toolPackageStoreMock);
            }
            else
            {
                fileSystem = new FileSystemWrapper();
                WriteNugetConfigFileToPointToTheFeed(fileSystem, writeLocalFeedToNugetConfig);
                var toolPackageStore = new ToolPackageStoreAndQuery(root);
                store      = toolPackageStore;
                storeQuery = toolPackageStore;
                installer  = new ToolPackageInstaller(
                    store: store,
                    projectRestorer: new Stage2ProjectRestorer(Log, reporter),
                    tempProject: tempProject ?? GetUniqueTempProjectPathEachTest(),
                    offlineFeed: offlineFeed ?? new DirectoryPath("does not exist"));
                uninstaller = new ToolPackageUninstaller(store);
            }

            store.Root.Value.Should().Be(Path.GetFullPath(root.Value));

            return(store, storeQuery, installer, uninstaller, reporter, fileSystem);
        }
Exemple #4
0
        public void GivenNuGetSignCommandItDisplaysCompletions()
        {
            var expected = new[] {
                "--certificate-fingerprint",
                "--certificate-path",
                "--certificate-store-name",
                "--certificate-store-location",
                "--certificate-subject-name",
                "--certificate-password",
                "--hash-algorithm",
                "--timestamper",
                "--timestamp-hash-algorithm",
                "--verbosity",
                "--output",
                "--overwrite",
                "-o",
                "--help",
                "-v",
                "-?",
                "-h",
                "/?",
                "/h"
            };

            var reporter = new BufferedReporter();

            CompleteCommand.RunWithReporter(new[] { "dotnet nuget sign " }, reporter).Should().Be(0);
            reporter.Lines.OrderBy(c => c).Should().Equal(expected.OrderBy(c => c));
        }
Exemple #5
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}");
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        public void GivenNuGetPushCommandItDisplaysCompletions()
        {
            var expected = new[] {
                "--api-key",
                "--disable-buffering",
                "--force-english-output",
                "--help",
                "--no-service-endpoint",
                "--no-symbols",
                "--skip-duplicate",
                "--source",
                "--symbol-api-key",
                "--symbol-source",
                "--timeout",
                "--interactive",
                "-?",
                "-d",
                "-h",
                "-k",
                "-n",
                "-s",
                "-sk",
                "-ss",
                "-t",
                "/?",
                "/h",
            };

            var reporter = new BufferedReporter();

            CompleteCommand.RunWithReporter(new[] { "dotnet nuget push " }, reporter).Should().Be(0);
            reporter.Lines.OrderBy(c => c).Should().Equal(expected.OrderBy(c => c));
        }
Exemple #8
0
        public void GivenOfflineFeedWhenCallItCanDownloadThePackage()
        {
            var reporter  = new BufferedReporter();
            var toolsPath = Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName());

            ToolPackageObtainer packageObtainer =
                new ToolPackageObtainer(
                    toolsPath: new DirectoryPath(toolsPath),
                    offlineFeedPath: new DirectoryPath(GetTestLocalFeedPath()),
                    getTempProjectPath: GetUniqueTempProjectPathEachTest,
                    bundledTargetFrameworkMoniker: new Lazy <string>(),
                    projectRestorer: new ProjectRestorer(reporter));

            ToolConfigurationAndExecutablePath toolConfigurationAndExecutablePath = packageObtainer.ObtainAndReturnExecutablePath(
                packageId: TestPackageId,
                packageVersion: TestPackageVersion,
                targetframework: _testTargetframework);

            reporter.Lines.Should().BeEmpty();

            var executable = toolConfigurationAndExecutablePath
                             .Executable;

            File.Exists(executable.Value)
            .Should()
            .BeTrue(executable + " should have the executable");

            executable.Value.Should().NotContain(GetTestLocalFeedPath(), "Executable should not be still in fallbackfolder");
            executable.Value.Should().Contain(toolsPath, "Executable should be copied to tools Path");

            File.Delete(executable.Value);
        }
Exemple #9
0
        public void GivenAllButNoPackageVersionAndInvokeTwiceInTransactionItShouldRollback(bool testMockBehaviorIsInSync)
        {
            var reporter        = new BufferedReporter();
            var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed();
            var toolsPath       = Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName());

            var packageObtainer =
                ConstructDefaultPackageObtainer(toolsPath, reporter, testMockBehaviorIsInSync, nugetConfigPath.Value);

            packageObtainer.ObtainAndReturnExecutablePath(
                packageId: TestPackageId,
                nugetconfig: nugetConfigPath,
                targetframework: _testTargetframework);

            reporter.Lines.Should().BeEmpty();

            Action secondCall = () => packageObtainer.ObtainAndReturnExecutablePath(
                packageId: TestPackageId,
                nugetconfig: nugetConfigPath,
                targetframework: _testTargetframework);

            reporter.Lines.Should().BeEmpty();

            secondCall.ShouldThrow <PackageObtainException>();

            Directory.Exists(Path.Combine(toolsPath, TestPackageId))
            .Should().BeTrue("The result of first one is still here");

            Directory.GetDirectories(Path.Combine(toolsPath, ".stage"))
            .Should().BeEmpty("nothing in stage folder, already rolled back");
        }
Exemple #10
0
        public void GiveSucessRestoreButFailedOnNextStepItCanRollBack(bool testMockBehaviorIsInSync)
        {
            FilePath nugetConfigPath = WriteNugetConfigFileToPointToTheFeed();
            var      toolsPath       = Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName());
            var      reporter        = new BufferedReporter();
            var      packageObtainer = ConstructDefaultPackageObtainer(toolsPath, reporter, testMockBehaviorIsInSync);

            void FailedStepAfterSuccessRestore() => throw new GracefulException("simulated error");

            try
            {
                using (var t = new TransactionScope())
                {
                    ToolConfigurationAndExecutablePath obtainAndReturnExecutablePathtransactional
                        = packageObtainer.ObtainAndReturnExecutablePath(
                              packageId: TestPackageId,
                              packageVersion: TestPackageVersion,
                              targetframework: _testTargetframework);

                    FailedStepAfterSuccessRestore();
                    t.Complete();
                }
            }
            catch (GracefulException)
            {
                // catch the simulated error
            }

            AssertRollBack(toolsPath);
        }
Exemple #11
0
        public void GivenAllButNoPackageVersionAndInvokeTwiceItShouldNotThrow(bool testMockBehaviorIsInSync)
        {
            var reporter        = new BufferedReporter();
            var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed();
            var toolsPath       = Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName());

            var packageObtainer =
                ConstructDefaultPackageObtainer(toolsPath, reporter, testMockBehaviorIsInSync, nugetConfigPath.Value);

            try
            {
                using (var t = new TransactionScope())
                {
                    packageObtainer.ObtainAndReturnExecutablePath(
                        packageId: TestPackageId,
                        packageVersion: TestPackageVersion,
                        targetframework: _testTargetframework);

                    packageObtainer.ObtainAndReturnExecutablePath(
                        packageId: TestPackageId,
                        packageVersion: TestPackageVersion,
                        targetframework: _testTargetframework);

                    t.Complete();
                }
            }
            catch (PackageObtainException)
            {
                // catch the simulated error
            }

            AssertRollBack(toolsPath);
        }
Exemple #12
0
        public void GivenFailedRestoreItCanRollBack(bool testMockBehaviorIsInSync)
        {
            var toolsPath = Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName());

            var reporter        = new BufferedReporter();
            var packageObtainer = ConstructDefaultPackageObtainer(toolsPath, reporter, testMockBehaviorIsInSync);

            try
            {
                using (var t = new TransactionScope())
                {
                    packageObtainer.ObtainAndReturnExecutablePath(
                        packageId: "non exist package id",
                        packageVersion: TestPackageVersion,
                        targetframework: _testTargetframework);

                    t.Complete();
                }
            }
            catch (PackageObtainException)
            {
                // catch the intent error
            }

            AssertRollBack(toolsPath);
        }
Exemple #13
0
        public void GivenASourceItCanObtainThePackageFromThatSource(bool testMockBehaviorIsInSync)
        {
            var reporter  = new BufferedReporter();
            var toolsPath = Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName());

            var packageObtainer = ConstructDefaultPackageObtainer(
                toolsPath,
                reporter,
                testMockBehaviorIsInSync: testMockBehaviorIsInSync,
                addSourceFeedWithFilePath: GetTestLocalFeedPath());
            ToolConfigurationAndExecutablePath toolConfigurationAndExecutablePath =
                packageObtainer.ObtainAndReturnExecutablePath(
                    packageId: TestPackageId,
                    packageVersion: TestPackageVersion,
                    targetframework: _testTargetframework,
                    source: GetTestLocalFeedPath());

            reporter.Lines.Should().BeEmpty();

            var executable = toolConfigurationAndExecutablePath.Executable;

            File.Exists(executable.Value)
            .Should()
            .BeTrue(executable + " should have the executable");

            File.Delete(executable.Value);
        }
Exemple #14
0
        public void GivenNonExistentNugetConfigFileItThrows(bool testMockBehaviorIsInSync)
        {
            var reporter  = new BufferedReporter();
            var toolsPath = Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName());

            var packageObtainer =
                ConstructDefaultPackageObtainer(toolsPath, reporter, testMockBehaviorIsInSync);

            var    nonExistNugetConfigFile = new FilePath("NonExistent.file");
            Action a = () =>
            {
                ToolConfigurationAndExecutablePath toolConfigurationAndExecutablePath =
                    packageObtainer.ObtainAndReturnExecutablePath(
                        packageId: TestPackageId,
                        packageVersion: TestPackageVersion,
                        nugetconfig: nonExistNugetConfigFile,
                        targetframework: _testTargetframework);
            };

            a.ShouldThrow <PackageObtainException>()
            .And
            .Message.Should().Contain(string.Format(
                                          CommonLocalizableStrings.NuGetConfigurationFileDoesNotExist,
                                          Path.GetFullPath(nonExistNugetConfigFile.Value)));

            reporter.Lines.Should().BeEmpty();
        }
Exemple #15
0
        public void GivenNewCommandItDisplaysCompletions()
        {
            var expected = new[] {
                "--dry-run",
                "--force",
                "--help",
                "--install",
                "--language",
                "--list",
                "--name",
                "--nuget-source",
                "--output",
                "--type",
                "--uninstall",
                "-h",
                "-i",
                "-l",
                "-lang",
                "-n",
                "-o",
                "-u"
            };

            var reporter = new BufferedReporter();

            CompleteCommand.RunWithReporter(new[] { "dotnet new " }, reporter).Should().Be(0);
            reporter.Lines.Should().Equal(expected.OrderBy(c => c));
        }
Exemple #16
0
        public void GivenNugetConfigAndPackageNameAndVersionAndTargetFrameworkWhenCallItCanDownloadThePackage(
            bool testMockBehaviorIsInSync)
        {
            var      reporter        = new BufferedReporter();
            FilePath nugetConfigPath = WriteNugetConfigFileToPointToTheFeed();
            var      toolsPath       = Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName());

            var packageObtainer =
                ConstructDefaultPackageObtainer(toolsPath, reporter, testMockBehaviorIsInSync, nugetConfigPath.Value);

            ToolConfigurationAndExecutablePath toolConfigurationAndExecutablePath
                = packageObtainer.ObtainAndReturnExecutablePath(
                      packageId: TestPackageId,
                      packageVersion: TestPackageVersion,
                      nugetconfig: nugetConfigPath,
                      targetframework: _testTargetframework);

            reporter.Lines.Should().BeEmpty();

            FilePath executable = toolConfigurationAndExecutablePath.Executable;

            File.Exists(executable.Value)
            .Should()
            .BeTrue(executable + " should have the executable");

            File.Delete(executable.Value);
        }
Exemple #17
0
        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}\"");
        }
Exemple #18
0
        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));
        }
Exemple #19
0
        public void GivenNuGetLocalsCommandItDisplaysCompletions()
        {
            var expected = new[] {
                "--clear",
                "--force-english-output",
                "--help",
                "--list",
                "-?",
                "-c",
                "-h",
                "-l",
                "/?",
                "/h",
                "all",
                "global-packages",
                "http-cache",
                "temp",
                "plugins-cache"
            };

            var reporter = new BufferedReporter();

            CompleteCommand.RunWithReporter(new[] { "dotnet nuget locals " }, reporter).Should().Be(0);
            reporter.Lines.OrderBy(c => c).Should().Equal(expected.OrderBy(c => c));
        }
Exemple #20
0
 public UninstallToolCommandTests()
 {
     _reporter   = new BufferedReporter();
     _fileSystem = new FileSystemMockBuilder().Build();
     _shellShimRepositoryMock        = new ShellShimRepositoryMock(new DirectoryPath(ShimsDirectory), _fileSystem);
     _environmentPathInstructionMock = new EnvironmentPathInstructionMock(_reporter, ShimsDirectory);
 }
Exemple #21
0
        public void GivenNuGetTrustCommandItDisplaysCompletions()
        {
            var expected = new[] {
                "--algorithm",
                "--allow-untrusted-root",
                "--configfile",
                "--owners",
                "--verbosity",
                "--help",
                "-v",
                "-?",
                "-h",
                "/?",
                "/h",
                "author",
                "certificate",
                "list",
                "remove",
                "repository",
                "source",
                "sync"
            };

            var reporter = new BufferedReporter();

            CompleteCommand.RunWithReporter(new[] { "dotnet nuget trust " }, reporter).Should().Be(0);
            reporter.Lines.OrderBy(c => c).Should().Equal(expected.OrderBy(c => c));
        }
Exemple #22
0
        public void GivenNewCommandItDisplaysCompletions()
        {
            var expected = new[] {
                "--columns",
                "--dry-run",
                "--force",
                "--help",
                "--install",
                "--language",
                "--list",
                "--interactive",
                "--name",
                "--nuget-source",
                "--output",
                "--type",
                "--uninstall",
                "-?",
                "-h",
                "-i",
                "-l",
                "-lang",
                "-n",
                "-o",
                "-u",
                "/?",
                "/h",
                "--update-check",
                "--update-apply"
            };

            var reporter = new BufferedReporter();

            CompleteCommand.RunWithReporter(new[] { "dotnet new " }, reporter).Should().Be(0);
            reporter.Lines.OrderBy(c => c).Should().Contain(expected.OrderBy(c => c));
        }
Exemple #23
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 });
        }
        public void GivenARootWithNonAsciiCharacterInstallSucceeds()
        {
            var nugetConfigPath = GenerateRandomNugetConfigFilePath();

            var    surrogate = char.ConvertFromUtf32(int.Parse("2A601", NumberStyles.HexNumber));
            string nonAscii  = "ab Ṱ̺̺̕o 田中さん åä," + surrogate;

            var root       = _testAssetsManager.CreateTestDirectory(testName: nonAscii, identifier: "root");
            var reporter   = new BufferedReporter();
            var fileSystem = new FileSystemWrapper();
            var store      = new ToolPackageStoreAndQuery(new DirectoryPath(root.Path));

            WriteNugetConfigFileToPointToTheFeed(fileSystem, nugetConfigPath);
            var installer = new ToolPackageInstaller(
                store: store,
                projectRestorer: new Stage2ProjectRestorer(Log, reporter),
                tempProject: GetUniqueTempProjectPathEachTest(),
                offlineFeed: new DirectoryPath("does not exist"));

            var package = installer.InstallPackage(new PackageLocation(nugetConfig: nugetConfigPath),
                                                   packageId: TestPackageId,
                                                   versionRange: VersionRange.Parse(TestPackageVersion),
                                                   targetFramework: _testTargetframework);

            AssertPackageInstall(reporter, fileSystem, package, store, store);

            new ToolPackageUninstaller(store).Uninstall(package.PackageDirectory);
        }
Exemple #25
0
 public GivenDotnetWorkloadList(ITestOutputHelper log) : base(log)
 {
     _reporter = new BufferedReporter();
     _machineReadableParseResult = Parser.Instance.Parse("dotnet workload list --machine-readable");
     _parseResult  = Parser.Instance.Parse("dotnet workload list");
     _manifestPath = Path.Combine(_testAssetsManager.GetAndValidateTestProjectDirectory("SampleManifest"), "MockListSample.json");
 }
Exemple #26
0
        public ToolUpdateCommandTests()
        {
            _reporter   = new BufferedReporter();
            _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build();
            var tempDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath;

            _shimsDirectory = Path.Combine(tempDirectory, "shims");
            _toolsDirectory = Path.Combine(tempDirectory, "tools");
            _environmentPathInstructionMock = new EnvironmentPathInstructionMock(_reporter, _shimsDirectory);
            _store     = new ToolPackageStoreMock(new DirectoryPath(_toolsDirectory), _fileSystem);
            _mockFeeds = new List <MockFeed>
            {
                new MockFeed
                {
                    Type     = MockFeedType.FeedFromGlobalNugetConfig,
                    Packages = new List <MockFeedPackage>
                    {
                        new MockFeedPackage
                        {
                            PackageId       = _packageId.ToString(),
                            Version         = LowerPackageVersion,
                            ToolCommandName = "SimulatorCommand"
                        },
                        new MockFeedPackage
                        {
                            PackageId       = _packageId.ToString(),
                            Version         = HigherPackageVersion,
                            ToolCommandName = "SimulatorCommand"
                        }
                    }
                }
            };
        }
        public ToolRestoreCommandWithMultipleNugetConfigTests()
        {
            _packageVersionA = NuGetVersion.Parse("1.0.4");
            _packageVersionB = NuGetVersion.Parse("1.0.4");

            _reporter   = new BufferedReporter();
            _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build();
            _nugetGlobalPackagesFolder = new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation());
            string temporaryDirectory = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath;

            string pathToPlacePackages = Path.Combine(temporaryDirectory, "pathToPlacePackage");
            ToolPackageStoreMock toolPackageStoreMock =
                new ToolPackageStoreMock(new DirectoryPath(pathToPlacePackages), _fileSystem);

            SetupFileLayoutAndFeed(temporaryDirectory, toolPackageStoreMock);

            ParseResult result = Parser.Instance.Parse("dotnet tool restore");

            _appliedCommand = result["dotnet"]["tool"]["restore"];
            Cli.CommandLine.Parser parser = Parser.Instance;
            _parseResult = parser.ParseFrom("dotnet tool", new[] { "restore" });

            _localToolsResolverCache
                = new LocalToolsResolverCache(
                      _fileSystem,
                      new DirectoryPath(Path.Combine(temporaryDirectory, "cache")),
                      1);
        }
        public void GivenPathNotSetInProcessItPrintsReopenNotice()
        {
            var reporter  = new BufferedReporter();
            var toolsPath = @"C:\Tools";
            var pathValue = @"C:\Other";
            var provider  = new Mock <IEnvironmentProvider>(MockBehavior.Strict);

            provider
            .Setup(p => p.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Process))
            .Returns(pathValue);

            provider
            .Setup(p => p.GetEnvironmentVariable(
                       "PATH",
                       It.Is <EnvironmentVariableTarget>(t =>
                                                         t == EnvironmentVariableTarget.User ||
                                                         t == EnvironmentVariableTarget.Machine)))
            .Returns(pathValue + ";" + toolsPath);

            var environmentPath = new WindowsEnvironmentPath(toolsPath, reporter, provider.Object);

            environmentPath.PrintAddPathInstructionIfPathDoesNotExist();

            reporter.Lines.Should().Equal(CommonLocalizableStrings.EnvironmentPathWindowsNeedReopen);
        }
        public void GivenSecurityExceptionItPrintsWarning()
        {
            var reporter  = new BufferedReporter();
            var toolsPath = @"C:\Tools";
            var pathValue = @"C:\Other";
            var provider  = new Mock <IEnvironmentProvider>(MockBehavior.Strict);

            provider
            .Setup(p => p.GetEnvironmentVariable(
                       "PATH",
                       It.Is <EnvironmentVariableTarget>(t =>
                                                         t == EnvironmentVariableTarget.Process ||
                                                         t == EnvironmentVariableTarget.User ||
                                                         t == EnvironmentVariableTarget.Machine)))
            .Returns(pathValue);
            provider
            .Setup(p => p.SetEnvironmentVariable("PATH", pathValue + ";" + toolsPath, EnvironmentVariableTarget.User))
            .Throws(new System.Security.SecurityException());

            var environmentPath = new WindowsEnvironmentPath(toolsPath, reporter, provider.Object);

            environmentPath.AddPackageExecutablePathToUserPath();

            reporter.Lines.Should().Equal(
                string.Format(
                    CommonLocalizableStrings.FailedToSetToolsPathEnvironmentVariable,
                    toolsPath).Yellow());
        }
Exemple #30
0
        public ToolInstallLocalCommandTests()
        {
            _packageVersionA = NuGetVersion.Parse("1.0.4");

            _reporter   = new BufferedReporter();
            _fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build();
            _nugetGlobalPackagesFolder = new DirectoryPath(NuGetGlobalPackagesFolder.GetLocation());
            _temporaryDirectory        = _fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath;
            _pathToPlacePackages       = Path.Combine(_temporaryDirectory, "pathToPlacePackage");
            ToolPackageStoreMock toolPackageStoreMock =
                new ToolPackageStoreMock(new DirectoryPath(_pathToPlacePackages), _fileSystem);

            _toolPackageStore         = toolPackageStoreMock;
            _toolPackageInstallerMock = new ToolPackageInstallerMock(
                _fileSystem,
                _toolPackageStore,
                new ProjectRestorerMock(
                    _fileSystem,
                    _reporter,
                    new[]
            {
                new MockFeed
                {
                    Type     = MockFeedType.ImplicitAdditionalFeed,
                    Packages = new List <MockFeedPackage>
                    {
                        new MockFeedPackage
                        {
                            PackageId       = _packageIdA.ToString(),
                            Version         = _packageVersionA.ToNormalizedString(),
                            ToolCommandName = _toolCommandNameA.ToString()
                        }
                    }
                }
            }));

            _localToolsResolverCache
                = new LocalToolsResolverCache(
                      _fileSystem,
                      new DirectoryPath(Path.Combine(_temporaryDirectory, "cache")),
                      1);

            _manifestFilePath = Path.Combine(_temporaryDirectory, "dotnet-tools.json");
            _fileSystem.File.WriteAllText(Path.Combine(_temporaryDirectory, _manifestFilePath), _jsonContent);
            _toolManifestFinder = new ToolManifestFinder(new DirectoryPath(_temporaryDirectory), _fileSystem);
            _toolManifestEditor = new ToolManifestEditor(_fileSystem);

            ParseResult result = Parser.Instance.Parse($"dotnet tool install {_packageIdA.ToString()}");

            _appliedCommand = result["dotnet"]["tool"]["install"];
            Cli.CommandLine.Parser parser = Parser.Instance;
            _parseResult = parser.ParseFrom("dotnet tool", new[] { "install", _packageIdA.ToString() });

            _localToolsResolverCache
                = new LocalToolsResolverCache(
                      _fileSystem,
                      new DirectoryPath(Path.Combine(_temporaryDirectory, "cache")),
                      1);
        }