Beispiel #1
0
        public void WarningPropertiesCollection_MessageWithNoTargetGraphAndDependencyWithNoWarnForAllTfm(string firstFrameworkString, string secondFrameworkString)
        {
            // Arrange
            var libraryId             = "test_library";
            var firstTargetFramework  = NuGetFramework.Parse(firstFrameworkString);
            var secondTargetFramework = NuGetFramework.Parse(secondFrameworkString);

            var noWarnSet           = new HashSet <NuGetLogCode> {
            };
            var warnAsErrorSet      = new HashSet <NuGetLogCode> {
            };
            var allWarningsAsErrors = false;

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, firstTargetFramework);
            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, secondTargetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection()
            {
                ProjectWideWarningProperties     = new WarningProperties(warnAsErrorSet, noWarnSet, allWarningsAsErrors),
                PackageSpecificWarningProperties = packageSpecificWarningProperties,
                ProjectFrameworks = new List <NuGetFramework> {
                    firstTargetFramework, secondTargetFramework
                }
            };

            var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId);

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
            Assert.Equal(0, suppressedMessage.TargetGraphs.Count);
        }
        public void WarningPropertiesCollection_MessageWithTargetGraphAndDependencyWithNoWarnForSomeTfmAndNoProjectFrameworks(string firstFrameworkString, string secondFrameworkString)
        {
            // Arrange
            var libraryId             = "test_library";
            var firstTargetFramework  = NuGetFramework.Parse(firstFrameworkString);
            var secondTargetFramework = NuGetFramework.Parse(secondFrameworkString);

            var noWarnSet           = new HashSet <NuGetLogCode> {
            };
            var warnAsErrorSet      = new HashSet <NuGetLogCode> {
            };
            var allWarningsAsErrors = false;

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, firstTargetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection(
                new WarningProperties(warnAsErrorSet, noWarnSet, allWarningsAsErrors),
                packageSpecificWarningProperties,
                null);

            var nonSuppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, new string[] { firstFrameworkString, secondFrameworkString });

            // Act && Assert
            Assert.False(warningPropertiesCollection.ApplyWarningProperties(nonSuppressedMessage));
            Assert.Equal(1, nonSuppressedMessage.TargetGraphs.Count);
        }
Beispiel #3
0
        public void WarningPropertiesCollection_PackagePropertiesWithFrameworkAndWarningWithFramework()
        {
            // Arrange
            // Arrange
            var libraryId       = "test_library";
            var frameworkString = "net45";
            var targetFramework = NuGetFramework.Parse(frameworkString);

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, targetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection()
            {
                PackageSpecificWarningProperties = packageSpecificWarningProperties
            };

            var suppressedMessage    = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString);
            var nonSuppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId, frameworkString);

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
            Assert.False(warningPropertiesCollection.ApplyWarningProperties(nonSuppressedMessage));
            Assert.Equal(LogLevel.Warning, nonSuppressedMessage.Level);
        }
Beispiel #4
0
        public void WarningPropertiesCollection_PackagePropertiesAndProjectPropertiesWithNoWarn()
        {
            // Arrange
            // Arrange
            var libraryId       = "test_library";
            var frameworkString = "net45";
            var targetFramework = NuGetFramework.Parse(frameworkString);
            var noWarnSet       = new HashSet <NuGetLogCode> {
                NuGetLogCode.NU1500
            };
            var warnAsErrorSet      = new HashSet <NuGetLogCode> {
            };
            var allWarningsAsErrors = false;

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            var warningPropertiesCollection = new WarningPropertiesCollection()
            {
                ProjectWideWarningProperties     = new WarningProperties(warnAsErrorSet, noWarnSet, allWarningsAsErrors),
                PackageSpecificWarningProperties = packageSpecificWarningProperties
            };

            var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId);

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
        }
        public void WarningPropertiesCollection_PackagePropertiesWithNoWarnAndProjectPropertiesWithWarnAsErrorAndProjectWithoutTargetFramework(string frameworkString)
        {
            // Arrange
            var libraryId       = "test_library";
            var targetFramework = NuGetFramework.Parse(frameworkString);
            var noWarnSet       = new HashSet <NuGetLogCode> {
            };
            var warnAsErrorSet  = new HashSet <NuGetLogCode> {
                NuGetLogCode.NU1500
            };
            var allWarningsAsErrors = false;

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, targetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection(
                new WarningProperties(warnAsErrorSet, noWarnSet, allWarningsAsErrors),
                packageSpecificWarningProperties,
                new List <NuGetFramework> {
                targetFramework
            });

            var suppressedMessage  = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString);
            var suppressedMessage2 = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId);
            var unaffectedMessage  = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId);

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
            Assert.Equal(0, suppressedMessage.TargetGraphs.Count);
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage2));
            Assert.Equal(0, suppressedMessage2.TargetGraphs.Count);
            Assert.False(warningPropertiesCollection.ApplyWarningProperties(unaffectedMessage));
            Assert.Equal(0, unaffectedMessage.TargetGraphs.Count);
        }
