Ejemplo n.º 1
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}\"");
        }
Ejemplo n.º 2
0
        public void GivenASuccessfulShutdownItDoesNotThrow()
        {
            const int    ProcessId = 1234;
            const string PipeName  = "some-pipe-name";

            string pidDirectory = Path.GetFullPath("var/pids/build");
            string pidFilePath  = Path.Combine(pidDirectory, $"{RazorPidFile.FilePrefix}{ProcessId}");

            var fileSystemMock = new FileSystemMockBuilder()
                                 .AddFile(pidFilePath, "")
                                 .UseCurrentSystemTemporaryDirectory()
                                 .Build();

            fileSystemMock.File.Exists(pidFilePath).Should().BeTrue();

            var serverPath = Path.Combine(fileSystemMock.Directory.CreateTemporaryDirectory().DirectoryPath, "path/to/rzc.dll");

            var server = new RazorServer(
                pidFile: new RazorPidFile(
                    path: new FilePath(pidFilePath),
                    processId: ProcessId,
                    serverPath: new FilePath(serverPath),
                    pipeName: PipeName),
                commandFactory: CreateCommandFactoryMock(serverPath, PipeName).Object,
                fileSystem: fileSystemMock);

            server.Shutdown();

            fileSystemMock.File.Exists(pidFilePath).Should().BeFalse();
        }
Ejemplo n.º 3
0
        public GivenANuGetCachePrimer()
        {
            var fileSystemMockBuilder = FileSystemMockBuilder.Create();

            fileSystemMockBuilder.TemporaryFolder = TEMPORARY_FOLDER_PATH;
            fileSystemMockBuilder.AddFile(COMPRESSED_ARCHIVE_PATH);
            _fileSystemMock         = fileSystemMockBuilder.Build();
            _temporaryDirectoryMock = (ITemporaryDirectoryMock)_fileSystemMock.Directory.CreateTemporaryDirectory();

            _commandFactoryMock = SetupCommandFactoryMock();

            _nugetPackagesArchiverMock = new Mock <INuGetPackagesArchiver>();
            _nugetPackagesArchiverMock.Setup(n => n.ExtractArchive()).Returns(PACKAGES_ARCHIVE_PATH);
            _nugetPackagesArchiverMock.Setup(n => n.NuGetPackagesArchive).Returns(COMPRESSED_ARCHIVE_PATH);

            _nugetCacheSentinel = new Mock <INuGetCacheSentinel>();

            var nugetCachePrimer = new NuGetCachePrimer(
                _commandFactoryMock.Object,
                _nugetPackagesArchiverMock.Object,
                _nugetCacheSentinel.Object,
                _fileSystemMock.Directory,
                _fileSystemMock.File);

            nugetCachePrimer.PrimeCache();
        }
Ejemplo n.º 4
0
        public void It_does_not_prime_the_NuGet_cache_if_the_archive_is_not_found_so_that_we_do_not_need_to_generate_the_archive_for_stage1()
        {
            var fileSystemMockBuilder = FileSystemMockBuilder.Create();
            var fileSystemMock        = fileSystemMockBuilder.Build();

            var commandFactoryMock = SetupCommandFactoryMock();

            var nugetPackagesArchiverMock = new Mock <INuGetPackagesArchiver>();

            nugetPackagesArchiverMock.Setup(n => n.NuGetPackagesArchive).Returns(COMPRESSED_ARCHIVE_PATH);

            var nugetCachePrimer = new NuGetCachePrimer(
                commandFactoryMock.Object,
                nugetPackagesArchiverMock.Object,
                _nugetCacheSentinel.Object,
                fileSystemMock.Directory,
                fileSystemMock.File);

            nugetCachePrimer.PrimeCache();

            nugetPackagesArchiverMock.Verify(n => n.ExtractArchive(), Times.Never);
            commandFactoryMock.Verify(c => c.Create(
                                          It.IsAny <string>(),
                                          It.IsAny <IEnumerable <string> >(),
                                          null,
                                          Constants.DefaultConfiguration), Times.Never);
        }
