Ejemplo n.º 1
0
        public async Task NominateProjectAsync_WithDifferentPackageVersions_Fails(string version1, string version2)
        {
            var cps             = NewCpsProject("{ }");
            var projectFullPath = cps.ProjectFullPath;
            var pri             = cps.Builder
                                  .WithTargetFrameworkInfo(
                new VsTargetFrameworkInfo(
                    "netcoreapp1.0",
                    Enumerable.Empty <IVsReferenceItem>(),
                    Enumerable.Empty <IVsReferenceItem>(),
                    new[] { new VsProjectProperty("PackageVersion", version1) }))
                                  .WithTargetFrameworkInfo(
                new VsTargetFrameworkInfo(
                    "net46",
                    Enumerable.Empty <IVsReferenceItem>(),
                    Enumerable.Empty <IVsReferenceItem>(),
                    new[] { new VsProjectProperty("PackageVersion", version2) }))
                                  .Build();

            var cache         = Mock.Of <IProjectSystemCache>();
            var restoreWorker = Mock.Of <ISolutionRestoreWorker>();

            var service = new VsSolutionRestoreService(
                cache, restoreWorker, NuGet.Common.NullLogger.Instance);

            // Act
            var result = await service.NominateProjectAsync(projectFullPath, pri, CancellationToken.None);

            Assert.False(result, "Project restore nomination must fail.");
        }
Ejemplo n.º 2
0
        private async Task <DependencyGraphSpec> CaptureNominateResultAsync(
            string projectFullPath, IVsProjectRestoreInfo pri)
        {
            DependencyGraphSpec capturedRestoreSpec = null;

            var cache = Mock.Of <IProjectSystemCache>();

            Mock.Get(cache)
            .Setup(x => x.AddProjectRestoreInfo(
                       It.IsAny <ProjectNames>(),
                       It.IsAny <DependencyGraphSpec>()))
            .Callback <ProjectNames, DependencyGraphSpec>(
                (_, dg) => { capturedRestoreSpec = dg; })
            .Returns(true);

            var restoreWorker = Mock.Of <ISolutionRestoreWorker>();

            Mock.Get(restoreWorker)
            .Setup(x => x.ScheduleRestoreAsync(
                       It.IsAny <SolutionRestoreRequest>(),
                       CancellationToken.None))
            .ReturnsAsync(true);

            var service = new VsSolutionRestoreService(
                cache, restoreWorker, NuGet.Common.NullLogger.Instance);

            // Act
            var result = await service.NominateProjectAsync(projectFullPath, pri, CancellationToken.None);

            Assert.True(result, "Project restore nomination should succeed.");

            return(capturedRestoreSpec);
        }
Ejemplo n.º 3
0
        public void NominateProjectAsync_Always_SchedulesAutoRestore()
        {
            var cps = NewCpsProject();

            var cache = Mock.Of <IProjectSystemCache>();

            Mock.Get(cache)
            .Setup(x => x.AddProjectRestoreInfo(
                       It.IsAny <ProjectNames>(),
                       It.IsAny <DependencyGraphSpec>()))
            .Returns(true);

            var completedRestoreTask = Task.FromResult(true);

            var restoreWorker = Mock.Of <ISolutionRestoreWorker>();

            Mock.Get(restoreWorker)
            .Setup(x => x.ScheduleRestoreAsync(
                       It.IsAny <SolutionRestoreRequest>(),
                       CancellationToken.None))
            .Returns(completedRestoreTask);

            var service = new VsSolutionRestoreService(
                cache, restoreWorker, NuGet.Common.NullLogger.Instance);

            // Act
            var actualRestoreTask = service.NominateProjectAsync(cps.ProjectFullPath, cps.ProjectRestoreInfo, CancellationToken.None);

            Assert.Same(completedRestoreTask, actualRestoreTask);

            Mock.Get(restoreWorker)
            .Verify(
                x => x.ScheduleRestoreAsync(It.IsAny <SolutionRestoreRequest>(), CancellationToken.None),
                Times.Once(),
                "Service should schedule auto-restore operation.");
        }