private static PackageSearchMedatadata MetadataForVersion(int major, int minor, int patch)
        {
            var version   = new NuGetVersion(major, minor, patch);
            var packageId = new PackageIdentity("foo", version);

            return(new PackageSearchMedatadata(packageId, PackageUpdates.OfficialPackageSource(), DateTimeOffset.Now, null));
        }
Exemplo n.º 2
0
        public void TwoUpdatesSameVersion_MakeCommitDetails_HasStandardTexts()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV110InProject3())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            AssertContainsStandardText(report);
        }
Exemplo n.º 3
0
        public void TwoUpdatesSameVersion_MakeCommitDetails_HasVersionInfo()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV110InProject3())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.StartWith("NuKeeper has generated a minor update of `foo.bar` to `1.2.3` from `1.1.0`"));
        }
        public void TestWithSinglePackageAndBranchNamePrefix()
        {
            var packages = PackageUpdates.MakeUpdateSet("SomePackage")
                           .InList();

            var branchName = BranchNamer.MakeName(packages, BranchNameTemplate);

            Assert.That(branchName, Is.EqualTo("nukeeper/nukeeper-update-SomePackage-to-1.2.3"));
        }
Exemplo n.º 5
0
        public void OneUpdate_MakeCommitDetails_HasPublishedDate()
        {
            var updates = PackageUpdates.For(MakePackageForV110())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.Contain("`foo.bar 1.2.3` was published at `2018-02-19T11:12:07Z`"));
        }
Exemplo n.º 6
0
        public void OneUpdate_MakeCommitDetails_HasVersionLimitData()
        {
            var updates = PackageUpdates.LimitedToMinor(MakePackageForV110())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.Contain($"There is also a higher version, `foo.bar 2.3.4`, but this was not applied as only `Minor` version changes are allowed."));
        }
Exemplo n.º 7
0
        public void OneUpdate_MakeCommitDetails_HasVersionInfo()
        {
            var updates = PackageUpdates.For(MakePackageForV110())
                          .InList();

            var report = CommitWording.MakeCommitDetails(updates);

            Assert.That(report, Does.StartWith("NuKeeper has generated a minor update of `foo.bar` to `1.2.3` from `1.1.0`"));
        }
Exemplo n.º 8
0
        public void OneUpdateWithMajorVersionChange()
        {
            var updates = PackageUpdates.ForNewVersion(new PackageIdentity("foo.bar", new NuGetVersion("2.1.1")), MakePackageForV110())
                          .InList();

            var report = CommitWording.MakeCommitDetails(updates);

            Assert.That(report, Does.StartWith("NuKeeper has generated a major update of `foo.bar` to `2.1.1` from `1.1.0"));
        }
Exemplo n.º 9
0
        public void OneUpdateWithPatchVersionChange()
        {
            var updates = PackageUpdates.ForNewVersion(new PackageIdentity("foo.bar", new NuGetVersion("1.1.9")), MakePackageForV110())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.StartWith("NuKeeper has generated a patch update of `foo.bar` to `1.1.9` from `1.1.0"));
        }
Exemplo n.º 10
0
        public void OneUpdateInListCanBeWritten(Type reportType)
        {
            var rows = PackageUpdates.OnePackageUpdateSet();

            var outData = ReportToString(reportType, rows);

            Assert.That(outData, Is.Not.Null);
            AssertExpectedEmpty(reportType, outData);
        }
Exemplo n.º 11
0
        public void OneUpdate_MakeCommitDetails_HasStandardTexts()
        {
            var updates = PackageUpdates.For(MakePackageForV110())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            AssertContainsStandardText(report);
        }