Ejemplo n.º 5
0
        public GivenANuGetCachePrimer()
        {
            var fileSystemMockBuilder = FileSystemMockBuilder.Create();

            fileSystemMockBuilder.TemporaryFolder = TEMPORARY_FOLDER_PATH;
            fileSystemMockBuilder.AddFile(COMPRESSED_ARCHIVE_PATH);
            _fileSystemMock = fileSystemMockBuilder.Build();

            _nugetPackagesArchiverMock = new Mock <INuGetPackagesArchiver>();
            _nugetPackagesArchiverMock.Setup(n => n.NuGetPackagesArchive).Returns(COMPRESSED_ARCHIVE_PATH);

            _nugetCacheSentinel = new Mock <INuGetCacheSentinel>();

            _nugetConfigMock = new Mock <INuGetConfig>();

            _cliFallbackFolderPathCalculator = new CliFallbackFolderPathCalculator();

            var nugetCachePrimer = new NuGetCachePrimer(
                _nugetPackagesArchiverMock.Object,
                _nugetCacheSentinel.Object,
                _nugetConfigMock.Object,
                _cliFallbackFolderPathCalculator,
                _fileSystemMock.File);

            nugetCachePrimer.PrimeCache();
        }
Ejemplo n.º 6
0
                 ) 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);
        }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
0
        public void GivenAFailedShutdownCommandItThrows()
        {
            const int    ProcessId    = 1234;
            const string ServerPath   = "path/to/rzc.dll";
            const string PipeName     = "some-pipe-name";
            const string ErrorMessage = "error!";

            string pidDirectory = Path.GetFullPath("var/pids/build");
            string pidFilePath  = Path.Combine(pidDirectory, $"{RazorPidFile.FilePrefix}{ProcessId}");

            var fileSystemMock = new FileSystemMockBuilder()
                                 .AddFile(pidFilePath, "")
                                 .Build();

            fileSystemMock.File.Exists(pidFilePath).Should().BeTrue();

            var server = new RazorServer(
                pidFile: new RazorPidFile(
                    path: new FilePath(pidFilePath),
                    processId: ProcessId,
                    serverPath: new FilePath(ServerPath),
                    pipeName: PipeName),
                commandFactory: CreateCommandFactoryMock(ServerPath, PipeName, exitCode: 1, stdErr: ErrorMessage).Object,
                fileSystem: fileSystemMock);

            Action a = () => server.Shutdown();

            a.ShouldThrow <BuildServerException>().WithMessage(
                string.Format(
                    LocalizableStrings.ShutdownCommandFailed,
                    ErrorMessage));

            fileSystemMock.File.Exists(pidFilePath).Should().BeTrue();
        }
Ejemplo n.º 9
0
                 ) Setup(
            bool useMock,
            List <MockFeed> feeds              = null,
            FilePath?tempProject               = null,
            DirectoryPath?offlineFeed          = null,
            [CallerMemberName] string testName = "",
            string identifier = null)
        {
            var root     = new DirectoryPath(_testAssetsManager.CreateTestDirectory(testName, identifier).Path);
            var reporter = new BufferedReporter();

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

            if (useMock)
            {
                var packagedShimsMap = new Dictionary <PackageId, IReadOnlyList <FilePath> >
                {
                    [TestPackageId] = new FilePath[] { new FilePath("path/demo.exe") }
                };

                fileSystem = new FileSystemMockBuilder().Build();
                var toolPackageStoreMock = new ToolPackageStoreMock(root, fileSystem);
                store      = toolPackageStoreMock;
                storeQuery = toolPackageStoreMock;
                installer  = new ToolPackageInstallerMock(
                    fileSystem: fileSystem,
                    store: toolPackageStoreMock,
                    projectRestorer: new ProjectRestorerMock(
                        fileSystem: fileSystem,
                        reporter: reporter,
                        feeds: feeds),
                    packagedShimsMap: packagedShimsMap);
                uninstaller = new ToolPackageUninstallerMock(fileSystem, toolPackageStoreMock);
            }
            else
            {
                fileSystem = new FileSystemWrapper();
                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);
        }
Ejemplo n.º 10
0
 public GivenAFunctionReturnStringAndFakeFileSystem()
 {
     _fileSystemMockBuilder = FileSystemMockBuilder.Create();
     _fileSystemMock        = _fileSystemMockBuilder.Build();
     _userLevelCacheWriter  =
         new UserLevelCacheWriter(
             DOTNET_USER_PROFILE_FOLDER_PATH,
             _fileSystemMock.File,
             _fileSystemMock.Directory);
 }