Beispiel #6
0
        public void WarningPropertiesCollection_MessageWithTargetGraphAndDependencyWithNoWarnForAllTfmAndNoProjectFrameworks_2()
        {
            // Arrange
            var libraryId            = "test_library";
            var net45FrameworkString = "net45";
            var net45TargetFramework = NuGetFramework.Parse(net45FrameworkString);

            var noWarnSet           = new HashSet <NuGetLogCode> {
            };
            var warnAsErrorSet      = new HashSet <NuGetLogCode> {
            };
            var allWarningsAsErrors = false;

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, net45TargetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection()
            {
                ProjectWideWarningProperties     = new WarningProperties(warnAsErrorSet, noWarnSet, allWarningsAsErrors),
                PackageSpecificWarningProperties = packageSpecificWarningProperties
            };

            var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, new string[] { net45FrameworkString });

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
            Assert.Equal(0, suppressedMessage.TargetGraphs.Count);
        }
Beispiel #7
0
        public void PackageSpecificWanringProperties_DefaultValue()
        {
            // Arrange
            var properties = new PackageSpecificWarningProperties();

            // Assert
            Assert.False(properties.Contains(NuGetLogCode.NU1500, "test_libraryId"));
        }
        public void PackageSpecificWarningProperties_DefaultValue()
        {
            // Arrange
            var properties      = new PackageSpecificWarningProperties();
            var libraryId       = "test_libraryId";
            var targetFramework = NuGetFramework.Parse("net45");

            // Assert
            Assert.False(properties.Contains(NuGetLogCode.NU1500, libraryId, targetFramework));
        }
        public void ExtractPackageSpecificNoWarnForFrameworks_InputWithNullProperties()
        {
            // Arrange
            var input = new PackageSpecificWarningProperties();

            // Act
            var result = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnPerFramework(input);

            // Assert
            result.Should().BeNull();
        }
        public void PackageSpecificWarningProperties_CreatesPackageSpecificWarningPropertiesWithUnconditionalDependencies()
        {
            // Arrange
            var net45Framework      = NuGetFramework.Parse("net45");
            var netcoreappFramework = NuGetFramework.Parse("netcoreapp1.1");
            var libraryId           = "test_library";
            var libraryVersion      = "1.0.0";
            var NoWarnList          = new List <NuGetLogCode>
            {
                NuGetLogCode.NU1603,
                NuGetLogCode.NU1605
            };

            var targetFrameworkInformation = new List <TargetFrameworkInformation>
            {
                new TargetFrameworkInformation()
                {
                    FrameworkName = net45Framework
                },
                new TargetFrameworkInformation()
                {
                    FrameworkName = netcoreappFramework
                }
            };

            var packageSpec = new PackageSpec(targetFrameworkInformation)
            {
                Dependencies = new List <LibraryDependency>
                {
                    new LibraryDependency()
                    {
                        LibraryRange = new LibraryRange
                        {
                            Name           = libraryId,
                            TypeConstraint = LibraryDependencyTarget.Package,
                            VersionRange   = VersionRange.Parse(libraryVersion)
                        },
                        NoWarn = NoWarnList
                    }
                }
            };

            // Act
            var warningProperties = PackageSpecificWarningProperties.CreatePackageSpecificWarningProperties(packageSpec);

            // Assert
            Assert.True(warningProperties.Contains(NuGetLogCode.NU1603, libraryId, net45Framework));
            Assert.True(warningProperties.Contains(NuGetLogCode.NU1603, libraryId, netcoreappFramework));
            Assert.True(warningProperties.Contains(NuGetLogCode.NU1605, libraryId, net45Framework));
            Assert.True(warningProperties.Contains(NuGetLogCode.NU1605, libraryId, netcoreappFramework));
            Assert.False(warningProperties.Contains(NuGetLogCode.NU1603, libraryId, NuGetFramework.Parse("random_framework")));
            Assert.False(warningProperties.Contains(NuGetLogCode.NU1605, libraryId, NuGetFramework.Parse("random_framework")));
        }
        public void ExtractPackageSpecificNoWarnForFramework_NullInput()
        {
            // Arrange
            PackageSpecificWarningProperties input = null;
            NuGetFramework framework = null;

            // Act
            var result = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(input, framework);

            // Assert
            result.Should().BeNull();
        }
