コード例 #1
0
        public async Task GetInstalledPackagesAsync_LegacyProjectInvalidDataException_ReturnsProjectInvalidResultAsync()
        {
            // Arrange
            var projectGuid = Guid.NewGuid();

            var settings          = new Mock <ISettings>();
            var telemetryProvider = new Mock <INuGetTelemetryProvider>(MockBehavior.Strict);

            // Emulate the InvalidDataException thrown by LegacyPackageReferenceProject when the project doesn't have MSBuildProjectExtensionsPath
            var project = new Mock <BuildIntegratedNuGetProject>();

            project.Setup(p => p.GetPackageSpecsAndAdditionalMessagesAsync(It.IsAny <DependencyGraphCacheContext>()))
            .Throws <InvalidDataException>();

            var solutionManager = new Mock <IVsSolutionManager>();

            solutionManager.Setup(sm => sm.GetNuGetProjectAsync(projectGuid.ToString()))
            .Returns(() => Task.FromResult <NuGetProject>(project.Object));

            // Act
            var target = new NuGetProjectService(solutionManager.Object, settings.Object, telemetryProvider.Object);
            InstalledPackagesResult actual = await target.GetInstalledPackagesAsync(projectGuid, CancellationToken.None);

            // Assert
            Assert.NotNull(actual);
            Assert.Equal(InstalledPackageResultStatus.ProjectInvalid, actual.Status);
        }
コード例 #2
0
        public async Task GetInstalledPackagesAsync_CpsProjectNotNominated_ReturnsProjectNotReadyResult()
        {
            // Arrange
            var projectGuid = Guid.NewGuid();

            var settings          = new Mock <ISettings>();
            var telemetryProvider = new Mock <INuGetTelemetryProvider>(MockBehavior.Strict);

            // emulate the ProjectNotNominatedException when we have a CpsPackageReference project, but there's no nomination data yet.
            var project = new Mock <BuildIntegratedNuGetProject>();

            project.Setup(p => p.GetPackageSpecsAndAdditionalMessagesAsync(It.IsAny <DependencyGraphCacheContext>()))
            .Throws <ProjectNotNominatedException>();

            var solutionManager = new Mock <IVsSolutionManager>();

            solutionManager.Setup(sm => sm.GetNuGetProjectAsync(projectGuid.ToString()))
            .Returns(() => Task.FromResult <NuGetProject>(project.Object));

            // Act
            var target = new NuGetProjectService(solutionManager.Object, settings.Object, telemetryProvider.Object);
            InstalledPackagesResult actual = await target.GetInstalledPackagesAsync(projectGuid, CancellationToken.None);

            // Assert
            Assert.NotNull(actual);
            Assert.Equal(InstalledPackageResultStatus.ProjectNotReady, actual.Status);
        }
コード例 #3
0
        public async Task GetInstalledPackagesAsync_PackageReferenceProject_ReturnsTransitiveAsync()
        {
            // Arrange
            var projectGuid = Guid.NewGuid();

            var settings          = new Mock <ISettings>();
            var telemetryProvider = new Mock <INuGetTelemetryProvider>(MockBehavior.Strict);

            var installedPackages = new List <PackageReference>()
            {
                new PackageReference(new PackageIdentity("a", new NuGetVersion(1, 0, 0)), FrameworkConstants.CommonFrameworks.Net50)
            };
            var transitivePackages = new List <PackageReference>()
            {
                new PackageReference(new PackageIdentity("b", new NuGetVersion(1, 2, 3)), FrameworkConstants.CommonFrameworks.Net50)
            };
            var transitiveProjectPackages = transitivePackages.Select(p => new TransitivePackageReference(p)).ToList();
            var projectPackages           = new ProjectPackages(installedPackages, transitiveProjectPackages);
            var project = new TestPackageReferenceProject("ProjectA", @"src\ProjectA\Project.csproj", @"c:\path\to\src\ProjectA\ProjectA.csproj",
                                                          installedPackages, transitivePackages);

            var solutionManager = new Mock <IVsSolutionManager>();

            solutionManager.Setup(sm => sm.GetNuGetProjectAsync(projectGuid.ToString()))
            .Returns(() => Task.FromResult <NuGetProject>(project));

            // Act
            var target = new NuGetProjectService(solutionManager.Object, settings.Object, telemetryProvider.Object);
            InstalledPackagesResult actual = await target.GetInstalledPackagesAsync(projectGuid, CancellationToken.None);

            // Assert
            Assert.NotNull(actual);
            Assert.Equal(InstalledPackageResultStatus.Successful, actual.Status);

            NuGetInstalledPackage package = actual.Packages.FirstOrDefault(p => p.Id == "a");

            Assert.NotNull(package);
            Assert.True(package.DirectDependency);

            package = actual.Packages.FirstOrDefault(p => p.Id == "b");
            Assert.NotNull(package);
            Assert.False(package.DirectDependency);
        }