Ejemplo n.º 11
0
        public void WhenTheCacheIsCorruptedItShouldNotAffectNextSaveAndLoad()
        {
            IFileSystem fileSystem = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build();

            DirectoryPath tempDirectory =
                new DirectoryPath(fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath);
            DirectoryPath cacheDirectory            = tempDirectory.WithSubDirectories("cacheDirectory");
            DirectoryPath nuGetGlobalPackagesFolder = tempDirectory.WithSubDirectories("nugetGlobalPackageLocation");

            fileSystem.Directory.CreateDirectory(cacheDirectory.Value);
            const int version = 1;

            LocalToolsResolverCache localToolsResolverCache =
                new LocalToolsResolverCache(fileSystem, cacheDirectory, version);

            NuGetFramework targetFramework   = NuGetFramework.Parse("netcoreapp2.1");
            string         runtimeIdentifier = Constants.AnyRid;
            PackageId      packageId         = new PackageId("my.toolBundle");
            NuGetVersion   nuGetVersion      = NuGetVersion.Parse("1.0.2");
            IReadOnlyList <RestoredCommand> restoredCommands = new[]
            {
                new RestoredCommand(new ToolCommandName("tool1"), "dotnet", nuGetGlobalPackagesFolder.WithFile("tool1.dll")),
            };

            localToolsResolverCache.Save(
                restoredCommands.ToDictionary(
                    c => new RestoredCommandIdentifier(packageId, nuGetVersion, targetFramework, runtimeIdentifier,
                                                       c.Name)),
                nuGetGlobalPackagesFolder);

            var cachePath = cacheDirectory
                            .WithSubDirectories(version.ToString())
                            .WithSubDirectories(packageId.ToString()).Value;
            var existingCache =
                fileSystem.File.ReadAllText(
                    cachePath);

            existingCache.Should().NotBeEmpty();

            fileSystem.File.WriteAllText(cachePath, existingCache + " !!!Corrupted");

            // Save after corruption
            localToolsResolverCache.Save(
                restoredCommands.ToDictionary(
                    c => new RestoredCommandIdentifier(packageId, nuGetVersion, targetFramework, runtimeIdentifier,
                                                       c.Name)),
                nuGetGlobalPackagesFolder);

            localToolsResolverCache.TryLoad(
                new RestoredCommandIdentifier(packageId, nuGetVersion, targetFramework, runtimeIdentifier,
                                              restoredCommands[0].Name),
                nuGetGlobalPackagesFolder, out RestoredCommand restoredCommand);

            restoredCommand.ShouldBeEquivalentTo(restoredCommands[0]);
        }
Ejemplo n.º 12
0
                        ) Setup(
            bool useMock,
            IEnumerable <MockFeed> feeds = null,
            FilePath?tempProject         = null,
            DirectoryPath?offlineFeed    = null)
        {
            var root     = new DirectoryPath(Path.Combine(TempRoot.Root, Path.GetRandomFileName()));
            var reporter = new BufferedReporter();

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

            if (useMock)
            {
                var packagedShimsMap = new Dictionary <PackageId, IReadOnlyList <FilePath> >
                {
                    [TestPackageId] = new FilePath[] { new FilePath("path/demo.exe") }
                };

                fileSystem = new FileSystemMockBuilder().Build();
                var toolPackageStoreMock = new ToolPackageStoreMock(root, fileSystem);
                store      = toolPackageStoreMock;
                storeQuery = toolPackageStoreMock;
                installer  = new ToolPackageInstallerMock(
                    fileSystem: fileSystem,
                    store: toolPackageStoreMock,
                    projectRestorer: new ProjectRestorerMock(
                        fileSystem: fileSystem,
                        reporter: reporter,
                        feeds: feeds),
                    packagedShimsMap: packagedShimsMap);
                uninstaller = new ToolPackageUninstallerMock(fileSystem, toolPackageStoreMock);
            }
            else
            {
                fileSystem = new FileSystemWrapper();
                var toolPackageStore = new ToolPackageStoreAndQuery(root);
                store      = toolPackageStore;
                storeQuery = toolPackageStore;
                installer  = new ToolPackageInstaller(
                    store: store,
                    projectRestorer: new ProjectRestorer(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);
        }
Ejemplo n.º 13
0
                        ) Setup(
            bool useMock,
            List <MockFeed> feeds                = null,
            FilePath?tempProject                 = null,
            DirectoryPath?offlineFeed            = null,
            FilePath?writeLocalFeedToNugetConfig = null)
        {
            var root     = new DirectoryPath(Path.Combine(TempRoot.Root, Path.GetRandomFileName()));
            var reporter = new BufferedReporter();

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

            if (useMock)
            {
                fileSystem = new FileSystemMockBuilder().Build();
                WriteNugetConfigFileToPointToTheFeed(fileSystem, writeLocalFeedToNugetConfig);
                var toolPackageStoreMock = new ToolPackageStoreMock(root, fileSystem);
                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()));
                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 ProjectRestorer(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);
        }
