예제 #1
0
        private IPackageSearchMetadata CreatePackageSearchResult(IPackage package, SearchFilter filter, CancellationToken cancellationToken)
        {
            var metadata = new PackageSearchMetadata(package);

            return(metadata
                   .WithVersions(() => GetVersions(package, filter, CancellationToken.None)));
        }
        public static PackageUpdateSet UpdateSetFor(PackageIdentity package, DateTimeOffset published, params PackageInProject[] packages)
        {
            var latest = new PackageSearchMetadata(package, OfficialPackageSource(), published, null);

            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);

            return(new PackageUpdateSet(updates, packages));
        }
        public static PackageUpdateSet ForNewVersion(PackageIdentity newPackage, params PackageInProject[] packages)
        {
            var publishedDate = new DateTimeOffset(2018, 2, 19, 11, 12, 7, TimeSpan.Zero);
            var latest        = new PackageSearchMetadata(newPackage, OfficialPackageSource(), publishedDate, null);

            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);

            return(new PackageUpdateSet(updates, packages));
        }
예제 #4
0
        public static PackageUpdateSet UpdateSetFor(PackageVersionRange package, params PackageInProject[] packages)
        {
            var publishedDate = new DateTimeOffset(2018, 2, 19, 11, 12, 7, TimeSpan.Zero);
            var latest        = new PackageSearchMetadata(package.SingleVersionIdentity(), new PackageSource("http://none"), publishedDate, null);

            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);

            return(new PackageUpdateSet(updates, packages));
        }
예제 #5
0
        private static void ApiHasNewVersionForPackage(IApiPackageLookup lookup, string packageName)
        {
            var responseMetaData = new PackageSearchMetadata(
                new PackageIdentity(packageName, new NuGetVersion(2, 3, 4)), new PackageSource("http://none"),
                DateTimeOffset.Now, null);

            lookup.FindVersionUpdate(Arg.Is <PackageIdentity>(pm => pm.Id == packageName),
                                     Arg.Any <NuGetSources>(), Arg.Any <VersionChange>(), Arg.Any <UsePrerelease>())
            .Returns(new PackageLookupResult(VersionChange.Major, responseMetaData, responseMetaData, responseMetaData));
        }
예제 #6
0
        private PackageUpdateSet BuildPackageUpdateSet(PackageInProject pip)
        {
            var package = new PackageIdentity(pip.Id, new NuGetVersion("1.4.5"));
            var latest  = new PackageSearchMetadata(package, new PackageSource("http://none"), null, null);

            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);

            return(new PackageUpdateSet(updates, new List <PackageInProject> {
                pip
            }));
        }
        public static PackageUpdateSet ForInternalSource(params PackageInProject[] packages)
        {
            var newPackage    = new PackageIdentity("foo.bar", new NuGetVersion("1.2.3"));
            var publishedDate = new DateTimeOffset(2018, 2, 19, 11, 12, 7, TimeSpan.Zero);
            var latest        = new PackageSearchMetadata(newPackage,
                                                          InternalPackageSource(), publishedDate, null);

            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);

            return(new PackageUpdateSet(updates, packages));
        }
        public static PackageUpdateSet For(
            PackageIdentity package,
            DateTimeOffset published,
            IEnumerable <PackageInProject> packages,
            IEnumerable <PackageDependency> dependencies)
        {
            var latest  = new PackageSearchMetadata(package, OfficialPackageSource(), published, dependencies);
            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);

            return(new PackageUpdateSet(updates, packages));
        }
        public static PackageUpdateSet LimitedToMinor(DateTimeOffset?publishedAt,
                                                      params PackageInProject[] packages)
        {
            var latestId = new PackageIdentity("foo.bar", new NuGetVersion("2.3.4"));
            var latest   = new PackageSearchMetadata(latestId, OfficialPackageSource(), publishedAt, null);

            var match = new PackageSearchMetadata(
                new PackageIdentity("foo.bar", new NuGetVersion("1.2.3")), OfficialPackageSource(), null, null);

            var updates = new PackageLookupResult(VersionChange.Minor, latest, match, null);

            return(new PackageUpdateSet(updates, packages));
        }
        /// <summary>
        /// Gets an array of version information for a specific package.
        /// </summary>
        /// <param name="metadata">Specific package used to obtain the version information.</param>
        /// <param name="filter">Additional details used to limit the search results.</param>
        /// <returns>An instance of <see cref="IEnumerable{VersionInfo}"/> containing version information.</returns>
        private static IEnumerable <VersionInfo> GetVersions(PackageSearchMetadata metadata, SearchFilter filter)
        {
            var parsedVersions     = metadata.ParsedVersions;
            var totalDownloadCount = parsedVersions
                                     .Select(v => v.DownloadCount)
                                     .Sum();

            return(parsedVersions
                   .Select(v => v.Version)
                   .Where(v => filter.IncludePrerelease || !v.IsPrerelease)
                   .Concat(new [] { metadata.Version })
                   .Distinct()
                   .Select(v => new VersionInfo(v, totalDownloadCount))
                   .ToArray());
        }
