public void GivenRangeOf1To2VerifyBestMatch(string expected, string versionStrings) { var range = VersionRange.Parse("[1.0.0, 2.0.0]"); var versions = new SortedSet <NuGetVersion>(versionStrings.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(NuGetVersion.Parse)); UnresolvedMessages.GetBestMatch(versions, range).Should().BeEquivalentTo(NuGetVersion.Parse(expected)); }
public async Task GivenAnUnresolvedPackageWithNoVersionsAndMultipleSourcesVerifyMessage() { var range = new LibraryRange("x", LibraryDependencyTarget.Package); var versions = new List <NuGetVersion>(); var token = CancellationToken.None; var logger = new TestLogger(); var provider1 = GetProvider("http://nuget.org/a/", versions); var provider2 = GetProvider("http://nuget.org/b/", versions); var cacheContext = new Mock <SourceCacheContext>(); var remoteWalkContext = new RemoteWalkContext(cacheContext.Object, NullLogger.Instance); remoteWalkContext.RemoteLibraryProviders.Add(provider1.Object); remoteWalkContext.RemoteLibraryProviders.Add(provider2.Object); var graph = new Mock <IRestoreTargetGraph>(); graph.SetupGet(e => e.TargetGraphName).Returns("abc"); var message = await UnresolvedMessages.GetMessageAsync(graph.Object, range, remoteWalkContext, logger, token); message.Code.Should().Be(NuGetLogCode.NU1101); message.LibraryId.Should().Be("x"); message.Message.Should().Be("Unable to find package x. No packages exist with this id in source(s): http://nuget.org/a/, http://nuget.org/b/"); message.TargetGraphs.ShouldBeEquivalentTo(new[] { "abc" }); message.Level.Should().Be(LogLevel.Error); }
public void GivenAStableRangeAndAPreRelVersionInRangeVerifyHasPrereleaseVersionsOnlyTrue() { var range = VersionRange.Parse("1.0.0"); var versions = new[] { NuGetVersion.Parse("1.0.1-beta") }; UnresolvedMessages.HasPrereleaseVersionsOnly(range, versions).Should().BeTrue(); }
public async Task GivenAMultipleSourcesVerifyInfosReturned() { var versions1 = new[] { NuGetVersion.Parse("1.0.0"), NuGetVersion.Parse("2.0.0"), NuGetVersion.Parse("3.0.0-beta"), }; var versions2 = new[] { NuGetVersion.Parse("1.0.0") }; var provider1 = GetProvider("http://nuget.org/a/", versions1); var provider2 = GetProvider("http://nuget.org/b/", versions2); var cacheContext = new Mock <SourceCacheContext>(); var remoteWalkContext = new RemoteWalkContext(cacheContext.Object, NullLogger.Instance); remoteWalkContext.RemoteLibraryProviders.Add(provider1.Object); remoteWalkContext.RemoteLibraryProviders.Add(provider2.Object); var infos = await UnresolvedMessages.GetSourceInfosForIdAsync("a", VersionRange.Parse("1.0.0"), remoteWalkContext, NullLogger.Instance, CancellationToken.None); infos.Count.Should().Be(2); infos[0].Value.ShouldBeEquivalentTo(versions1); infos[1].Value.ShouldBeEquivalentTo(versions2); infos[0].Key.Source.Should().Be("http://nuget.org/a/"); infos[1].Key.Source.Should().Be("http://nuget.org/b/"); }
public void GivenNoVersionsVerifyBestMatch() { var range = VersionRange.Parse("2.0.0"); var versions = new SortedSet <NuGetVersion>(); UnresolvedMessages.GetBestMatch(versions, range).Should().BeNull(); }
public void GivenAStableRangeAndAStableVersionOutOfRangeVerifyHasPrereleaseVersionsOnlyFalse() { var range = VersionRange.Parse("2.0.0"); var versions = new[] { NuGetVersion.Parse("1.0.0") }; UnresolvedMessages.HasPrereleaseVersionsOnly(range, versions).Should().BeFalse(); }
public async Task GetMessageAsync_WithPackageSourceMappingAndProvidersNotConsidered_NU1101IncludesSourceMappingDetails() { var libraryId = "x"; var range = new LibraryRange(libraryId, LibraryDependencyTarget.Package); bool isPackageSourceMappingEnabled = true; var provider1 = GetProvider("http://nuget.org/a/", new List <NuGetVersion>()); var provider2 = GetProvider("http://nuget.org/b/", new List <NuGetVersion>()); var provider3 = GetProvider("http://nuget.org/c/", new List <NuGetVersion>()); var enabledProviders = new List <IRemoteDependencyProvider>() { provider1.Object }; var allProviders = new List <IRemoteDependencyProvider>() { provider3.Object, provider1.Object, provider2.Object }; var targetGraphName = "targetGraphName"; var message = await UnresolvedMessages.GetMessageAsync(targetGraphName, range, enabledProviders, isPackageSourceMappingEnabled, allProviders, new Mock <SourceCacheContext>().Object, new TestLogger(), CancellationToken.None); message.Code.Should().Be(NuGetLogCode.NU1101); message.LibraryId.Should().Be(libraryId); message.Message.Should().Be($"Unable to find package x. No packages exist with this id in source(s): http://nuget.org/a/. PackageSourceMapping is enabled, the following source(s) were not considered: http://nuget.org/b/, http://nuget.org/c/."); message.TargetGraphs.Should().BeEquivalentTo(new[] { targetGraphName }); message.Level.Should().Be(LogLevel.Error); }
[InlineData("[1.*, 2.0.0]", "3.0.0", "0.1.0,0.3.0,3.0.0,4.0.0")] // lower bound, upper bound, floating - Version immediately above upper bound chosen public void GivenVersionRangeVerifyBestMatch(string versionRange, string expectedVersion, string versionStrings) { var range = VersionRange.Parse(versionRange); var versions = new SortedSet <NuGetVersion>(versionStrings.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(NuGetVersion.Parse)); Assert.Null(range.FindBestMatch(versions)); UnresolvedMessages.GetBestMatch(versions, range).Should().BeEquivalentTo(NuGetVersion.Parse(expectedVersion)); }
public void GivenARangeWithExclusiveBoundsVerifyExactMatchesCanStillBeSelectedForUpper() { var range = VersionRange.Parse("(1.0.0, 2.0.0)"); var versions = new SortedSet <NuGetVersion>() { NuGetVersion.Parse("2.0.0") }; UnresolvedMessages.GetBestMatch(versions, range).Should().BeEquivalentTo(NuGetVersion.Parse("2.0.0")); }
public void GivenASourceInfoWithNoVersionsVerifyOutputString() { var range = VersionRange.Parse("2.0.0"); var sourceInfo = new KeyValuePair <PackageSource, SortedSet <NuGetVersion> >( key: new PackageSource("http://nuget.org/a/"), value: new SortedSet <NuGetVersion>()); var s = UnresolvedMessages.FormatSourceInfo(sourceInfo, range); s.Should().Be("Found 0 version(s) in http://nuget.org/a/"); }
public void GivenASourceInfoVerifyFullFormatting() { var range = VersionRange.Parse("2.0.0"); var sourceInfo = new KeyValuePair <PackageSource, SortedSet <NuGetVersion> >( key: new PackageSource("http://nuget.org/a/"), value: new SortedSet <NuGetVersion>() { NuGetVersion.Parse("1.0.0") }); var s = UnresolvedMessages.FormatSourceInfo(sourceInfo, range); s.Should().Be("Found 1 version(s) in http://nuget.org/a/ [ Nearest version: 1.0.0 ]"); }
public async Task GivenAnUnreachableSource_DoesNotThrow() { var source = new PackageSource("http://nuget.org/a/"); var context = new Mock <SourceCacheContext>(); var provider = new Mock <IRemoteDependencyProvider>(); provider.Setup(e => e.GetAllVersionsAsync(It.IsAny <string>(), It.IsAny <SourceCacheContext>(), It.IsAny <ILogger>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => null); // unreachable sources would return null provider.SetupGet(e => e.Source).Returns(source); var info = await UnresolvedMessages.GetSourceInfoForIdAsync(provider.Object, "a", context.Object, NullLogger.Instance, CancellationToken.None); info.Value.Should().BeEmpty(); info.Key.Source.Should().Be(source.Source); }
private static async Task <RestoreLogMessage> GetMessage(LibraryRange range, List <NuGetVersion> versions) { var token = CancellationToken.None; var logger = new TestLogger(); var provider = GetProvider("http://nuget.org/a/", versions); var cacheContext = new Mock <SourceCacheContext>(); var remoteLibraryProviders = new List <IRemoteDependencyProvider>() { provider.Object }; var targetGraphName = "abc"; var message = await UnresolvedMessages.GetMessageAsync(targetGraphName, range, remoteLibraryProviders, false, remoteLibraryProviders, cacheContext.Object, logger, token); return(message); }
private static async Task <RestoreLogMessage> GetMessage(LibraryRange range, List <NuGetVersion> versions) { var token = CancellationToken.None; var logger = new TestLogger(); var provider = GetProvider("http://nuget.org/a/", versions); var cacheContext = new Mock <SourceCacheContext>(); var remoteWalkContext = new RemoteWalkContext(cacheContext.Object, NullLogger.Instance); remoteWalkContext.RemoteLibraryProviders.Add(provider.Object); var graph = new Mock <IRestoreTargetGraph>(); graph.SetupGet(e => e.TargetGraphName).Returns("abc"); var message = await UnresolvedMessages.GetMessageAsync(graph.Object, range, remoteWalkContext, logger, token); return(message); }
public async Task GivenAnEmptySourceVerifySourceInfoContainsAllVersions() { var versions = new[] { NuGetVersion.Parse("1.0.0"), NuGetVersion.Parse("2.0.0"), NuGetVersion.Parse("3.0.0-beta"), }; var source = new PackageSource("http://nuget.org/a/"); var context = new Mock <SourceCacheContext>(); var provider = new Mock <IRemoteDependencyProvider>(); provider.Setup(e => e.GetAllVersionsAsync(It.IsAny <string>(), It.IsAny <SourceCacheContext>(), It.IsAny <ILogger>(), It.IsAny <CancellationToken>())) .ReturnsAsync(() => versions); provider.SetupGet(e => e.Source).Returns(source); var info = await UnresolvedMessages.GetSourceInfoForIdAsync(provider.Object, "a", context.Object, NullLogger.Instance, CancellationToken.None); info.Value.Should().BeEquivalentTo(versions); info.Key.Source.Should().Be(source.Source); }
public async Task GetMessageAsync_WithPackageSourceMappingAndProvidersNotConsidered_NU1102IncludesSourceMappingDetails() { var libraryId = "x"; var range = new LibraryRange(libraryId, VersionRange.Parse("6.0.0"), LibraryDependencyTarget.Package); bool isPackageSourceMappingEnabled = true; var provider1 = GetProvider("http://nuget.org/a/", new List <NuGetVersion>() { NuGetVersion.Parse("6.0.0") }); var provider2 = GetProvider("http://nuget.org/b/", new List <NuGetVersion>()); var provider3 = GetProvider("http://nuget.org/c/", new List <NuGetVersion>()); var enabledProviders = new List <IRemoteDependencyProvider>() { provider1.Object }; var allProviders = new List <IRemoteDependencyProvider>() { provider3.Object, provider1.Object, provider2.Object }; var targetGraphName = "targetGraphName"; var message = await UnresolvedMessages.GetMessageAsync(targetGraphName, range, enabledProviders, isPackageSourceMappingEnabled, allProviders, new Mock <SourceCacheContext>().Object, new TestLogger(), CancellationToken.None); message.Code.Should().Be(NuGetLogCode.NU1102); message.LibraryId.Should().Be(libraryId); message.Message.Should().Be($"Unable to find package x with version (>= 6.0.0)" + Environment.NewLine + " - Found 1 version(s) in http://nuget.org/a/ [ Nearest version: 6.0.0 ]" + Environment.NewLine + " - Versions from http://nuget.org/b/ were not considered" + Environment.NewLine + " - Versions from http://nuget.org/c/ were not considered" ); message.TargetGraphs.Should().BeEquivalentTo(new[] { targetGraphName }); message.Level.Should().Be(LogLevel.Error); }
public async Task GivenAnUnresolvedPackageWithNoVersionsAndMultipleSourcesVerifyMessage() { var range = new LibraryRange("x", LibraryDependencyTarget.Package); var versions = new List <NuGetVersion>(); var token = CancellationToken.None; var logger = new TestLogger(); var provider1 = GetProvider("http://nuget.org/a/", versions); var provider2 = GetProvider("http://nuget.org/b/", versions); var cacheContext = new Mock <SourceCacheContext>(); var remoteLibraryProviders = new List <IRemoteDependencyProvider>() { provider1.Object, provider2.Object }; var targetGraphName = "abc"; var message = await UnresolvedMessages.GetMessageAsync(targetGraphName, range, remoteLibraryProviders, cacheContext.Object, logger, token); message.Code.Should().Be(NuGetLogCode.NU1101); message.LibraryId.Should().Be("x"); message.Message.Should().Be("Unable to find package x. No packages exist with this id in source(s): http://nuget.org/a/, http://nuget.org/b/"); message.TargetGraphs.Should().BeEquivalentTo(new[] { targetGraphName }); message.Level.Should().Be(LogLevel.Error); }
public void GivenAStableRangeAndNoVersionsVerifyHasPrereleaseVersionsOnlyFalse() { var range = VersionRange.Parse("1.0.0"); UnresolvedMessages.HasPrereleaseVersionsOnly(range, new List <NuGetVersion>()).Should().BeFalse(); }
public void GivenANullRangeVerifyIsPrereleaseAllowedFalse(string s) { UnresolvedMessages.IsPrereleaseAllowed(null).Should().BeFalse(); }
public void GivenAStableRangeVerifyIsPrereleaseAllowedTrue(string s) { var range = VersionRange.Parse(s); UnresolvedMessages.IsPrereleaseAllowed(range).Should().BeTrue(); }
public async Task GivenAMultipleSourcesVerifyInfosReturned() { var versions1 = new[] { NuGetVersion.Parse("1.0.0"), NuGetVersion.Parse("2.0.0"), NuGetVersion.Parse("3.0.0-beta"), }; var versions2 = new[] { NuGetVersion.Parse("1.0.0") }; var provider1 = GetProvider("http://nuget.org/a/", versions1); var provider2 = GetProvider("http://nuget.org/b/", versions2); var cacheContext = new Mock <SourceCacheContext>(); var remoteLibraryProviders = new List <IRemoteDependencyProvider>() { provider1.Object, provider2.Object }; List <KeyValuePair <PackageSource, SortedSet <NuGetVersion> > > infos = await UnresolvedMessages.GetSourceInfosForIdAsync(id : "a", remoteLibraryProviders : remoteLibraryProviders, sourceCacheContext : cacheContext.Object, logger : NullLogger.Instance, token : CancellationToken.None); infos.Count.Should().Be(2); infos[0].Value.Should().BeEquivalentTo(versions1); infos[1].Value.Should().BeEquivalentTo(versions2); infos[0].Key.Source.Should().Be("http://nuget.org/a/"); infos[1].Key.Source.Should().Be("http://nuget.org/b/"); }