예제 #1
0
        public void GetSpecDependencies_AddsCentralPackageVersionsIfDefined(bool cpvmEnabled)
        {
            // Arrange
            var logger        = new TestLogger();
            var dependencyFoo = new LibraryDependency(
                libraryRange: new LibraryRange("foo", versionRange: null, LibraryDependencyTarget.Package),
                type: LibraryDependencyType.Default,
                includeType: LibraryIncludeFlags.All,
                suppressParent: LibraryIncludeFlags.None,
                noWarn: new List <Common.NuGetLogCode>(),
                autoReferenced: false,
                generatePathProperty: true,
                versionCentrallyManaged: false,
                LibraryDependencyReferenceType.Direct,
                aliases: "stuff");

            var centralVersionFoo = new CentralPackageVersion("foo", VersionRange.Parse("2.0.0"));
            var centralVersionBar = new CentralPackageVersion("bar", VersionRange.Parse("2.0.0"));

            var tfi = CreateTargetFrameworkInformation(new List <LibraryDependency>()
            {
                dependencyFoo
            }, new List <CentralPackageVersion>()
            {
                centralVersionFoo, centralVersionBar
            }, cpvmEnabled);
            var dependencyGraphSpec = CreateDependencyGraphSpecWithCentralDependencies(cpvmEnabled, tfi);
            var packSpec            = dependencyGraphSpec.Projects[0];

            // Act
            var dependencies = PackageSpecReferenceDependencyProvider.GetSpecDependencies(packSpec, tfi.FrameworkName);

            // Assert
            if (cpvmEnabled)
            {
                Assert.Equal(2, dependencies.Count);
                var barDep = dependencies.Where(d => d.Name == "bar").First();
                Assert.NotNull(barDep);
                Assert.True(barDep.VersionCentrallyManaged);
                Assert.False(barDep.AutoReferenced);
                Assert.Equal(LibraryDependencyReferenceType.None, barDep.ReferenceType);
                Assert.Equal("[2.0.0, )", barDep.LibraryRange.VersionRange.ToNormalizedString());

                var fooDep = dependencies.Where(d => d.Name == "foo").First();
                Assert.NotNull(fooDep);
                Assert.False(fooDep.AutoReferenced);
                Assert.True(fooDep.VersionCentrallyManaged);
                Assert.Equal(LibraryDependencyReferenceType.Direct, fooDep.ReferenceType);
                Assert.Equal("[2.0.0, )", fooDep.LibraryRange.VersionRange.ToNormalizedString());
            }
            else
            {
                Assert.Equal(1, dependencies.Count);
                var fooDep = dependencies.Where(d => d.Name == "foo").First();
                Assert.NotNull(fooDep);
                Assert.False(fooDep.VersionCentrallyManaged);
                Assert.Null(fooDep.LibraryRange.VersionRange);
                Assert.Equal(LibraryDependencyReferenceType.Direct, fooDep.ReferenceType);
            }
        }
        public void GetSpecDependencies_WithAssetTargetFallback_AndDependencyResolutionVariableSpecified_ReturnsCorrectDependencies(string assetTargetFallbackEnvironmentVariableValue, int dependencyCount)
        {
            // Arrange
            var net60Framework  = FrameworkConstants.CommonFrameworks.Net60;
            var net472Framework = FrameworkConstants.CommonFrameworks.Net472;
            var packageSpec     = ProjectTestHelpers.GetPackageSpec(rootPath: "C:\\", projectName: "A", framework: net472Framework.GetShortFolderName(), dependencyName: "x");

            var envVarWrapper = new TestEnvironmentVariableReader(new Dictionary <string, string> {
                { "NUGET_USE_LEGACY_ASSET_TARGET_FALLBACK_DEPENDENCY_RESOLUTION", assetTargetFallbackEnvironmentVariableValue }
            });
            var dependencyProvider  = new PackageSpecReferenceDependencyProvider(new List <ExternalProjectReference>(), NullLogger.Instance, envVarWrapper);
            var assetTargetFallback = new AssetTargetFallbackFramework(net60Framework, new List <NuGetFramework> {
                net472Framework
            });
            // Act

            var dependencies = dependencyProvider.GetSpecDependencies(packageSpec, assetTargetFallback);

            // Assert
            dependencies.Should().HaveCount(dependencyCount);

            if (dependencyCount > 0)
            {
                dependencies[0].Name.Should().Be("x");
            }
        }