예제 #11
0
        private static PackageUpdateSet UpdateFoobarFromOneVersion()
        {
            var newPackage = LatestVersionOfPackageFoobar();

            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject("foobar", "1.0.1", PathToProjectOne()),
                new PackageInProject("foobar", "1.0.1", PathToProjectTwo())
            };

            var latest = new PackageSearchMetadata(newPackage, new PackageSource("http://none"), DateTimeOffset.Now, null);

            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);

            return(new PackageUpdateSet(updates, currentPackages));
        }
예제 #12
0
        private static PackageUpdateSet UpdateBarFromTwoVersions(TimeSpan?packageAge = null)
        {
            var pubDate = DateTimeOffset.Now.Subtract(packageAge ?? TimeSpan.Zero);

            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject("bar", "1.0.1", PathToProjectOne()),
                new PackageInProject("bar", "1.2.1", PathToProjectTwo())
            };

            var matchId = new PackageIdentity("bar", new NuGetVersion("4.0.0"));
            var match   = new PackageSearchMetadata(matchId, new PackageSource("http://none"), pubDate, null);

            var updates = new PackageLookupResult(VersionChange.Major, match, null, null);

            return(new PackageUpdateSet(updates, currentPackages));
        }
        private static PackageUpdateSet MakeUpdateSet(string id)
        {
            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject(id, "1.0.0", new PackagePath("base", "rel", PackageReferenceType.ProjectFile)),
                new PackageInProject(id, "2.0.0", new PackagePath("base", "rel", PackageReferenceType.ProjectFile)),
            };

            var majorUpdate = new PackageSearchMetadata(
                new PackageIdentity(
                    id,
                    new NuGetVersion("3.0.0")),
                new PackageSource("https://api.nuget.org/v3/index.json"), null, null);

            var lookupResult = new PackageLookupResult(VersionChange.Major, majorUpdate, null, null);

            return(new PackageUpdateSet(lookupResult, currentPackages));
        }
        public static PackageUpdateSet MakeUpdateSet(string packageName,
                                                     string version = "1.2.3",
                                                     PackageReferenceType packageRefType = PackageReferenceType.ProjectFile)
        {
            var packageId = PackageVersionRange.Parse(packageName, version);

            var latest = new PackageSearchMetadata(
                packageId.SingleVersionIdentity(), OfficialPackageSource(),
                null,
                Enumerable.Empty <PackageDependency>());

            var packages = new PackageLookupResult(VersionChange.Major, latest, null, null);

            var pip = new PackageInProject(packageId, MakePackagePath(packageRefType), null)
                      .InList();

            return(new PackageUpdateSet(packages, pip));
        }
        // todo move these to PackageUpdates.
        public static PackageUpdateSet UpdateFooFromOneVersion(TimeSpan?packageAge = null)
        {
            var pubDate = DateTimeOffset.Now.Subtract(packageAge ?? TimeSpan.Zero);

            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject("foo", "1.0.1", PathToProjectOne()),
                new PackageInProject("foo", "1.0.1", PathToProjectTwo())
            };

            var matchVersion = new NuGetVersion("4.0.0");
            var match        = new PackageSearchMetadata(new PackageIdentity("foo", matchVersion),
                                                         OfficialPackageSource(), pubDate, null);

            var updates = new PackageLookupResult(VersionChange.Major, match, null, null);

            return(new PackageUpdateSet(updates, currentPackages));
        }
        public void WhenThereIsAMajorUpdate()
        {
            var logger   = Substitute.For <INuKeeperLogger>();
            var reporter = new PackageLookupResultReporter(logger);

            var fooMetadata = new PackageSearchMetadata(
                new PackageIdentity("foo", new NuGetVersion(2, 3, 4)),
                new PackageSource("http://none"), DateTimeOffset.Now, null);

            var data = new PackageLookupResult(VersionChange.Major, fooMetadata, fooMetadata, fooMetadata);

            reporter.Report(data);

            logger.Received()
            .Detailed("Selected update of package foo to highest version, 2.3.4.");
            logger.DidNotReceive().Error(Arg.Any <string>());
            logger.DidNotReceive().Minimal(Arg.Any <string>());
            logger.DidNotReceive().Normal(Arg.Any <string>());
        }
        public void WhenThereIsAMajorUpdateThatCannotBeUsed()
        {
            var logger   = Substitute.For <INuKeeperLogger>();
            var reporter = new PackageLookupResultReporter(logger);

            var fooMajor = new PackageSearchMetadata(
                new PackageIdentity("foo", new NuGetVersion(3, 0, 0)),
                new PackageSource("http://none"), DateTimeOffset.Now, null);

            var data = new PackageLookupResult(VersionChange.Minor, fooMajor, null, null);

            reporter.Report(data);

            logger.Received()
            .Normal("Package foo version 3.0.0 is available but is not allowed. Allowing Minor version updates.");
            logger.DidNotReceive().Error(Arg.Any <string>());
            logger.DidNotReceive().Minimal(Arg.Any <string>());
            logger.DidNotReceive().Detailed(Arg.Any <string>());
        }
        private static string PackageVersionAndDate(NuGetVersion baseline, PackageSearchMetadata packageVersion)
        {
            const string none = ",";

            if (packageVersion == null)
            {
                return(none);
            }

            if (packageVersion.Identity.Version <= baseline)
            {
                return(none);
            }

            var version = packageVersion.Identity.Version;
            var date    = DateFormat.AsUtcIso8601(packageVersion.Published);

            return($"{version},{date}");
        }
        public void OneUpdate_IsValid()
        {
            var fooVersionFour = new PackageIdentity("foo", VersionFour());
            var highest        = new PackageSearchMetadata(fooVersionFour, _source, DateTimeOffset.Now, null);

            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject("foo", "1.0.0", PathToProjectOne())
            };

            var lookupResult = new PackageLookupResult(VersionChange.Major, highest, null, null);
            var updates      = new PackageUpdateSet(lookupResult, currentPackages);

            Assert.That(updates, Is.Not.Null);

            Assert.That(updates.Packages.Major?.Identity.Version, Is.EqualTo(VersionFour()));
            Assert.That(updates.AllowedChange, Is.EqualTo(VersionChange.Major));

            Assert.That(updates.Selected, Is.Not.Null);
            Assert.That(updates.Selected.Identity, Is.EqualTo(fooVersionFour));
            Assert.That(updates.SelectedId, Is.EqualTo("foo"));
            Assert.That(updates.SelectedVersion, Is.EqualTo(highest.Identity.Version));
            Assert.That(updates.Selected.Source, Is.EqualTo(_source));
        }
예제 #20
0
 public NuspecReaderMock(PackageSearchMetadata data) : base(new XDocument())
 {
     _data = data;
 }
예제 #21
0
 private static void AssertPackageIdentityIs(PackageSearchMetadata package, string id)
 {
     Assert.That(package, Is.Not.Null);
     Assert.That(package.Identity, Is.Not.Null);
     Assert.That(package.Identity.Id, Is.EqualTo(id));
 }
예제 #22
0
        private static PackageSearchMetadata FilteredPackageVersion(NuGetVersion baseline, PackageSearchMetadata packageVersion)
        {
            if (packageVersion == null)
            {
                return(null);
            }

            if (packageVersion.Identity.Version <= baseline)
            {
                return(null);
            }

            return(packageVersion);
        }