Exemplo n.º 12
0
        public async Task WhenThereAreUpdates_CountIsAsExpected(
            int numberOfUpdates,
            int existingCommitsPerBranch,
            bool consolidateUpdates,
            bool pullRequestExists,
            int expectedUpdates,
            int expectedPrs
            )
        {
            var updateSelection      = Substitute.For <IPackageUpdateSelection>();
            var collaborationFactory = Substitute.For <ICollaborationFactory>();
            var gitDriver            = Substitute.For <IGitDriver>();
            var existingCommitFilder = Substitute.For <IExistingCommitFilter>();

            UpdateSelectionAll(updateSelection);

            gitDriver.GetCurrentHead().Returns("def");
            gitDriver.CheckoutNewBranch(Arg.Any <string>()).Returns(true);

            collaborationFactory
            .CollaborationPlatform
            .PullRequestExists(Arg.Any <ForkData>(), Arg.Any <string>(), Arg.Any <string>())
            .Returns(pullRequestExists);

            var packageUpdater = new PackageUpdater(collaborationFactory,
                                                    existingCommitFilder,
                                                    Substitute.For <IUpdateRunner>(),
                                                    Substitute.For <INuKeeperLogger>());

            var updates = Enumerable.Range(1, numberOfUpdates)
                          .Select(_ => PackageUpdates.UpdateSet())
                          .ToList();

            var filteredUpdates = updates.Skip(existingCommitsPerBranch).ToList().AsReadOnly();

            existingCommitFilder.Filter(Arg.Any <IGitDriver>(), Arg.Any <IReadOnlyCollection <PackageUpdateSet> >(), Arg.Any <string>(), Arg.Any <string>()).Returns(filteredUpdates);

            var settings = MakeSettings(consolidateUpdates);

            var(repoUpdater, _) = MakeRepositoryUpdater(
                updateSelection, updates, packageUpdater);

            var repo = MakeRepositoryData();

            var count = await repoUpdater.Run(gitDriver, repo, settings);

            Assert.That(count, Is.EqualTo(expectedUpdates), "Returned count of updates");

            await collaborationFactory.CollaborationPlatform.Received(expectedPrs)
            .OpenPullRequest(
                Arg.Any <ForkData>(),
                Arg.Any <PullRequestRequest>(),
                Arg.Any <IEnumerable <string> >());

            await gitDriver.Received(expectedUpdates).Commit(Arg.Any <string>());
        }
Exemplo n.º 13
0
        public void OneUpdate_MakeCommitDetails_IsNotEmpty()
        {
            var updates = PackageUpdates.For(MakePackageForV110())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Is.Not.Null);
            Assert.That(report, Is.Not.Empty);
        }
Exemplo n.º 14
0
        public void TwoUpdatesSameVersion_MakeCommitDetails_NotEmpty()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV110InProject3())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Is.Not.Null);
            Assert.That(report, Is.Not.Empty);
        }
Exemplo n.º 15
0
        public void OneUpdateWithInternalPackageSource()
        {
            var updates = PackageUpdates.ForInternalSource(MakePackageForV110())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.Not.Contain("on NuGet.org"));
            Assert.That(report, Does.Not.Contain("www.nuget.org"));
        }
Exemplo n.º 16
0
        public void MakeCommitMessage_TwoUpdatesSameVersionIsCorrect()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV110InProject3());

            var report = _sut.MakeCommitMessage(updates);

            Assert.That(report, Is.Not.Null);
            Assert.That(report, Is.Not.Empty);
            Assert.That(report, Is.EqualTo($"{CommitEmoji} Automatic update of foo.bar to 1.2.3"));
        }
Exemplo n.º 17
0
        public void MakeCommitMessage_OneUpdateIsCorrect()
        {
            var updates = PackageUpdates.For(MakePackageForV110());

            var report = CommitWording.MakeCommitMessage(updates);

            Assert.That(report, Is.Not.Null);
            Assert.That(report, Is.Not.Empty);
            Assert.That(report, Is.EqualTo(":package: Automatic update of foo.bar to 1.2.3"));
        }
Exemplo n.º 18
0
        public void TwoUpdates_MakeCommitDetails_NotEmpty()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV100())
                          .InList();

            var report = CommitWording.MakeCommitDetails(updates);

            Assert.That(report, Is.Not.Null);
            Assert.That(report, Is.Not.Empty);
        }
Exemplo n.º 19
0
        public void OneUpdate_MakeCommitDetails_HasProjectDetails()
        {
            var updates = PackageUpdates.For(MakePackageForV110())
                          .InList();

            var report = CommitWording.MakeCommitDetails(updates);

            Assert.That(report, Does.Contain("1 project update:"));
            Assert.That(report, Does.Contain("Updated `folder\\src\\project1\\packages.config` to `foo.bar` `1.2.3` from `1.1.0`"));
        }
Exemplo n.º 20
0
        public void MakeCommitMessage_TwoUpdatesIsCorrect()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV100());

            var report = _sut.MakeCommitMessage(updates);

            Assert.That(report, Is.Not.Null);
            Assert.That(report, Is.Not.Empty);
            Assert.That(report, Is.EqualTo("Automatic update of foo.bar to 1.2.3"));
        }
Exemplo n.º 21
0
        public void TwoUpdates_MakeCommitDetails_HasStandardTexts()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV100())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            AssertContainsStandardText(report);
            Assert.That(report, Does.Contain("1.0.0"));
        }
Exemplo n.º 22
0
        public void TwoUpdates_MakeCommitDetails_HasVersionInfo()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV100())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.StartWith("NuKeeper has generated a minor update of `foo.bar` to `1.2.3`"));
            Assert.That(report, Does.Contain("2 versions of `foo.bar` were found in use: `1.1.0`, `1.0.0`"));
        }