Ejemplo n.º 14
0
        public void GivenEnvironmentVariableItUsesItForThePidDirectory()
        {
            IFileSystem fileSystem   = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build();
            var         pidDirectory = Path.Combine(fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath, "path/to/some/directory");
            var         provider     = new BuildServerProvider(
                fileSystem,
                CreateEnvironmentProviderMock(pidDirectory).Object);

            provider
            .GetPidFileDirectory()
            .Value
            .Should()
            .Be(pidDirectory);
        }
Ejemplo n.º 15
0
         LocalToolsResolverCache localToolsResolverCache) Setup()
        {
            IFileSystem   fileSystem    = new FileSystemMockBuilder().UseCurrentSystemTemporaryDirectory().Build();
            DirectoryPath tempDirectory =
                new DirectoryPath(fileSystem.Directory.CreateTemporaryDirectory().DirectoryPath);
            DirectoryPath cacheDirectory            = tempDirectory.WithSubDirectories("cacheDirectory");
            DirectoryPath nuGetGlobalPackagesFolder = tempDirectory.WithSubDirectories("nugetGlobalPackageLocation");

            fileSystem.Directory.CreateDirectory(cacheDirectory.Value);
            const int version = 1;

            LocalToolsResolverCache localToolsResolverCache =
                new LocalToolsResolverCache(fileSystem, cacheDirectory, version);

            return(nuGetGlobalPackagesFolder, localToolsResolverCache);
        }
Ejemplo n.º 16
0
        public void It_does_not_prime_the_NuGet_cache_if_the_archive_is_not_found_so_that_we_do_not_need_to_generate_the_archive_for_stage1()
        {
            var fileSystemMockBuilder = FileSystemMockBuilder.Create();
            var fileSystemMock        = fileSystemMockBuilder.Build();

            var nugetPackagesArchiverMock = new Mock <INuGetPackagesArchiver>();

            nugetPackagesArchiverMock.Setup(n => n.NuGetPackagesArchive).Returns(COMPRESSED_ARCHIVE_PATH);

            var nugetCachePrimer = new NuGetCachePrimer(
                nugetPackagesArchiverMock.Object,
                _nugetCacheSentinel.Object,
                fileSystemMock.File);

            nugetCachePrimer.PrimeCache();

            nugetPackagesArchiverMock.Verify(n => n.ExtractArchive(It.IsAny <string>()), Times.Never);
        }
Ejemplo n.º 17
0
        private static IFileSystem SetupSubjectFileSystem(bool testMockBehaviorIsInSync)
        {
            IFileSystem fileSystem;

            if (testMockBehaviorIsInSync)
            {
                FileSystemMockBuilder temporaryFolder = new FileSystemMockBuilder
                {
                    TemporaryFolder = Path.GetTempPath()
                };
                fileSystem = temporaryFolder.Build();
            }
            else
            {
                fileSystem = new FileSystemWrapper();
            }

            return(fileSystem);
        }
