@@ -54,15 +54,14 @@ public void EmptyTagPrefix(string prefix)
54
54
55
55
private static readonly object [ ] MergeMessages =
56
56
{
57
- new object [ ] { "Merge branch 'feature/one'" , "feature/one" , null , null } ,
58
- new object [ ] { "Merge branch 'origin/feature/one'" , "origin/feature/one" , null , null } ,
59
- new object [ ] { "Merge tag 'v4.0.0' into master" , "v4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
60
- new object [ ] { "Merge tag 'V4.0.0' into master" , "V4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
61
- new object [ ] { "Merge branch 'feature/4.1/one'" , "feature/4.1/one" , null , new SemanticVersion ( 4 , 1 ) } ,
62
- new object [ ] { "Merge branch 'origin/4.1/feature/one'" , "origin/4.1/feature/one" , null , new SemanticVersion ( 4 , 1 ) } ,
63
- new object [ ] { "Merge tag 'v://10.10.10.10' into master" , "v://10.10.10.10" , "master" , null }
64
-
65
- } ;
57
+ new object [ ] { "Merge branch 'feature/one'" , "feature/one" , null , null } ,
58
+ new object [ ] { "Merge branch 'origin/feature/one'" , "origin/feature/one" , null , null } ,
59
+ new object [ ] { "Merge tag 'v4.0.0' into master" , "v4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
60
+ new object [ ] { "Merge tag 'V4.0.0' into master" , "V4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
61
+ new object [ ] { "Merge branch 'feature/4.1/one'" , "feature/4.1/one" , null , new SemanticVersion ( 4 , 1 ) } ,
62
+ new object [ ] { "Merge branch 'origin/4.1/feature/one'" , "origin/4.1/feature/one" , null , new SemanticVersion ( 4 , 1 ) } ,
63
+ new object [ ] { "Merge tag 'v://10.10.10.10' into master" , "v://10.10.10.10" , "master" , null }
64
+ } ;
66
65
67
66
[ TestCaseSource ( nameof ( MergeMessages ) ) ]
68
67
public void ParsesMergeMessage (
@@ -75,6 +74,7 @@ public void ParsesMergeMessage(
75
74
var sut = new MergeMessage ( message , _config ) ;
76
75
77
76
// Assert
77
+ sut . MatchDefinition . ShouldBe ( "Default" ) ;
78
78
sut . TargetBranch . ShouldBe ( expectedTargetBranch ) ;
79
79
sut . MergedBranch . ShouldBe ( expectedMergedBranch ) ;
80
80
sut . IsMergedPullRequest . ShouldBeFalse ( ) ;
@@ -84,21 +84,14 @@ public void ParsesMergeMessage(
84
84
85
85
private static readonly object [ ] GitHubPullPullMergeMessages =
86
86
{
87
- new object [ ] { "Merge pull request #1234 from feature/one" , "feature/one" , null , null , 1234 } ,
88
- new object [ ] { "Merge pull request #1234 in feature/one" , "feature/one" , null , null , 1234 } ,
89
- new object [ ] { "Merge pull request #1234 in v4.0.0" , "v4.0.0" , null , new SemanticVersion ( 4 ) , 1234 } ,
90
- new object [ ] { "Merge pull request #1234 in V4.0.0" , "V4.0.0" , null , new SemanticVersion ( 4 ) , 1234 } ,
91
- new object [ ] { "Merge pull request #1234 from origin/feature/one" , "origin/feature/one" , null , null , 1234 } ,
92
- new object [ ] { "Merge pull request #1234 in feature/4.1/one" , "feature/4.1/one" , null , new SemanticVersion ( 4 , 1 ) , 1234 } ,
93
- new object [ ] { "Merge pull request #1234 in V://10.10.10.10" , "V://10.10.10.10" , null , null , 1234 } ,
94
-
95
-
96
- //TODO: Investigate successful github merge messages that may be invalid
97
- // Should an empty PR number be valid?
98
- new object [ ] { "Merge pull request # from feature/one" , "feature/one" , null , null , 0 } ,
99
- // The branch name appears to be incorrect
100
- new object [ ] { "Merge pull request #1234 from feature/one into dev" , "feature/one into dev" , "dev" , null , 1234 } ,
101
- } ;
87
+ new object [ ] { "Merge pull request #1234 from feature/one" , "feature/one" , null , null , 1234 } ,
88
+ new object [ ] { "Merge pull request #1234 in feature/one" , "feature/one" , null , null , 1234 } ,
89
+ new object [ ] { "Merge pull request #1234 in v4.0.0" , "v4.0.0" , null , new SemanticVersion ( 4 ) , 1234 } ,
90
+ new object [ ] { "Merge pull request #1234 from origin/feature/one" , "origin/feature/one" , null , null , 1234 } ,
91
+ new object [ ] { "Merge pull request #1234 in feature/4.1/one" , "feature/4.1/one" , null , new SemanticVersion ( 4 , 1 ) , 1234 } ,
92
+ new object [ ] { "Merge pull request #1234 in V://10.10.10.10" , "V://10.10.10.10" , null , null , 1234 } ,
93
+ new object [ ] { "Merge pull request #1234 from feature/one into dev" , "feature/one" , "dev" , null , 1234 }
94
+ } ;
102
95
103
96
[ TestCaseSource ( nameof ( GitHubPullPullMergeMessages ) ) ]
104
97
public void ParsesGitHubPullMergeMessage (
@@ -112,6 +105,7 @@ public void ParsesGitHubPullMergeMessage(
112
105
var sut = new MergeMessage ( message , _config ) ;
113
106
114
107
// Assert
108
+ sut . MatchDefinition . ShouldBe ( "GitHubPull" ) ;
115
109
sut . TargetBranch . ShouldBe ( expectedTargetBranch ) ;
116
110
sut . MergedBranch . ShouldBe ( expectedMergedBranch ) ;
117
111
sut . IsMergedPullRequest . ShouldBeTrue ( ) ;
@@ -121,23 +115,17 @@ public void ParsesGitHubPullMergeMessage(
121
115
122
116
private static readonly object [ ] BitBucketPullMergeMessages =
123
117
{
124
- new object [ ] { "Merge pull request #1234 from feature/one from feature/two to dev" , "feature/two" , null , null , 1234 } ,
125
- new object [ ] { "Merge pull request #1234 in feature/one from feature/two to dev" , "feature/two" , null , null , 1234 } ,
126
- new object [ ] { "Merge pull request #1234 in v4.0.0 from v4.1.0 to dev" , "v4.1.0" , null , new SemanticVersion ( 4 , 1 ) , 1234 } ,
127
- new object [ ] { "Merge pull request #1234 in V4.0.0 from V4.1.0 to dev" , "V4.1.0" , null , new SemanticVersion ( 4 , 1 ) , 1234 } ,
128
- new object [ ] { "Merge pull request #1234 from origin/feature/one from origin/feature/4.2/two to dev" , "origin/feature/4.2/two" , null , new SemanticVersion ( 4 , 2 ) , 1234 } ,
129
- new object [ ] { "Merge pull request #1234 in feature/4.1/one from feature/4.2/two to dev" , "feature/4.2/two" , null , new SemanticVersion ( 4 , 2 ) , 1234 } ,
130
- new object [ ] { "Merge pull request #1234 in feature/4.1/one from feature/4.2/two to dev into master" , "feature/4.2/two" , "master" , new SemanticVersion ( 4 , 2 ) , 1234 } ,
131
- new object [ ] { "Merge pull request #1234 in V4.1.0 from V://10.10.10.10 to dev" , "V://10.10.10.10" , null , null , 1234 } ,
132
- //TODO: Investigate successful bitbucket merge messages that may be invalid
133
- // Regex has double 'from/in from' section. Is that correct?
134
- new object [ ] { "Merge pull request #1234 in feature/4.1/one from feature/4.2/two to dev" , "feature/4.2/two" , null , new SemanticVersion ( 4 , 2 ) , 1234 } ,
135
- new object [ ] { "Merge pull request #1234 from feature/one from v4.0.0 to master" , "v4.0.0" , null , new SemanticVersion ( 4 ) , 1234 } ,
136
- // target branch is not resolved from targetbranch group
137
- new object [ ] { "Merge pull request #1234 from feature/one from feature/two to master" , "feature/two" , null , null , 1234 } ,
138
- // Should an empty PR number be valid?
139
- new object [ ] { "Merge pull request # in feature/one from feature/two to master" , "feature/two" , null , null , 0 }
140
- } ;
118
+ new object [ ] { "Merge pull request #1234 from feature/one from feature/two to dev" , "feature/two" , "dev" , null , 1234 } ,
119
+ new object [ ] { "Merge pull request #1234 in feature/one from feature/two to dev" , "feature/two" , "dev" , null , 1234 } ,
120
+ new object [ ] { "Merge pull request #1234 in v4.0.0 from v4.1.0 to dev" , "v4.1.0" , "dev" , new SemanticVersion ( 4 , 1 ) , 1234 } ,
121
+ new object [ ] { "Merge pull request #1234 from origin/feature/one from origin/feature/4.2/two to dev" , "origin/feature/4.2/two" , "dev" , new SemanticVersion ( 4 , 2 ) , 1234 } ,
122
+ new object [ ] { "Merge pull request #1234 in feature/4.1/one from feature/4.2/two to dev" , "feature/4.2/two" , "dev" , new SemanticVersion ( 4 , 2 ) , 1234 } ,
123
+ new object [ ] { "Merge pull request #1234 from feature/one from feature/two to master" , "feature/two" , "master" , null , 1234 } ,
124
+ new object [ ] { "Merge pull request #1234 in V4.1.0 from V://10.10.10.10 to dev" , "V://10.10.10.10" , "dev" , null , 1234 } ,
125
+ //TODO: Investigate successful bitbucket merge messages that may be invalid
126
+ // Regex has double 'from/in from' section. Is that correct?
127
+ new object [ ] { "Merge pull request #1234 from feature/one from v4.0.0 to master" , "v4.0.0" , "master" , new SemanticVersion ( 4 ) , 1234 }
128
+ } ;
141
129
142
130
[ TestCaseSource ( nameof ( BitBucketPullMergeMessages ) ) ]
143
131
public void ParsesBitBucketPullMergeMessage (
@@ -151,26 +139,25 @@ public void ParsesBitBucketPullMergeMessage(
151
139
var sut = new MergeMessage ( message , _config ) ;
152
140
153
141
// Assert
142
+ sut . MatchDefinition . ShouldBe ( "BitBucketPull" ) ;
154
143
sut . TargetBranch . ShouldBe ( expectedTargetBranch ) ;
155
144
sut . MergedBranch . ShouldBe ( expectedMergedBranch ) ;
156
145
sut . IsMergedPullRequest . ShouldBeTrue ( ) ;
157
146
sut . PullRequestNumber . ShouldBe ( expectedPullRequestNumber ) ;
158
147
sut . Version . ShouldBe ( expectedVersion ) ;
159
148
}
160
149
150
+
161
151
private static readonly object [ ] SmartGitMergeMessages =
162
152
{
163
- new object [ ] { "Finish feature/one" , "feature/one" , null , null } ,
164
- new object [ ] { "Finish origin/feature/one" , "origin/feature/one" , null , null } ,
165
- new object [ ] { "Finish v4.0.0" , "v4.0.0" , null , new SemanticVersion ( 4 ) } ,
166
- new object [ ] { "Finish feature/4.1/one" , "feature/4.1/one" , null , new SemanticVersion ( 4 , 1 ) } ,
167
- new object [ ] { "Finish origin/4.1/feature/one" , "origin/4.1/feature/one" , null , new SemanticVersion ( 4 , 1 ) } ,
168
- new object [ ] { "Finish V://10.10.10.10" , "V://10.10.10.10" , null , null } ,
169
-
170
- //TODO: Investigate successful smart git merge messages that may be invalid
171
- // The branch name appears to be incorrect
172
- new object [ ] { "Finish V4.0.0 into master" , "V4.0.0 into master" , "master" , new SemanticVersion ( 4 ) }
173
- } ;
153
+ new object [ ] { "Finish feature/one" , "feature/one" , null , null } ,
154
+ new object [ ] { "Finish origin/feature/one" , "origin/feature/one" , null , null } ,
155
+ new object [ ] { "Finish v4.0.0" , "v4.0.0" , null , new SemanticVersion ( 4 ) } ,
156
+ new object [ ] { "Finish feature/4.1/one" , "feature/4.1/one" , null , new SemanticVersion ( 4 , 1 ) } ,
157
+ new object [ ] { "Finish origin/4.1/feature/one" , "origin/4.1/feature/one" , null , new SemanticVersion ( 4 , 1 ) } ,
158
+ new object [ ] { "Finish V://10.10.10.10" , "V://10.10.10.10" , null , null } ,
159
+ new object [ ] { "Finish V4.0.0 into master" , "V4.0.0" , "master" , new SemanticVersion ( 4 ) }
160
+ } ;
174
161
175
162
[ TestCaseSource ( nameof ( SmartGitMergeMessages ) ) ]
176
163
public void ParsesSmartGitMergeMessage (
@@ -183,6 +170,7 @@ public void ParsesSmartGitMergeMessage(
183
170
var sut = new MergeMessage ( message , _config ) ;
184
171
185
172
// Assert
173
+ sut . MatchDefinition . ShouldBe ( "SmartGit" ) ;
186
174
sut . TargetBranch . ShouldBe ( expectedTargetBranch ) ;
187
175
sut . MergedBranch . ShouldBe ( expectedMergedBranch ) ;
188
176
sut . IsMergedPullRequest . ShouldBeFalse ( ) ;
@@ -192,14 +180,14 @@ public void ParsesSmartGitMergeMessage(
192
180
193
181
private static readonly object [ ] RemoteTrackingMergeMessages =
194
182
{
195
- new object [ ] { "Merge remote-tracking branch 'feature/one' into master" , "feature/one" , "master" , null } ,
196
- new object [ ] { "Merge remote-tracking branch 'origin/feature/one' into dev" , "origin/feature/one" , "dev" , null } ,
197
- new object [ ] { "Merge remote-tracking branch 'v4.0.0' into master" , "v4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
198
- new object [ ] { "Merge remote-tracking branch 'V4.0.0' into master" , "V4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
199
- new object [ ] { "Merge remote-tracking branch 'feature/4.1/one' into dev" , "feature/4.1/one" , "dev" , new SemanticVersion ( 4 , 1 ) } ,
200
- new object [ ] { "Merge remote-tracking branch 'origin/4.1/feature/one' into master" , "origin/4.1/feature/one" , "master" , new SemanticVersion ( 4 , 1 ) } ,
201
- new object [ ] { "Merge remote-tracking branch 'v://10.10.10.10' into master" , "v://10.10.10.10" , "master" , null }
202
- } ;
183
+ new object [ ] { "Merge remote-tracking branch 'feature/one' into master" , "feature/one" , "master" , null } ,
184
+ new object [ ] { "Merge remote-tracking branch 'origin/feature/one' into dev" , "origin/feature/one" , "dev" , null } ,
185
+ new object [ ] { "Merge remote-tracking branch 'v4.0.0' into master" , "v4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
186
+ new object [ ] { "Merge remote-tracking branch 'V4.0.0' into master" , "V4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
187
+ new object [ ] { "Merge remote-tracking branch 'feature/4.1/one' into dev" , "feature/4.1/one" , "dev" , new SemanticVersion ( 4 , 1 ) } ,
188
+ new object [ ] { "Merge remote-tracking branch 'origin/4.1/feature/one' into master" , "origin/4.1/feature/one" , "master" , new SemanticVersion ( 4 , 1 ) } ,
189
+ new object [ ] { "Merge remote-tracking branch 'v://10.10.10.10' into master" , "v://10.10.10.10" , "master" , null }
190
+ } ;
203
191
204
192
[ TestCaseSource ( nameof ( RemoteTrackingMergeMessages ) ) ]
205
193
public void ParsesRemoteTrackingMergeMessage (
@@ -212,11 +200,96 @@ public void ParsesRemoteTrackingMergeMessage(
212
200
var sut = new MergeMessage ( message , _config ) ;
213
201
214
202
// Assert
203
+ sut . MatchDefinition . ShouldBe ( "RemoteTracking" ) ;
215
204
sut . TargetBranch . ShouldBe ( expectedTargetBranch ) ;
216
205
sut . MergedBranch . ShouldBe ( expectedMergedBranch ) ;
217
206
sut . IsMergedPullRequest . ShouldBeFalse ( ) ;
218
207
sut . PullRequestNumber . ShouldBeNull ( ) ;
219
208
sut . Version . ShouldBe ( expectedVersion ) ;
220
209
}
210
+
211
+ private static readonly object [ ] ParsesTfsEnglishUSMergeMessages =
212
+ {
213
+ new object [ ] { "Merge feature/one to master" , "feature/one" , "master" , null } ,
214
+ new object [ ] { "Merge v://10.10.10.10 to master" , "v://10.10.10.10" , "master" , null } ,
215
+ new object [ ] { "Merge feature/one to v://10.10.10.10" , "feature/one" , "v://10.10.10.10" , null } ,
216
+ new object [ ] { "Merge V4.0.0 to master" , "V4.0.0" , "master" , new SemanticVersion ( 4 ) } ,
217
+ new object [ ] { "Merge feature/4.1/one to master" , "feature/4.1/one" , "master" , new SemanticVersion ( 4 , 1 ) }
218
+ } ;
219
+
220
+ [ TestCaseSource ( nameof ( ParsesTfsEnglishUSMergeMessages ) ) ]
221
+ public void ParsesTfsEnglishUSMessage (
222
+ string message ,
223
+ string expectedMergedBranch ,
224
+ string expectedTargetBranch ,
225
+ SemanticVersion expectedVersion )
226
+ {
227
+ // Act
228
+ var sut = new MergeMessage ( message , _config ) ;
229
+
230
+ // Assert
231
+ sut . MatchDefinition . ShouldBe ( "TfsMergeMessageEnglishUS" ) ;
232
+ sut . TargetBranch . ShouldBe ( expectedTargetBranch ) ;
233
+ sut . MergedBranch . ShouldBe ( expectedMergedBranch ) ;
234
+ sut . IsMergedPullRequest . ShouldBeFalse ( ) ;
235
+ sut . PullRequestNumber . ShouldBeNull ( ) ;
236
+ sut . Version . ShouldBe ( expectedVersion ) ;
237
+ }
238
+
239
+ private static readonly object [ ] ParsesTfsGermanDEMergeMessages =
240
+ {
241
+ new object [ ] { "Zusammengeführter PR \" 1234\" : feature/one mit master mergen" , "feature/one" , "master" , null , 1234 } ,
242
+ new object [ ] { "Zusammengeführter PR \" 1234\" : v://10.10.10.10 mit master mergen" , "v://10.10.10.10" , "master" , null , 1234 } ,
243
+ new object [ ] { "Zusammengeführter PR \" 1234\" : feature/one mit v://10.10.10.10 mergen" , "feature/one" , "v://10.10.10.10" , null , 1234 } ,
244
+ new object [ ] { "Zusammengeführter PR \" 1234\" : V4.0.0 mit master mergen" , "V4.0.0" , "master" , new SemanticVersion ( 4 ) , 1234 } ,
245
+ new object [ ] { "Zusammengeführter PR \" 1234\" : feature/4.1/one mit master mergen" , "feature/4.1/one" , "master" , new SemanticVersion ( 4 , 1 ) , 1234 }
246
+ } ;
247
+
248
+ [ TestCaseSource ( nameof ( ParsesTfsGermanDEMergeMessages ) ) ]
249
+ public void ParseTfsGermanDEMessage (
250
+ string message ,
251
+ string expectedMergedBranch ,
252
+ string expectedTargetBranch ,
253
+ SemanticVersion expectedVersion ,
254
+ int ? expectedPullRequestNumber )
255
+ {
256
+ // Act
257
+ var sut = new MergeMessage ( message , _config ) ;
258
+
259
+ // Assert
260
+ sut . MatchDefinition . ShouldBe ( "TfsMergeMessageGermanDE" ) ;
261
+ sut . TargetBranch . ShouldBe ( expectedTargetBranch ) ;
262
+ sut . MergedBranch . ShouldBe ( expectedMergedBranch ) ;
263
+ sut . IsMergedPullRequest . ShouldBeTrue ( ) ;
264
+ sut . PullRequestNumber . ShouldBe ( expectedPullRequestNumber ) ;
265
+ sut . Version . ShouldBe ( expectedVersion ) ;
266
+ }
267
+
268
+ private static readonly object [ ] InvalidMergeMessages =
269
+ {
270
+ new object [ ] { "Merge pull request # from feature/one" , "" , null , null , null } ,
271
+ new object [ ] { "Merge pull request # in feature/one from feature/two to master" , "" , null , null , null } ,
272
+ new object [ ] { "Zusammengeführter PR : feature/one mit master mergen" , "" , null , null , null }
273
+ } ;
274
+
275
+ [ TestCaseSource ( nameof ( InvalidMergeMessages ) ) ]
276
+ public void ParsesInvalidMergeMessage (
277
+ string message ,
278
+ string expectedMergedBranch ,
279
+ string expectedTargetBranch ,
280
+ SemanticVersion expectedVersion ,
281
+ int ? expectedPullRequestNumber )
282
+ {
283
+ // Act
284
+ var sut = new MergeMessage ( message , _config ) ;
285
+
286
+ // Assert
287
+ sut . MatchDefinition . ShouldBeNull ( ) ;
288
+ sut . TargetBranch . ShouldBe ( expectedTargetBranch ) ;
289
+ sut . MergedBranch . ShouldBe ( expectedMergedBranch ) ;
290
+ sut . IsMergedPullRequest . ShouldBeFalse ( ) ;
291
+ sut . PullRequestNumber . ShouldBe ( expectedPullRequestNumber ) ;
292
+ sut . Version . ShouldBe ( expectedVersion ) ;
293
+ }
221
294
}
222
295
}
0 commit comments