Skip to content

Commit 1fe37c3

Browse files
DanielRoseJakeGinnivan
authored andcommitted
Add various tests for inheriting version numbers in feature branches.
1 parent 11891f3 commit 1fe37c3

File tree

1 file changed

+235
-0
lines changed

1 file changed

+235
-0
lines changed

src/GitVersionCore.Tests/IntegrationTests/FeatureBranchScenarios.cs

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using GitTools.Testing;
23
using GitVersion;
34
using GitVersionCore.Tests;
@@ -239,6 +240,240 @@ public void BranchCreatedAfterFinishReleaseShouldInheritAndIncrementFromLastMast
239240
}
240241
}
241242

243+
[Test]
244+
public void ShouldPickUpVersionFromDevelopAfterReleaseBranchCreated()
245+
{
246+
using (var fixture = new EmptyRepositoryFixture())
247+
{
248+
// Create develop and release branches
249+
fixture.MakeACommit();
250+
fixture.BranchTo("develop");
251+
fixture.MakeACommit();
252+
fixture.BranchTo("release/1.0");
253+
fixture.MakeACommit();
254+
fixture.Checkout("develop");
255+
fixture.MakeACommit();
256+
fixture.AssertFullSemver("1.1.0-alpha.1");
257+
258+
// create a feature branch from develop and verify the version
259+
fixture.BranchTo("feature/test");
260+
fixture.AssertFullSemver("1.1.0-test.1+1");
261+
}
262+
}
263+
264+
[Test]
265+
public void ShouldPickUpVersionFromDevelopAfterReleaseBranchMergedBack()
266+
{
267+
using (var fixture = new EmptyRepositoryFixture())
268+
{
269+
// Create develop and release branches
270+
fixture.MakeACommit();
271+
fixture.BranchTo("develop");
272+
fixture.MakeACommit();
273+
fixture.BranchTo("release/1.0");
274+
fixture.MakeACommit();
275+
276+
// merge release into develop
277+
fixture.Checkout("develop");
278+
fixture.MergeNoFF("release/1.0");
279+
fixture.AssertFullSemver("1.1.0-alpha.2");
280+
281+
// create a feature branch from develop and verify the version
282+
fixture.BranchTo("feature/test");
283+
fixture.AssertFullSemver("1.1.0-test.1+2");
284+
}
285+
}
286+
287+
public class WhenMasterMarkedAsIsDevelop
288+
{
289+
[Test]
290+
public void ShouldPickUpVersionFromMasterAfterReleaseBranchCreated()
291+
{
292+
var config = new Config
293+
{
294+
Branches = new Dictionary<string, BranchConfig>
295+
{
296+
{
297+
"master", new BranchConfig()
298+
{
299+
IsDevelop = true,
300+
Regex = "master"
301+
}
302+
}
303+
}
304+
};
305+
306+
using (var fixture = new EmptyRepositoryFixture())
307+
{
308+
// Create release branch
309+
fixture.MakeACommit();
310+
fixture.BranchTo("release/1.0");
311+
fixture.MakeACommit();
312+
fixture.Checkout("master");
313+
fixture.MakeACommit();
314+
fixture.AssertFullSemver(config, "1.0.1+1");
315+
316+
// create a feature branch from master and verify the version
317+
fixture.BranchTo("feature/test");
318+
fixture.AssertFullSemver(config, "1.0.1-test.1+1");
319+
}
320+
}
321+
322+
[Test]
323+
public void ShouldPickUpVersionFromMasterAfterReleaseBranchMergedBack()
324+
{
325+
var config = new Config
326+
{
327+
Branches = new Dictionary<string, BranchConfig>
328+
{
329+
{
330+
"master", new BranchConfig()
331+
{
332+
IsDevelop = true,
333+
Regex = "master"
334+
}
335+
}
336+
}
337+
};
338+
339+
using (var fixture = new EmptyRepositoryFixture())
340+
{
341+
// Create release branch
342+
fixture.MakeACommit();
343+
fixture.BranchTo("release/1.0");
344+
fixture.MakeACommit();
345+
346+
// merge release into master
347+
fixture.Checkout("master");
348+
fixture.MergeNoFF("release/1.0");
349+
fixture.AssertFullSemver(config, "1.0.1+2");
350+
351+
// create a feature branch from master and verify the version
352+
fixture.BranchTo("feature/test");
353+
fixture.AssertFullSemver(config, "1.0.1-test.1+2");
354+
}
355+
}
356+
}
357+
358+
public class WhenFeatureBranchHasNoConfig
359+
{
360+
[Test]
361+
public void ShouldPickUpVersionFromMasterAfterReleaseBranchCreated()
362+
{
363+
using (var fixture = new EmptyRepositoryFixture())
364+
{
365+
// Create develop and release branches
366+
fixture.MakeACommit();
367+
fixture.BranchTo("develop");
368+
fixture.MakeACommit();
369+
fixture.BranchTo("release/1.0");
370+
fixture.MakeACommit();
371+
fixture.Checkout("develop");
372+
fixture.MakeACommit();
373+
fixture.AssertFullSemver("1.1.0-alpha.1");
374+
375+
// create a misnamed feature branch (i.e. it uses the default config) from develop and verify the version
376+
fixture.BranchTo("misnamed");
377+
fixture.AssertFullSemver("1.1.0-misnamed.1+1");
378+
}
379+
}
380+
381+
[Test]
382+
public void ShouldPickUpVersionFromDevelopAfterReleaseBranchMergedBack()
383+
{
384+
using (var fixture = new EmptyRepositoryFixture())
385+
{
386+
// Create develop and release branches
387+
fixture.MakeACommit();
388+
fixture.BranchTo("develop");
389+
fixture.MakeACommit();
390+
fixture.BranchTo("release/1.0");
391+
fixture.MakeACommit();
392+
393+
// merge release into develop
394+
fixture.Checkout("develop");
395+
fixture.MergeNoFF("release/1.0");
396+
fixture.AssertFullSemver("1.1.0-alpha.2");
397+
398+
// create a misnamed feature branch (i.e. it uses the default config) from develop and verify the version
399+
fixture.BranchTo("misnamed");
400+
fixture.AssertFullSemver("1.1.0-misnamed.1+2");
401+
}
402+
}
403+
404+
// ReSharper disable once MemberHidesStaticFromOuterClass
405+
public class WhenMasterMarkedAsIsDevelop
406+
{
407+
[Test]
408+
public void ShouldPickUpVersionFromMasterAfterReleaseBranchCreated()
409+
{
410+
var config = new Config
411+
{
412+
Branches = new Dictionary<string, BranchConfig>
413+
{
414+
{
415+
"master", new BranchConfig()
416+
{
417+
IsDevelop = true,
418+
Regex = "master"
419+
}
420+
}
421+
}
422+
};
423+
424+
using (var fixture = new EmptyRepositoryFixture())
425+
{
426+
// Create release branch
427+
fixture.MakeACommit();
428+
fixture.BranchTo("release/1.0");
429+
fixture.MakeACommit();
430+
fixture.Checkout("master");
431+
fixture.MakeACommit();
432+
fixture.AssertFullSemver(config, "1.0.1+1");
433+
434+
// create a misnamed feature branch (i.e. it uses the default config) from master and verify the version
435+
fixture.BranchTo("misnamed");
436+
fixture.AssertFullSemver(config, "1.0.1-misnamed.1+1");
437+
}
438+
}
439+
440+
[Test]
441+
public void ShouldPickUpVersionFromMasterAfterReleaseBranchMergedBack()
442+
{
443+
var config = new Config
444+
{
445+
Branches = new Dictionary<string, BranchConfig>
446+
{
447+
{
448+
"master", new BranchConfig()
449+
{
450+
IsDevelop = true,
451+
Regex = "master"
452+
}
453+
}
454+
}
455+
};
456+
457+
using (var fixture = new EmptyRepositoryFixture())
458+
{
459+
// Create release branch
460+
fixture.MakeACommit();
461+
fixture.BranchTo("release/1.0");
462+
fixture.MakeACommit();
463+
464+
// merge release into master
465+
fixture.Checkout("master");
466+
fixture.MergeNoFF("release/1.0");
467+
fixture.AssertFullSemver(config, "1.0.1+2");
468+
469+
// create a misnamed feature branch (i.e. it uses the default config) from master and verify the version
470+
fixture.BranchTo("misnamed");
471+
fixture.AssertFullSemver(config, "1.0.1-misnamed.1+2");
472+
}
473+
}
474+
}
475+
}
476+
242477
[Test]
243478
public void PickUpVersionFromMasterMarkedWithIsTracksReleaseBranches()
244479
{

0 commit comments

Comments
 (0)