Ejemplo n.º 18
0
        private static (IToolPackageStore, IToolPackageInstaller, BufferedReporter, IFileSystem) Setup(
            bool useMock,
            IEnumerable <MockFeed> feeds = null,
            FilePath?tempProject         = null,
            DirectoryPath?offlineFeed    = null)
        {
            var root     = new DirectoryPath(Path.Combine(TempRoot.Root, Path.GetRandomFileName()));
            var reporter = new BufferedReporter();

            IFileSystem           fileSystem;
            IToolPackageStore     store;
            IToolPackageInstaller installer;

            if (useMock)
            {
                fileSystem = new FileSystemMockBuilder().Build();
                store      = new ToolPackageStoreMock(root, fileSystem);
                installer  = new ToolPackageInstallerMock(
                    fileSystem: fileSystem,
                    store: store,
                    projectRestorer: new ProjectRestorerMock(
                        fileSystem: fileSystem,
                        reporter: reporter,
                        feeds: feeds));
            }
            else
            {
                fileSystem = new FileSystemWrapper();
                store      = new ToolPackageStore(root);
                installer  = new ToolPackageInstaller(
                    store: store,
                    projectRestorer: new ProjectRestorer(reporter),
                    tempProject: tempProject ?? GetUniqueTempProjectPathEachTest(),
                    offlineFeed: offlineFeed ?? new DirectoryPath("does not exist"));
            }

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

            return(store, installer, reporter, fileSystem);
        }
Ejemplo n.º 19
0
        public void GivenARazorPidFileItReturnsARazorBuildServer()
        {
            const int    ProcessId = 1234;
            const string PipeName  = "some-pipe-name";

            string pidDirectory = Path.GetFullPath("var/pids/build");
            string pidFilePath  = Path.Combine(pidDirectory, $"{RazorPidFile.FilePrefix}{ProcessId}");

            var fileSystemMockBuilder = new FileSystemMockBuilder();

            fileSystemMockBuilder.UseCurrentSystemTemporaryDirectory();
            var serverPath = Path.Combine(fileSystemMockBuilder.TemporaryFolder, "path/to/rzc.dll");

            IFileSystem fileSystemMock = fileSystemMockBuilder.AddFile(
                pidFilePath,
                $"{ProcessId}{Environment.NewLine}{RazorPidFile.RazorServerType}{Environment.NewLine}{serverPath}{Environment.NewLine}{PipeName}")
                                         .AddFile(
                Path.Combine(pidDirectory, $"{RazorPidFile.FilePrefix}not-a-pid-file"),
                "not-a-pid-file")
                                         .Build();

            var provider = new BuildServerProvider(
                fileSystemMock,
                CreateEnvironmentProviderMock(pidDirectory).Object);

            var servers = provider.EnumerateBuildServers(ServerEnumerationFlags.Razor).ToArray();

            servers.Length.Should().Be(1);

            var razorServer = servers.First() as RazorServer;

            razorServer.Should().NotBeNull();
            razorServer.ProcessId.Should().Be(ProcessId);
            razorServer.Name.Should().Be(LocalizableStrings.RazorServer);
            razorServer.PidFile.Should().NotBeNull();
            razorServer.PidFile.Path.Value.Should().Be(pidFilePath);
            razorServer.PidFile.ProcessId.Should().Be(ProcessId);
            razorServer.PidFile.ServerPath.Value.Should().Be(serverPath);
            razorServer.PidFile.PipeName.Should().Be(PipeName);
        }
Ejemplo n.º 20
0
        private (IToolPackageStore, IToolPackageInstaller, BufferedReporter, IFileSystem) Setup(
            bool useMock,
            string testDirectory,
            List <MockFeed> feeds     = null,
            FilePath?tempProject      = null,
            DirectoryPath?offlineFeed = null)
        {
            var root     = new DirectoryPath(Path.Combine(Directory.GetCurrentDirectory(), Path.GetRandomFileName()));
            var reporter = new BufferedReporter();

            IFileSystem           fileSystem;
            IToolPackageStore     store;
            IToolPackageInstaller installer;

            if (useMock)
            {
                fileSystem = new FileSystemMockBuilder().Build();
                store      = new ToolPackageStoreMock(root, fileSystem);
                installer  = new ToolPackageInstallerMock(
                    fileSystem: fileSystem,
                    store: store,
                    projectRestorer: new ProjectRestorerMock(
                        fileSystem: fileSystem,
                        reporter: reporter,
                        feeds: feeds));
            }
            else
            {
                fileSystem = new FileSystemWrapper();
                store      = new ToolPackageStoreAndQuery(root);
                installer  = new ToolPackageInstaller(
                    store: store,
                    projectRestorer: new Stage2ProjectRestorer(Log, reporter),
                    tempProject: tempProject ?? GetUniqueTempProjectPathEachTest(testDirectory),
                    offlineFeed: offlineFeed ?? new DirectoryPath("does not exist"));
            }

            return(store, installer, reporter, fileSystem);
        }