Beispiel #12
0
        public void PackageSpecificWanringProperties_AddsValueWithGlobalTFM()
        {
            // Arrange
            var code       = NuGetLogCode.NU1500;
            var libraryId  = "test_libraryId";
            var properties = new PackageSpecificWarningProperties();

            properties.Add(code, libraryId);

            // Assert
            Assert.False(properties.Contains(code, libraryId, NuGetFramework.Parse("random_target_graph")));
            Assert.True(properties.Contains(code, libraryId));
        }
        public void WarningPropertiesCollection_PackagePropertiesWithoutFrameworkAndWarningWithDifferentFramework(string frameworkString)
        {
            // Arrange
            var libraryId       = "test_library";
            var targetFramework = NuGetFramework.Parse(frameworkString);

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, targetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection(null, packageSpecificWarningProperties, null);

            var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, "net45");

            // Act && Assert
            Assert.False(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
        }
Beispiel #14
0
        public void PackageSpecificWanringProperties_AddsRangeValueWithGlobalTFM()
        {
            // Arrange
            var codes = new List <NuGetLogCode> {
                NuGetLogCode.NU1500, NuGetLogCode.NU1601, NuGetLogCode.NU1701
            };
            var libraryId  = "test_libraryId";
            var properties = new PackageSpecificWarningProperties();

            properties.AddRange(codes, libraryId);

            // Assert
            foreach (var code in codes)
            {
                Assert.False(properties.Contains(code, libraryId, NuGetFramework.Parse("random_target_graph")));
                Assert.True(properties.Contains(code, libraryId));
            }
        }
Beispiel #15
0
        public void WarningPropertiesCollection_PackagePropertiesWithoutFrameworkAndWarningWithoutFramework()
        {
            // Arrange
            // Arrange
            var libraryId = "test_library";

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId);

            var warningPropertiesCollection = new WarningPropertiesCollection()
            {
                PackageSpecificWarningProperties = packageSpecificWarningProperties
            };

            var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId);

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
        }
        public void WarningPropertiesCollection_PackagePropertiesWithPTFFrameworkAndWarningWithFramework(string frameworkString)
        {
            // Arrange
            var libraryId       = "test_library";
            var targetFramework = new FallbackFramework(NuGetFramework.Parse(frameworkString), new List <NuGetFramework>()
            {
                NuGetFramework.AnyFramework
            });

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, targetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection(null, packageSpecificWarningProperties, null);

            var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString);

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
        }
Beispiel #17
0
        public void WarningPropertiesCollection_PackagePropertiesWithoutFrameworkAndWarningWithoutFramework(string frameworkString)
        {
            // Arrange
            var libraryId       = "test_library";
            var targetFramework = NuGetFramework.Parse(frameworkString);

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, targetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection()
            {
                PackageSpecificWarningProperties = packageSpecificWarningProperties,
                ProjectFrameworks = new List <NuGetFramework> {
                    targetFramework
                }
            };

            var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId);

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
        }
