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); }
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()); }