public Task <bool> ProcessPackageDetailsAsync(PackageDetailsCatalogLeaf leaf)
        {
            Console.WriteLine(
                $"{leaf.CommitTimestamp:O}: Found package details leaf for {leaf.PackageId} {leaf.PackageVersion}.");

            return(GetResultAsync(leaf));
        }
Пример #2
0
        /// <summary>
        /// Determines if the provided package details list represents a listed package.
        /// </summary>
        /// <param name="leaf">The catalog leaf.</param>
        /// <returns>True if the package is listed.</returns>
        public static bool IsListed(this PackageDetailsCatalogLeaf leaf)
        {
            if (leaf.Listed.HasValue)
            {
                return(leaf.Listed.Value);
            }

            // A published year of 1900 indicates that this package is unlisted, when the listed property itself is
            // not present (legacy behavior).
            return(leaf.Published.Year == 1900);
        }
Пример #3
0
            public void PrefersListedProperty(string published, bool listed)
            {
                var leaf = new PackageDetailsCatalogLeaf
                {
                    Published = DateTimeOffset.Parse(published),
                };

                var actual = leaf.IsListed();

                Assert.Equal(listed, actual);
            }
Пример #4
0
            public void SemVer2PackageVersionMeansSemVer2(string packageVersion, bool isSemVer2)
            {
                var leaf = new PackageDetailsCatalogLeaf
                {
                    PackageVersion  = packageVersion,
                    VerbatimVersion = "1.0.0",
                };

                var actual = leaf.IsSemVer2();

                Assert.Equal(isSemVer2, actual);
            }
Пример #5
0
            public void AllowsNullDependencyGroups()
            {
                var leaf = new PackageDetailsCatalogLeaf
                {
                    PackageVersion  = "1.0.0",
                    VerbatimVersion = "1.0.0",
                };

                var actual = leaf.IsSemVer2();

                Assert.False(actual);
            }
Пример #6
0
        /// <summary>
        /// Determines if the provided package details leaf represents a listed package.
        /// </summary>
        /// <param name="leaf">The catalog leaf.</param>
        /// <returns>True if the package is listed.</returns>
        public static bool IsListed(this PackageDetailsCatalogLeaf leaf)
        {
            if (leaf.Listed.HasValue)
            {
                return(leaf.Listed.Value);
            }

            // A published year of 1900 indicates that this package is unlisted, when the listed property itself is
            // not present (legacy behavior).
            // Example: https://api.nuget.org/v3/catalog0/data/2015.02.01.06.22.45/antixss.4.0.1.json
            return(leaf.Published.Year != 1900);
        }
Пример #7
0
        /// <summary>
        /// Determines if the provied package details leaf represents a SemVer 2.0.0 package. A package is considered
        /// SemVer 2.0.0 if it's version is SemVer 2.0.0 or one of its dependency version ranges is SemVer 2.0.0.
        /// </summary>
        /// <param name="leaf">The catalog leaf.</param>
        /// <returns>True if the package is SemVer 2.0.0.</returns>
        public static bool IsSemVer2(this PackageDetailsCatalogLeaf leaf)
        {
            var parsedPackageVersion = leaf.ParsePackageVersion();

            if (parsedPackageVersion.IsSemVer2)
            {
                return(true);
            }

            if (leaf.VerbatimVersion != null)
            {
                var parsedVerbatimVersion = NuGetVersion.Parse(leaf.VerbatimVersion);
                if (parsedVerbatimVersion.IsSemVer2)
                {
                    return(true);
                }
            }

            if (leaf.DependencyGroups != null)
            {
                foreach (var dependencyGroup in leaf.DependencyGroups)
                {
                    // Example: https://api.nuget.org/v3/catalog0/data/2018.10.28.07.42.42/mvcsitemapprovider.3.3.0-pre1.json
                    if (dependencyGroup.Dependencies == null)
                    {
                        continue;
                    }

                    foreach (var dependency in dependencyGroup.Dependencies)
                    {
                        var versionRange = dependency.ParseRange();
                        if ((versionRange.MaxVersion != null && versionRange.MaxVersion.IsSemVer2) ||
                            (versionRange.MinVersion != null && versionRange.MinVersion.IsSemVer2))
                        {
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Пример #8
0
            public void SemVer2DependencyVersionRangeMeansSemVer2(string range, bool isSemVer2)
            {
                var leaf = new PackageDetailsCatalogLeaf
                {
                    PackageVersion   = "1.0.0",
                    VerbatimVersion  = "1.0.0",
                    DependencyGroups = new List <PackageDependencyGroup>
                    {
                        new PackageDependencyGroup
                        {
                            Dependencies = new List <PackageDependency>
                            {
                                new PackageDependency
                                {
                                    Range = "0.0.0",
                                },
                            },
                        },
                        new PackageDependencyGroup
                        {
                            Dependencies = new List <PackageDependency>
                            {
                                new PackageDependency
                                {
                                    Range = "0.0.1",
                                },
                                new PackageDependency
                                {
                                    Range = range,
                                },
                            },
                        },
                    },
                };

                var actual = leaf.IsSemVer2();

                Assert.Equal(isSemVer2, actual);
            }
Пример #9
0
            public void AllowsNullVerbatimVersion()
            {
                var leaf = new PackageDetailsCatalogLeaf
                {
                    PackageVersion   = "1.0.0",
                    DependencyGroups = new List <PackageDependencyGroup>
                    {
                        new PackageDependencyGroup
                        {
                            Dependencies = new List <PackageDependency>
                            {
                                new PackageDependency
                                {
                                    Range = "[1.0.0, )",
                                },
                            },
                        },
                    },
                };

                var actual = leaf.IsSemVer2();

                Assert.False(actual);
            }