コード例 #1
0
        public PackageUpdateSet(PackageLookupResult packages, IEnumerable <PackageInProject> currentPackages)
        {
            if (packages == null)
            {
                throw new ArgumentNullException(nameof(packages));
            }

            if (packages.Selected() == null)
            {
                throw new ArgumentException("packages does not have a selected update", nameof(packages));
            }

            Packages = packages;

            if (currentPackages == null)
            {
                throw new ArgumentNullException(nameof(currentPackages));
            }

            var currentPackagesList = currentPackages.ToList();

            if (!currentPackagesList.Any())
            {
                throw new ArgumentException($"{nameof(currentPackages)} is empty", nameof(currentPackages));
            }

            CurrentPackages = currentPackagesList;
            CheckIdConsistency();
        }
コード例 #2
0
        public static PackageUpdateSet UpdateSetFor(PackageIdentity package, DateTimeOffset published, params PackageInProject[] packages)
        {
            var latest = new PackageSearchMedatadata(package, OfficialPackageSource(), published, null);

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

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #3
0
        private static void AssertPackagesIdentityIs(PackageLookupResult packages, string id)
        {
            Assert.That(packages, Is.Not.Null);
            AssertPackageIdentityIs(packages.Major, id);
            AssertPackageIdentityIs(packages.Selected(), id);

            Assert.That(packages.Major.Identity.Version, Is.GreaterThanOrEqualTo(packages.Selected().Identity));
        }
コード例 #4
0
        public void NullPackages_IsNotAllowed()
        {
            var lookupResult = new PackageLookupResult(VersionChange.Major, LatestFooMetadata(), null, null);

            var exception = Assert.Throws <ArgumentNullException>(() => new PackageUpdateSet(lookupResult, null));

            Assert.That(exception.ParamName, Is.EqualTo("currentPackages"));
        }
コード例 #5
0
        private static PackageUpdateSet UpdateSetFor(PackageIdentity package, DateTimeOffset published,
                                                     List <PackageInProject> packages, List <PackageDependency> deps)
        {
            var latest = new PackageSearchMedatadata(package, new PackageSource("http://none"), published, deps);

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

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #6
0
        private static PackageUpdateSet UpdateSetForNewVersion(PackageIdentity newPackage, params PackageInProject[] packages)
        {
            var publishedDate = new DateTimeOffset(2018, 2, 19, 11, 12, 7, TimeSpan.Zero);
            var latest        = new PackageSearchMedatadata(newPackage, NugetSource, publishedDate);

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

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #7
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 PackageSearchMedatadata(package.SingleVersionIdentity(), new PackageSource("http://none"), publishedDate, null);

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

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #8
0
        private static PackageUpdateSet UpdateSetForInternalSource(params PackageInProject[] packages)
        {
            var newPackage    = NewPackageFooBar123();
            var publishedDate = new DateTimeOffset(2018, 2, 19, 11, 12, 7, TimeSpan.Zero);
            var latest        = new PackageSearchMedatadata(newPackage, "http://internalfeed.myco.com/api", publishedDate);

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

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #9
0
        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 PackageSearchMedatadata(newPackage,
                                                            InternalPackageSource(), publishedDate, null);

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

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #10
0
        public static PackageUpdateSet For(
            PackageIdentity package,
            DateTimeOffset published,
            IEnumerable <PackageInProject> packages,
            IEnumerable <PackageDependency> dependencies)
        {
            var latest  = new PackageSearchMedatadata(package, OfficialPackageSource(), published, dependencies);
            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #11
0
        public void CannotHaveUpdateForDifferentPackageToNewVersion()
        {
            var currentPackageBar = new List <PackageInProject>
            {
                new PackageInProject("bar", "1.0.0", PathToProjectOne())
            };

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

            Assert.Throws <ArgumentException>(() => new PackageUpdateSet(lookupResult, currentPackageBar));
        }
コード例 #12
0
        private PackageUpdateSet BuildPackageUpdateSet(PackageInProject pip)
        {
            var package = new PackageIdentity(pip.Id, new NuGetVersion("1.4.5"));
            var latest  = new PackageSearchMedatadata(package, new PackageSource("http://none"), null, null);

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

            return(new PackageUpdateSet(updates, new List <PackageInProject> {
                pip
            }));
        }
コード例 #13
0
        public void NullPackageMatch_IsNotAllowed()
        {
            var packages = new List <PackageInProject>
            {
                new PackageInProject("foo", "1.0.0", PathToProjectOne())
            };

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

            Assert.Throws <ArgumentException>(() => new PackageUpdateSet(lookupResult, packages));
        }
コード例 #14
0
        public void CountCurrentVersions_WhenThereIsOneUpdate()
        {
            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject("foo", "1.0.1", PathToProjectOne())
            };

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

            Assert.That(updates.CountCurrentVersions(), Is.EqualTo(1));
        }
コード例 #15
0
        private static PackageUpdateSet UpdateSetForLimited(DateTimeOffset?publishedAt, params PackageInProject[] packages)
        {
            var latestId = new PackageIdentity("foo.bar", new NuGetVersion("2.3.4"));
            var latest   = new PackageSearchMedatadata(latestId, NugetSource, publishedAt);

            var match = new PackageSearchMedatadata(
                NewPackageFooBar123(), NugetSource, null);

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

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #16
0
        public static PackageUpdateSet LimitedToMinor(DateTimeOffset?publishedAt,
                                                      params PackageInProject[] packages)
        {
            var latestId = new PackageIdentity("foo.bar", new NuGetVersion("2.3.4"));
            var latest   = new PackageSearchMedatadata(latestId, OfficialPackageSource(), publishedAt, null);

            var match = new PackageSearchMedatadata(
                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));
        }
コード例 #17
0
        public void OneUpdate_HasCorrectCurrentPackages()
        {
            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject("foo", "1.0.0", PathToProjectOne())
            };

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

            Assert.That(updates.CurrentPackages, Is.Not.Null);
            Assert.That(updates.CurrentPackages.Count, Is.EqualTo(1));
            Assert.That(updates.CurrentPackages.First().Id, Is.EqualTo("foo"));
        }
コード例 #18
0
        public void WhenPackageDoesNotMatch_ExceptionMessageContainsMismatchedPackages()
        {
            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject("bar", "1.0.0", PathToProjectOne()),
                new PackageInProject("bar", "1.0.0", PathToProjectTwo()),
                new PackageInProject("fish", "1.0.0", PathToProjectOne())
            };

            var lookupResult = new PackageLookupResult(VersionChange.Major, LatestFooMetadata(), null, null);
            var ex           = Assert.Throws <ArgumentException>(() => new PackageUpdateSet(lookupResult, currentPackages));

            Assert.That(ex.Message, Is.EqualTo("Updates must all be for package 'foo', got 'bar, fish'"));
        }
コード例 #19
0
        public static PackageUpdateSet MakePackageUpdateSet(string packageName)
        {
            var fooPackage = new PackageIdentity(packageName, new NuGetVersion("1.2.3"));
            var latest     = new PackageSearchMedatadata(fooPackage, new PackageSource("http://none"), null,
                                                         Enumerable.Empty <PackageDependency>());
            var packages = new PackageLookupResult(VersionChange.Major, latest, null, null);

            var path = new PackagePath("c:\\foo", "bar", PackageReferenceType.ProjectFile);
            var pip  = new PackageInProject(fooPackage, path, null);

            return(new PackageUpdateSet(packages, new List <PackageInProject> {
                pip
            }));
        }
コード例 #20
0
        public void CanCopeWithEmptyData()
        {
            var logger   = Substitute.For <INuKeeperLogger>();
            var reporter = new PackageLookupResultReporter(logger);

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

            reporter.Report(data);

            logger.DidNotReceive().Error(Arg.Any <string>());
            logger.DidNotReceive().Minimal(Arg.Any <string>());
            logger.DidNotReceive().Normal(Arg.Any <string>());
            logger.DidNotReceive().Detailed(Arg.Any <string>());
        }
コード例 #21
0
        private static PackageUpdateSet UpdateSet()
        {
            PackageIdentity fooPackage = new PackageIdentity("foo", new NuGetVersion(1, 2, 3));
            var             packages   = new[]
            {
                new PackageInProject(fooPackage, new PackagePath("c:\\foo", "bar", PackageReferenceType.PackagesConfig))
            };

            var publishedDate = new DateTimeOffset(2018, 2, 19, 11, 12, 7, TimeSpan.Zero);
            var latest        = new PackageSearchMedatadata(fooPackage, new PackageSource("https://somewhere"), publishedDate, null);

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

            return(new PackageUpdateSet(updates, packages));
        }
コード例 #22
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 PackageSearchMedatadata(newPackage, new PackageSource("http://none"), DateTimeOffset.Now, null);

            var updates = new PackageLookupResult(VersionChange.Major, latest, null, null);
            return new PackageUpdateSet(updates, currentPackages);
        }
コード例 #23
0
        private static PackageUpdateSet UpdateSet(PackageReferenceType refType)
        {
            var fooPackage = new PackageIdentity("foo", new NuGetVersion(1, 2, 3));
            var path       = new PackagePath("c:\\foo", "bar", refType);
            var packages   = new[]
            {
                new PackageInProject(fooPackage, path, null)
            };

            var latest = new PackageSearchMedatadata(fooPackage, new PackageSource(NuGetConstants.V3FeedUrl), null, null);

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

            return(new PackageUpdateSet(updates, packages));
        }
        private static PackageUpdateSet MakeUpdateSet(string packageId, string packageVersion, PackageDependency upstream = null)
        {
            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject(packageId, packageVersion, PathToProjectOne()),
                new PackageInProject(packageId, packageVersion, PathToProjectTwo())
            };

            var majorUpdate = Metadata(packageId, packageVersion, upstream);

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

            return(updates);
        }