Beispiel #18
0
        public void WarningPropertiesCollection_PackagePropertiesWithNoWarnAndProjectPropertiesWithAllWarnAsError()
        {
            // Arrange
            var libraryId           = "test_library";
            var frameworkString     = "net45";
            var targetFramework     = NuGetFramework.Parse(frameworkString);
            var noWarnSet           = new HashSet <NuGetLogCode> {
            };
            var warnAsErrorSet      = new HashSet <NuGetLogCode> {
            };
            var allWarningsAsErrors = true;

            var packageSpecificWarningProperties = new PackageSpecificWarningProperties();

            packageSpecificWarningProperties.Add(NuGetLogCode.NU1500, libraryId, targetFramework);

            var warningPropertiesCollection = new WarningPropertiesCollection()
            {
                ProjectWideWarningProperties     = new WarningProperties(warnAsErrorSet, noWarnSet, allWarningsAsErrors),
                PackageSpecificWarningProperties = packageSpecificWarningProperties,
                ProjectFrameworks = new List <NuGetFramework>
                {
                    targetFramework
                }
            };

            var suppressedMessage  = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString);
            var suppressedMessage2 = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId);
            var upgradedMessage    = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId, frameworkString);

            // Act && Assert
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage));
            Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage2));
            Assert.False(warningPropertiesCollection.ApplyWarningProperties(upgradedMessage));
            Assert.Equal(LogLevel.Error, upgradedMessage.Level);
            Assert.Equal(1, upgradedMessage.TargetGraphs.Count);
        }
        public void MergePackageSpecificWarningProperties_MergesNonEmptyCollections()
        {
            // Arrange
            var packageId1     = "test_id1";
            var packageId2     = "test_id2";
            var net461         = NuGetFramework.Parse("net461");
            var netcoreapp     = NuGetFramework.Parse("netcoreapp2.0");
            var expectedResult = new PackageSpecificWarningProperties();

            expectedResult.AddRangeOfCodes(
                new List <NuGetLogCode> {
                NuGetLogCode.NU1601, NuGetLogCode.NU1605
            },
                packageId1,
                net461);
            expectedResult.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId2,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            expectedResult.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId1,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            expectedResult.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId2,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            expectedResult.AddRangeOfFrameworks(
                NuGetLogCode.NU1604,
                packageId1,
                new List <NuGetFramework> {
                net461, netcoreapp
            });


            var first = new PackageSpecificWarningProperties();

            first.AddRangeOfCodes(
                new List <NuGetLogCode> {
                NuGetLogCode.NU1601, NuGetLogCode.NU1605
            },
                packageId1,
                net461);
            first.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId2,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            first.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId1,
                new List <NuGetFramework> {
                netcoreapp
            });

            var second = new PackageSpecificWarningProperties();

            second.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId2,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            second.AddRangeOfFrameworks(
                NuGetLogCode.NU1604,
                packageId1,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            second.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId1,
                new List <NuGetFramework> {
                net461
            });


            var expectedNoWarnForNet461     = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(expectedResult, net461);
            var expectedNoWarnForNetcoreapp = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(expectedResult, netcoreapp);

            var firstNoWarnForNet461     = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(first, net461);
            var firstNoWarnForNetcoreapp = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(first, netcoreapp);

            var secondNoWarnForNet461     = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(second, net461);
            var secondNoWarnForNetcoreapp = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(second, netcoreapp);

            // Act
            var mergedNoWarnForNet461     = TransitiveNoWarnUtils.MergePackageSpecificNoWarn(firstNoWarnForNet461, secondNoWarnForNet461);
            var mergedNoWarnForNetcoreapp = TransitiveNoWarnUtils.MergePackageSpecificNoWarn(firstNoWarnForNetcoreapp, secondNoWarnForNetcoreapp);

            // Assert
            mergedNoWarnForNet461.Should().NotBeNull();
            mergedNoWarnForNet461.Should().BeEquivalentTo(expectedNoWarnForNet461);

            mergedNoWarnForNetcoreapp.Should().NotBeNull();
            mergedNoWarnForNetcoreapp.Should().BeEquivalentTo(expectedNoWarnForNetcoreapp);
        }
        public void PackageSpecificWarningProperties_CreatesPackageSpecificWarningPropertiesWithFrameworkConditionalDependencies()
        {
            // Arrange
            var net45Framework      = NuGetFramework.Parse("net45");
            var netcoreappFramework = NuGetFramework.Parse("netcoreapp1.1");
            var NoWarnList          = new List <NuGetLogCode>
            {
                NuGetLogCode.NU1603,
                NuGetLogCode.NU1605
            };

            var dependency1 = new LibraryDependency()
            {
                LibraryRange = new LibraryRange
                {
                    Name           = "test_library_1",
                    TypeConstraint = LibraryDependencyTarget.Package,
                    VersionRange   = VersionRange.Parse("1.0.0")
                },
                NoWarn = new List <NuGetLogCode>
                {
                    NuGetLogCode.NU1603,
                    NuGetLogCode.NU1607
                }
            };

            var dependency2 = new LibraryDependency()
            {
                LibraryRange = new LibraryRange
                {
                    Name           = "test_library_2",
                    TypeConstraint = LibraryDependencyTarget.Package,
                    VersionRange   = VersionRange.Parse("1.0.0")
                },
                NoWarn = new List <NuGetLogCode>
                {
                    NuGetLogCode.NU1603,
                    NuGetLogCode.NU1605
                }
            };

            var targetFrameworkInformation = new List <TargetFrameworkInformation>
            {
                new TargetFrameworkInformation()
                {
                    FrameworkName = net45Framework,
                    Dependencies  = new List <LibraryDependency>
                    {
                        dependency1
                    }
                },
                new TargetFrameworkInformation()
                {
                    FrameworkName = netcoreappFramework,
                    Dependencies  = new List <LibraryDependency>
                    {
                        dependency2
                    }
                }
            };

            var packageSpec = new PackageSpec(targetFrameworkInformation);

            // Act
            var warningProperties = PackageSpecificWarningProperties.CreatePackageSpecificWarningProperties(packageSpec);

            // Assert
            Assert.True(warningProperties.Contains(NuGetLogCode.NU1603, "test_library_1", net45Framework));
            Assert.True(warningProperties.Contains(NuGetLogCode.NU1607, "test_library_1", net45Framework));
            Assert.False(warningProperties.Contains(NuGetLogCode.NU1603, "test_library", net45Framework));
            Assert.False(warningProperties.Contains(NuGetLogCode.NU1701, "test_library_1", net45Framework));
            Assert.False(warningProperties.Contains(NuGetLogCode.NU1603, "test_library_1", netcoreappFramework));

            Assert.True(warningProperties.Contains(NuGetLogCode.NU1603, "test_library_2", netcoreappFramework));
            Assert.True(warningProperties.Contains(NuGetLogCode.NU1605, "test_library_2", netcoreappFramework));
            Assert.False(warningProperties.Contains(NuGetLogCode.NU1603, "test_library", netcoreappFramework));
            Assert.False(warningProperties.Contains(NuGetLogCode.NU1701, "test_library_2", netcoreappFramework));
            Assert.False(warningProperties.Contains(NuGetLogCode.NU1603, "test_library_2", net45Framework));
        }
        public void ExtractPackageSpecificNoWarnForFramework_InputWithProperties()
        {
            // Arrange

            var packageId1 = "test_id1";
            var packageId2 = "test_id2";
            var net461     = NuGetFramework.Parse("net461");
            var netcoreapp = NuGetFramework.Parse("netcoreapp2.0");
            var input      = new PackageSpecificWarningProperties();

            input.AddRangeOfCodes(
                new List <NuGetLogCode> {
                NuGetLogCode.NU1601, NuGetLogCode.NU1605
            },
                packageId1,
                net461);
            input.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId2,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            input.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId1,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            input.AddRangeOfFrameworks(
                NuGetLogCode.NU1701,
                packageId2,
                new List <NuGetFramework> {
                net461, netcoreapp
            });
            input.AddRangeOfFrameworks(
                NuGetLogCode.NU1604,
                packageId1,
                new List <NuGetFramework> {
                net461
            });

            var expected = new Dictionary <NuGetFramework, Dictionary <string, HashSet <NuGetLogCode> > >
            {
                [net461] = new Dictionary <string, HashSet <NuGetLogCode> >(StringComparer.OrdinalIgnoreCase)
                {
                    [packageId1.ToUpper()] = new HashSet <NuGetLogCode>
                    {
                        NuGetLogCode.NU1601,
                        NuGetLogCode.NU1604,
                        NuGetLogCode.NU1605,
                        NuGetLogCode.NU1701,
                    },
                    [packageId2.ToUpper()] = new HashSet <NuGetLogCode>
                    {
                        NuGetLogCode.NU1701
                    }
                },
                [netcoreapp] = new Dictionary <string, HashSet <NuGetLogCode> >(StringComparer.OrdinalIgnoreCase)
                {
                    [packageId1.ToLower()] = new HashSet <NuGetLogCode>
                    {
                        NuGetLogCode.NU1701,
                    },
                    [packageId2.ToLower()] = new HashSet <NuGetLogCode>
                    {
                        NuGetLogCode.NU1701
                    }
                }
            };

            // Act
            var resultNet461     = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(input, net461);
            var resultNetcoreapp = TransitiveNoWarnUtils.ExtractPackageSpecificNoWarnForFramework(input, netcoreapp);

            // Assert
            resultNet461.Should().NotBeNull();
            resultNet461.Should().BeEquivalentTo(expected[net461]);
            resultNetcoreapp.Should().NotBeNull();
            resultNetcoreapp.Should().BeEquivalentTo(expected[netcoreapp]);
        }