Ejemplo n.º 21
0
 public GivenANuGetCacheSentinel()
 {
     _fileSystemMockBuilder = FileSystemMockBuilder.Create();
 }
Ejemplo n.º 22
0
        public void GivenOfflineFeedInstallWhenCallWithprereleaseItSucceeds(bool testMockBehaviorIsInSync)
        {
            IToolPackageInstaller   installer   = null;
            IToolPackageUninstaller uninstaller = null;

            if (testMockBehaviorIsInSync == false)
            {
                var testFeedWithOnlyPreviewPackages =
                    Path.Combine(Path.GetTempPath(),
                                 Path.GetRandomFileName());

                Directory.CreateDirectory(testFeedWithOnlyPreviewPackages);
                var tempFeed = GetTestLocalFeedPath();
                File.Copy(Path.Combine(GetTestLocalFeedPath(), "global.tool.console.demo.1.0.4.nupkg"),
                          Path.Combine(testFeedWithOnlyPreviewPackages, "global.tool.console.demo.1.0.4.nupkg"));
                File.Copy(Path.Combine(GetTestLocalFeedPath(), "global.tool.console.demo.2.0.1-preview1.nupkg"),
                          Path.Combine(testFeedWithOnlyPreviewPackages, "global.tool.console.demo.2.0.1-preview1.nupkg"));

                var(store, storeQuery, realInstaller, realUninstaller, reporter, fileSystem) = Setup(
                    useMock: testMockBehaviorIsInSync,
                    offlineFeed: new DirectoryPath(testFeedWithOnlyPreviewPackages),
                    feeds: GetOfflineMockFeed());

                installer   = realInstaller;
                uninstaller = realUninstaller;
            }
            else
            {
                var fileSystem = new FileSystemMockBuilder().Build();
                var root       = new DirectoryPath(_testAssetsManager
                                                   .CreateTestDirectory(nameof(GivenOfflineFeedInstallWhenCallWithprereleaseItSucceeds) +
                                                                        testMockBehaviorIsInSync).Path);
                var toolPackageStoreMock = new ToolPackageStoreMock(root, fileSystem);
                var store      = toolPackageStoreMock;
                var storeQuery = toolPackageStoreMock;
                installer = new ToolPackageInstallerMock(
                    fileSystem: fileSystem,
                    store: toolPackageStoreMock,
                    projectRestorer: new ProjectRestorerMock(
                        fileSystem: fileSystem,
                        reporter: new BufferedReporter(),
                        feeds: new List <MockFeed>
                {
                    new MockFeed
                    {
                        Type     = MockFeedType.ImplicitAdditionalFeed,
                        Packages = new List <MockFeedPackage>
                        {
                            new MockFeedPackage
                            {
                                PackageId       = TestPackageId.ToString(),
                                Version         = "1.0.4",
                                ToolCommandName = "SimulatorCommand"
                            },
                            new MockFeedPackage
                            {
                                PackageId       = TestPackageId.ToString(),
                                Version         = "2.0.1-preview1",
                                ToolCommandName = "SimulatorCommand"
                            }
                        }
                    }
                }));
                uninstaller = new ToolPackageUninstallerMock(fileSystem, toolPackageStoreMock);
            }


            var package = installer.InstallPackage(new PackageLocation(), packageId: TestPackageId,
                                                   versionRange: VersionRange.Parse("*-*"), targetFramework: _testTargetframework);

            package.Version.ToNormalizedString().Should().Be("2.0.1-preview1");

            uninstaller.Uninstall(package.PackageDirectory);

            var package2 = installer.InstallPackage(new PackageLocation(), packageId: TestPackageId,
                                                    versionRange: VersionRange.Parse("2.0*-*"), targetFramework: _testTargetframework);

            package2.Version.ToNormalizedString().Should().Be("2.0.1-preview1");

            uninstaller.Uninstall(package.PackageDirectory);
        }
 public GivenAFirstTimeUseNoticeSentinel()
 {
     _fileSystemMockBuilder = FileSystemMockBuilder.Create();
 }