static void AssertMergeMessage(string message, string expectedVersion, List <Commit> parents, Config config = null)
        {
            var commit = new MockCommit
            {
                MessageEx = message,
                ParentsEx = parents
            };

            var context = new GitVersionContextBuilder()
                          .WithConfig(config ?? new Config())
                          .WithRepository(new MockRepository
            {
                Head = new MockBranch("master")
                {
                    commit,
                    new MockCommit()
                }
            })
                          .Build();
            var sut = new MergeMessageBaseVersionStrategy();

            var baseVersion = sut.GetVersions(context).SingleOrDefault();

            if (expectedVersion == null)
            {
                baseVersion.ShouldBe(null);
            }
            else
            {
                baseVersion.ShouldNotBeNull();
                baseVersion.SemanticVersion.ToString().ShouldBe(expectedVersion);
            }
        }
        public void ShouldNotAllowIncrementOfVersion()
        {
            // When a branch is merged in you want to start building stable packages of that version
            // So we shouldn't bump the version
            var context = new GitVersionContextBuilder().WithRepository(new MockRepository
            {
                Head = new MockBranch("master")
                {
                    new MockCommit
                    {
                        MessageEx = "Merge branch 'release-0.1.5'",
                        ParentsEx = GetParents(true)
                    }
                }
            }).Build();
            var sut = new MergeMessageBaseVersionStrategy();

            var baseVersion = sut.GetVersions(context).Single();

            baseVersion.ShouldIncrement.ShouldBe(false);
        }
Exemple #3
0
        private static BaseVersion GetBaseVersion(List <ICommit> parents, bool preventIncrementForMergedBranchVersion = false)
        {
            var commitMock = new Mock <ICommit>();
            var commit     = commitMock.Object;

            commitMock.Setup(c => c.When).Returns(DateTime.Now);

            var repositoryMock = new Mock <IRepository>();
            var repository     = repositoryMock.Object;

            repositoryMock.Setup(r => r.Parents(It.IsAny <ICommit>())).Returns(parents);
            repositoryMock.Setup(r => r.Log(It.IsAny <Func <ILogQueryBuilder, ILogQuery> >()))
            .Returns(Enumerable.Repeat(commit, 1));

            var mergeMessageMock = new Mock <IMergeMessage>();
            var mergeMessage     = mergeMessageMock.Object;

            mergeMessageMock.Setup(m => m.Version).Returns(new SemanticVersion());

            var providerMock = new Mock <IRepositoryMetadataProvider>();
            var provider     = providerMock.Object;

            providerMock.Setup(p => p.ParseMergeMessage(It.IsAny <string>())).Returns(mergeMessage);

            var contextMock = new Mock <IVersionContext>();
            var context     = contextMock.Object;

            contextMock.Setup(c => c.Repository).Returns(repository);
            contextMock.Setup(c => c.CurrentCommit).Returns(commit);
            contextMock.Setup(c => c.CurrentBranch).Returns(Mock.Of <IBranchHead>());
            contextMock.Setup(c => c.Configuration).Returns(new TestEffectiveConfiguration(preventIncrementForMergedBranchVersion: preventIncrementForMergedBranchVersion));
            contextMock.Setup(c => c.RepositoryMetadataProvider).Returns(provider);

            var sut = new MergeMessageBaseVersionStrategy();

            return(sut.GetVersions(context).SingleOrDefault());
        }