コード例 #25
0
        private static PackageUpdateSet MakeUpdateSet()
        {
            var currentPackages = new List <PackageInProject>
            {
                new PackageInProject("id", "1.0.0", new PackagePath("base", "rel", PackageReferenceType.ProjectFile)),
                new PackageInProject("id", "1.0.0", new PackagePath("base", "rel", PackageReferenceType.ProjectFile)),
            };

            var majorUpdate = Metadata("id", "1.0.0", null);

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

            return(updates);
        }
コード例 #26
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 PackageSearchMedatadata(matchId, new PackageSource("http://none"), pubDate, null);

            var updates = new PackageLookupResult(VersionChange.Major, match, null, null);
            return new PackageUpdateSet(updates, currentPackages);
        }
コード例 #27
0
        private 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 PackageSearchMedatadata(new PackageIdentity("foo", matchVersion), "ASource", pubDate);

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

            return(new PackageUpdateSet(updates, currentPackages));
        }
コード例 #28
0
        private PackageUpdateSet UpdateBarFromTwoVersions()
        {
            var newPackage = LatestVersionOfPackageBar();

            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 PackageSearchMedatadata(matchId, "ASource", DateTimeOffset.Now);

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

            return(new PackageUpdateSet(updates, currentPackages));
        }
コード例 #29
0
        public static PackageUpdateSet MakeUpdateSet(string packageName,
                                                     string version = "1.2.3",
                                                     PackageReferenceType packageRefType = PackageReferenceType.ProjectFile)
        {
            var packageId = new PackageIdentity(packageName, new NuGetVersion(version));
            var latest    = new PackageSearchMedatadata(
                packageId, 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));
        }
コード例 #30
0
        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));
        }