public async Task GivenAProjectWithNoIssuesVerifyNoMessagesLogged() { var testLogger = new TestLogger(); var range = VersionRange.Parse("[1.0.0, 3.0.0)"); var tfi = GetTFI(NuGetFramework.Parse("net46"), new LibraryRange("x", range, LibraryDependencyTarget.Package)); var project = new PackageSpec(tfi) { Name = "proj" }; var flattened = new HashSet <GraphItem <RemoteResolveResult> > { new GraphItem <RemoteResolveResult>(new LibraryIdentity("X", NuGetVersion.Parse("1.0.0"), LibraryType.Package)) }; var targetGraph = new Mock <IRestoreTargetGraph>(); targetGraph.SetupGet(e => e.Flattened).Returns(flattened); targetGraph.SetupGet(e => e.TargetGraphName).Returns("net46/win10"); targetGraph.SetupGet(e => e.Framework).Returns(NuGetFramework.Parse("net46")); var parent = new LibraryIdentity("z", NuGetVersion.Parse("9.0.0"), LibraryType.Package); var child = new LibraryIdentity("x", NuGetVersion.Parse("1.0.0"), LibraryType.Package); var dependency = new ResolvedDependencyKey(parent, VersionRange.Parse("[1.0.0, 3.0.0)"), child); var dependencySet = new HashSet <ResolvedDependencyKey>() { dependency }; targetGraph.SetupGet(e => e.ResolvedDependencies).Returns(dependencySet); var targetGraphs = new[] { targetGraph.Object }; var ignore = new HashSet <string>(); await UnexpectedDependencyMessages.LogAsync(targetGraphs, project, testLogger); testLogger.Warnings.Should().Be(0); }
public void GivenAGraphWithMultipleIssuesForTheSamePackageVerifyBothMessagesLogged() { var parent1 = new LibraryIdentity("x", NuGetVersion.Parse("9.0.0"), LibraryType.Package); var parent2 = new LibraryIdentity("y", NuGetVersion.Parse("8.0.0"), LibraryType.Package); var child1 = new LibraryIdentity("b", NuGetVersion.Parse("2.0.0"), LibraryType.Package); var child2 = new LibraryIdentity("b", NuGetVersion.Parse("3.0.0"), LibraryType.Package); var dependency1 = new ResolvedDependencyKey(parent1, VersionRange.Parse("(, 5.0.0]"), child1); var dependency2 = new ResolvedDependencyKey(parent2, VersionRange.Parse("(1.0.0, 6.0.0]"), child2); var dependencySet = new HashSet <ResolvedDependencyKey>() { dependency1, dependency2 }; var targetGraph = new Mock <IRestoreTargetGraph>(); targetGraph.SetupGet(e => e.ResolvedDependencies).Returns(dependencySet); targetGraph.SetupGet(e => e.TargetGraphName).Returns("net46/win10"); var targetGraphs = new[] { targetGraph.Object }; var ignore = new HashSet <string>(); var logs = UnexpectedDependencyMessages.GetMissingLowerBounds(targetGraphs, ignore).ToList(); logs.Select(e => e.Message).ShouldBeEquivalentTo(new[] { "x 9.0.0 does not provide an inclusive lower bound for dependency b (<= 5.0.0). An approximate best match of b 2.0.0 was resolved.", "y 8.0.0 does not provide an inclusive lower bound for dependency b (> 1.0.0 && <= 6.0.0). An approximate best match of b 3.0.0 was resolved." }); }
public void GivenARangeVerifyProjectsCountAsExactMatches() { var range = VersionRange.Parse("( , 1.0.0]"); var parent = new LibraryIdentity("a", NuGetVersion.Parse("9.0.0"), LibraryType.Project); var child = new LibraryIdentity("b", NuGetVersion.Parse("2.0.0"), LibraryType.Project); var dependency = new ResolvedDependencyKey(parent, range, child); UnexpectedDependencyMessages.DependencyRangeHasMissingExactMatch(dependency).Should().BeFalse("Project type should return false, regardless of the range."); }
public void GivenARangeVerifyItDoesNotHaveAnExactMatch(string rangeString, string childVersion) { var range = VersionRange.Parse(rangeString); var parent = new LibraryIdentity("a", NuGetVersion.Parse("9.0.0"), LibraryType.Package); var child = new LibraryIdentity("b", NuGetVersion.Parse(childVersion), LibraryType.Package); var dependency = new ResolvedDependencyKey(parent, range, child); UnexpectedDependencyMessages.DependencyRangeHasMissingExactMatch(dependency).Should().BeTrue(); }
public void GivenAPackageDidNotResolveToTheMinimumVerifyMessage() { var range = VersionRange.Parse("1.0.0"); var parent = new LibraryIdentity("a", NuGetVersion.Parse("9.0.0"), LibraryType.Package); var child = new LibraryIdentity("b", NuGetVersion.Parse("2.0.0"), LibraryType.Package); var dependency = new ResolvedDependencyKey(parent, range, child); var log = UnexpectedDependencyMessages.GetMissingLowerBoundMessage(dependency); log.Code.Should().Be(NuGetLogCode.NU1603); log.Message.Should().Be("a 9.0.0 depends on b (>= 1.0.0) but b 1.0.0 was not found. An approximate best match of b 2.0.0 was resolved."); }
public void GivenADependencyHasNoLowerBoundVerifyMessage() { var range = VersionRange.Parse("(, 5.0.0]"); var parent = new LibraryIdentity("a", NuGetVersion.Parse("9.0.0"), LibraryType.Package); var child = new LibraryIdentity("b", NuGetVersion.Parse("2.0.0"), LibraryType.Package); var dependency = new ResolvedDependencyKey(parent, range, child); var log = UnexpectedDependencyMessages.GetMissingLowerBoundMessage(dependency); log.Code.Should().Be(NuGetLogCode.NU1602); log.Message.Should().Be("a 9.0.0 does not provide an inclusive lower bound for dependency b (<= 5.0.0). An approximate best match of b 2.0.0 was resolved."); }
public async Task ProjectWithLockFile_NU1603_NotGenerated() { var testLogger = new TestLogger(); var range = VersionRange.Parse("2.0.0"); var tfi = GetTFI(NuGetFramework.Parse("net46"), new LibraryRange("x", range, LibraryDependencyTarget.Package)); var project = new PackageSpec(tfi) { Name = "proj", RestoreMetadata = new ProjectRestoreMetadata() { RestoreLockProperties = new RestoreLockProperties( restorePackagesWithLockFile: "true", nuGetLockFilePath: null, restoreLockedMode: true) } }; var flattened = new HashSet <GraphItem <RemoteResolveResult> > { new GraphItem <RemoteResolveResult>(new LibraryIdentity("X", NuGetVersion.Parse("2.0.0"), LibraryType.Package)) }; var targetGraph = new Mock <IRestoreTargetGraph>(); targetGraph.SetupGet(e => e.Flattened).Returns(flattened); targetGraph.SetupGet(e => e.TargetGraphName).Returns("net46/win10"); targetGraph.SetupGet(e => e.Framework).Returns(NuGetFramework.Parse("net46")); var parent = new LibraryIdentity("z", NuGetVersion.Parse("9.0.0"), LibraryType.Package); var child = new LibraryIdentity("x", NuGetVersion.Parse("2.0.0"), LibraryType.Package); var dependency = new ResolvedDependencyKey(parent, VersionRange.Parse("1.0.0"), child); var dependencySet = new HashSet <ResolvedDependencyKey>() { dependency }; targetGraph.SetupGet(e => e.ResolvedDependencies).Returns(dependencySet); var targetGraphs = new[] { targetGraph.Object }; var ignore = new HashSet <string>(); await UnexpectedDependencyMessages.LogAsync(targetGraphs, project, testLogger); testLogger.LogMessages.Select(e => e.Code).Should().NotContain(NuGetLogCode.NU1604); testLogger.LogMessages.Select(e => e.Code).Should().NotContain(NuGetLogCode.NU1601); testLogger.LogMessages.Select(e => e.Code).Should().NotContain(NuGetLogCode.NU1603); }
public void GivenAGraphIsMissingALowerBoundVerifyWarningIncludesGraphName() { var range = VersionRange.Parse("(, 5.0.0]"); var parent = new LibraryIdentity("a", NuGetVersion.Parse("9.0.0"), LibraryType.Package); var child = new LibraryIdentity("b", NuGetVersion.Parse("2.0.0"), LibraryType.Package); var dependency = new ResolvedDependencyKey(parent, range, child); var dependencySet = new HashSet <ResolvedDependencyKey>() { dependency }; var targetGraph = new Mock <IRestoreTargetGraph>(); targetGraph.SetupGet(e => e.ResolvedDependencies).Returns(dependencySet); targetGraph.SetupGet(e => e.TargetGraphName).Returns("net46/win10"); var targetGraphs = new[] { targetGraph.Object }; var ignore = new HashSet <string>(); var log = UnexpectedDependencyMessages.GetMissingLowerBounds(targetGraphs, ignore).Single(); log.TargetGraphs.ShouldBeEquivalentTo(new[] { "net46/win10" }); log.Code.Should().Be(NuGetLogCode.NU1602); }
public void GivenAGraphIsMissingALowerBoundAndIdIsIgnoredVerifyWarningSkipped() { var range = VersionRange.Parse("(, 5.0.0]"); var parent = new LibraryIdentity("a", NuGetVersion.Parse("9.0.0"), LibraryType.Package); var child = new LibraryIdentity("b", NuGetVersion.Parse("2.0.0"), LibraryType.Package); var dependency = new ResolvedDependencyKey(parent, range, child); var dependencySet = new HashSet <ResolvedDependencyKey>() { dependency }; var targetGraph = new Mock <IRestoreTargetGraph>(); targetGraph.SetupGet(e => e.ResolvedDependencies).Returns(dependencySet); targetGraph.SetupGet(e => e.TargetGraphName).Returns("net46/win10"); var targetGraphs = new[] { targetGraph.Object }; var ignore = new HashSet <string>() { "B" }; var logs = UnexpectedDependencyMessages.GetMissingLowerBounds(targetGraphs, ignore); logs.Should().BeEmpty(); }