Exemplo n.º 23
0
        public void MarkPullRequestTitle_UpdateIsCorrect()
        {
            var updates = PackageUpdates.For(MakePackageForV110())
                          .InList();

            var report = _sut.MakePullRequestTitle(updates);

            Assert.That(report, Is.Not.Null);
            Assert.That(report, Is.Not.Empty);
            Assert.That(report, Is.EqualTo($"{CommitEmoji} Automatic update of foo.bar to 1.2.3"));
        }
Exemplo n.º 24
0
        public void TwoUpdatesSameVersion_MakeCommitDetails_HasProjectList()
        {
            var updates = PackageUpdates.For(MakePackageForV110(), MakePackageForV110InProject3())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.Contain("2 project updates:"));
            Assert.That(report, Does.Contain("Updated `folder\\src\\project1\\packages.config` to `foo.bar` `1.2.3` from `1.1.0`"));
            Assert.That(report, Does.Contain("Updated `folder\\src\\project3\\packages.config` to `foo.bar` `1.2.3` from `1.1.0`"));
        }
Exemplo n.º 25
0
        public void OneUpdateWithDate_MakeCommitDetails_HasVersionLimitDataWithDate()
        {
            var publishedAt = new DateTimeOffset(2018, 2, 20, 11, 32, 45, TimeSpan.Zero);

            var updates = PackageUpdates.LimitedToMinor(publishedAt, MakePackageForV110())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.Contain($"There is also a higher version, `foo.bar 2.3.4` published at `2018-02-20T11:32:45Z`,"));
            Assert.That(report, Does.Contain(" ago, but this was not applied as only `Minor` version changes are allowed."));
        }
        public void TestWithTwoPackagesAndBranchNamePrefix()
        {
            var packages = new List <PackageUpdateSet>
            {
                PackageUpdates.MakeUpdateSet("SomePackage"),
                PackageUpdates.MakeUpdateSet("OtherPackage")
            };

            var branchName = BranchNamer.MakeName(packages, BranchNameTemplate);

            Assert.That(branchName, Is.EqualTo("nukeeper/nukeeper-update-2-packages-AA9F9828431C8BFB7A18D3D8F0CF229D"));
        }
Exemplo n.º 27
0
        public void OneUpdate_MakeCommitDetails_HasProjectDetailsAsMarkdownTable()
        {
            var updates = PackageUpdates.For(MakePackageForV110())
                          .InList();

            var report = _sut.MakeCommitDetails(updates);

            Assert.That(report, Does.Contain("### 1 project update:"));
            Assert.That(report, Does.Contain("| Project   | Package   | From   | To   |"));
            Assert.That(report, Does.Contain("|:----------|:----------|-------:|-----:|"));
            Assert.That(report, Does.Contain($"| `folder\\src\\project1\\packages.config` | `foo.bar` | {NuGetVersionPackageLink("foo.bar", "1.1.0")} | {NuGetVersionPackageLink("foo.bar", "1.2.3")} |"));
        }
        public void WhenThereIsOneInput_ItIsTheTarget()
        {
            var updateSets = PackageUpdates.UpdateFooFromOneVersion()
                             .InList();

            var target = MakeSelection();

            var results = target.SelectTargets(PushFork(), updateSets, NoFilter());

            Assert.That(results, Is.Not.Null);
            Assert.That(results.Count, Is.EqualTo(1));
            Assert.That(results.First().SelectedId, Is.EqualTo("foo"));
        }
        public void TestWithThreePackagesAndBranchNamePrefix()
        {
            var packages = new List <PackageUpdateSet>
            {
                PackageUpdates.MakeUpdateSet("SomePackage"),
                PackageUpdates.MakeUpdateSet("OtherPackage"),
                PackageUpdates.MakeUpdateSet("SomethingElse"),
            };

            var branchName = BranchNamer.MakeName(packages, BranchNameTemplate);

            Assert.That(branchName, Is.EqualTo("nukeeper/nukeeper-update-3-packages-BBBB3BF2315D6111CFCBF6A4A7A29DD8"));
        }
Exemplo n.º 30
0
        public void MakeCommitDetails_DoesNotExceedPullRequestBodyLimit()
        {
            var packageNameExceedingPullRequestBodyLimit = new string('a', MaxCharacterCount + 1);
            var updateSet = PackageUpdates.MakeUpdateSet(packageNameExceedingPullRequestBodyLimit)
                            .InList();

            var report = _sut.MakeCommitDetails(updateSet);

            Assert.That(report, Is.Not.Null);
            Assert.That(report, Is.Not.Empty);
            Assert.That(report.Length, Is.EqualTo(MaxCharacterCount));
            Assert.That(report, Does.EndWith("..."));
        }