1
+ namespace GitVersionCore . Tests . VersionCalculation . Strategies
2
+ {
3
+ using System . Collections . Generic ;
4
+ using GitVersion . VersionCalculation . BaseVersionCalculators ;
5
+ using LibGit2Sharp ;
6
+ using NUnit . Framework ;
7
+ using Shouldly ;
8
+
9
+ [ TestFixture ]
10
+ public class MergeMessageBaseVersionStrategyTests
11
+ {
12
+ [ Test ]
13
+ public void ShouldAllowIncrementOfVersion ( )
14
+ {
15
+ var context = new GitVersionContextBuilder ( ) . WithRepository ( new MockRepository
16
+ {
17
+ Head = new MockBranch ( "master" ) { new MockCommit
18
+ {
19
+ MessageEx = "Merge branch 'hotfix-0.1.5'" ,
20
+ ParentsEx = GetParents ( true )
21
+ } }
22
+ } ) . Build ( ) ;
23
+ var sut = new MergeMessageBaseVersionStrategy ( ) ;
24
+
25
+ var baseVersion = sut . GetVersion ( context ) ;
26
+
27
+ baseVersion . ShouldIncrement . ShouldBe ( true ) ;
28
+ }
29
+
30
+ [ TestCase ( "Merge branch 'hotfix-0.1.5'" , false , null ) ]
31
+ [ TestCase ( "Merge branch 'develop' of github.com:Particular/NServiceBus into develop" , true , null ) ]
32
+ [ TestCase ( "Merge branch '4.0.3'" , true , "4.0.3" ) ] //TODO: possible make it a config option to support this
33
+ [ TestCase ( "Merge branch 'release-10.10.50'" , true , "10.10.50" ) ]
34
+ [ TestCase ( "Merge branch 's'" , true , null ) ] // Must start with a number
35
+ [ TestCase ( "Merge branch 'release-0.2.0'" , true , "0.2.0" ) ]
36
+ [ TestCase ( "Merge branch 'hotfix-4.6.6' into support-4.6" , true , "4.6.6" ) ]
37
+ [ TestCase ( "Merge branch 'hotfix-10.10.50'" , true , "10.10.50" ) ]
38
+ [ TestCase ( "Merge branch 'hotfix-0.1.5'" , true , "0.1.5" ) ]
39
+ [ TestCase ( "Merge branch 'hotfix-0.1.5'\n \n Relates to: TicketId" , true , "0.1.5" ) ]
40
+ [ TestCase ( "Merge branch 'alpha-0.1.5'" , true , "0.1.5" ) ]
41
+ [ TestCase ( "Merge pull request #165 from Particular/release-1.0.0" , true , "1.0.0" ) ]
42
+ [ TestCase ( "Merge pull request #95 from Particular/issue-94" , false , null ) ]
43
+ [ TestCase ( "Merge pull request #165 in Particular/release-1.0.0" , true , "1.0.0" ) ]
44
+ [ TestCase ( "Merge pull request #95 in Particular/issue-94" , true , null ) ]
45
+ [ TestCase ( "Merge pull request #95 in Particular/issue-94" , false , null ) ]
46
+ [ TestCase ( "Merge pull request #64 from arledesma/feature-VS2013_3rd_party_test_framework_support" , true , null ) ]
47
+ [ TestCase ( "Finish Release-0.12.0" , true , "0.12.0" ) ] //Support Syntevo SmartGit/Hg's Gitflow merge commit messages for finishing a 'Release' branch
48
+ [ TestCase ( "Finish 0.14.1" , true , "0.14.1" ) ] //Support Syntevo SmartGit/Hg's Gitflow merge commit messages for finishing a 'Hotfix' branch
49
+ public void AssertMergeMessage ( string message , bool isMergeCommit , string expectedVersion )
50
+ {
51
+ var parents = GetParents ( isMergeCommit ) ;
52
+ AssertMergeMessage ( message , expectedVersion , parents ) ;
53
+ AssertMergeMessage ( message + " " , expectedVersion , parents ) ;
54
+ AssertMergeMessage ( message + "\r " , expectedVersion , parents ) ;
55
+ AssertMergeMessage ( message + "\r " , expectedVersion , parents ) ;
56
+ AssertMergeMessage ( message + "\r \n " , expectedVersion , parents ) ;
57
+ AssertMergeMessage ( message + "\r \n " , expectedVersion , parents ) ;
58
+ AssertMergeMessage ( message + "\n " , expectedVersion , parents ) ;
59
+ AssertMergeMessage ( message + "\n " , expectedVersion , parents ) ;
60
+ }
61
+
62
+ static void AssertMergeMessage ( string message , string expectedVersion , List < Commit > parents )
63
+ {
64
+ var commit = new MockCommit
65
+ {
66
+ MessageEx = message ,
67
+ ParentsEx = parents
68
+ } ;
69
+
70
+ var context = new GitVersionContextBuilder ( )
71
+ . WithRepository ( new MockRepository
72
+ {
73
+ Head = new MockBranch ( "master" ) { commit }
74
+ } )
75
+ . Build ( ) ;
76
+ var sut = new MergeMessageBaseVersionStrategy ( ) ;
77
+
78
+ var baseVersion = sut . GetVersion ( context ) ;
79
+
80
+ if ( expectedVersion == null )
81
+ {
82
+ baseVersion . ShouldBe ( null ) ;
83
+ }
84
+ else
85
+ {
86
+ baseVersion . SemanticVersion . ToString ( ) . ShouldBe ( expectedVersion ) ;
87
+ }
88
+ }
89
+
90
+ static List < Commit > GetParents ( bool isMergeCommit )
91
+ {
92
+ if ( isMergeCommit )
93
+ {
94
+ return new List < Commit >
95
+ {
96
+ null ,
97
+ null
98
+ } ;
99
+ }
100
+ return new List < Commit >
101
+ {
102
+ null
103
+ } ;
104
+ }
105
+ }
106
+ }
0 commit comments