Skip to content

Commit 513004a

Browse files
committed
Added missing base version finder
1 parent f008d19 commit 513004a

File tree

6 files changed

+86
-3
lines changed

6 files changed

+86
-3
lines changed

GitVersionCore.Tests/GitVersionContextBuilder.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,25 @@ public GitVersionContextBuilder WithTaggedMaster()
2929
return this;
3030
}
3131

32+
public GitVersionContextBuilder AddCommit()
33+
{
34+
((MockBranch)repository.Head).Add(new MockCommit());
35+
return this;
36+
}
37+
3238
public GitVersionContextBuilder WithDevelopBranch()
39+
{
40+
return WithBranch("develop");
41+
}
42+
43+
public GitVersionContextBuilder WithBranch(string branchName)
3344
{
3445
repository = CreateRepository();
35-
var mockBranch = new MockBranch("develop")
46+
var mockBranch = new MockBranch(branchName)
3647
{
3748
new MockCommit()
3849
};
39-
((MockBranchCollection) repository.Branches).Add(mockBranch);
50+
((MockBranchCollection)repository.Branches).Add(mockBranch);
4051
((MockRepository)repository).Head = mockBranch;
4152
return this;
4253
}

GitVersionCore.Tests/GitVersionCore.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@
121121
<Compile Include="GitVersionContextBuilder.cs" />
122122
<Compile Include="VersionCalculation\Strategies\LastTagBaseVersionStrategyTests.cs" />
123123
<Compile Include="VersionCalculation\Strategies\MergeMessageBaseVersionStrategyTests.cs" />
124+
<Compile Include="VersionCalculation\Strategies\VersionInBranchBaseVersionStrategyTests.cs" />
124125
<Compile Include="VersionCalculation\TestBaseVersionCalculator.cs" />
125126
<Compile Include="VersionCalculation\TestMetaDataCalculator.cs" />
126127
</ItemGroup>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
namespace GitVersionCore.Tests.VersionCalculation.Strategies
2+
{
3+
using GitVersion.VersionCalculation.BaseVersionCalculators;
4+
using NUnit.Framework;
5+
using Shouldly;
6+
7+
[TestFixture]
8+
public class VersionInBranchBaseVersionStrategyTests
9+
{
10+
[Test]
11+
[TestCase("release-2.0.0", "2.0.0")]
12+
[TestCase("release/2.0.0", "2.0.0")]
13+
[TestCase("hotfix-2.0.0", "2.0.0")]
14+
[TestCase("hotfix/2.0.0", "2.0.0")]
15+
[TestCase("hotfix/2.0.0", "2.0.0")]
16+
[TestCase("feature/JIRA-123", null)]
17+
public void CanTakeVersionFromBranchName(string branchName, string expectedBaseVersion)
18+
{
19+
var context = new GitVersionContextBuilder()
20+
.WithBranch(branchName)
21+
.AddCommit()
22+
.Build();
23+
24+
var sut = new VersionInBranchBaseVersionStrategy();
25+
26+
var baseVersion = sut.GetVersion(context);
27+
28+
if (expectedBaseVersion == null)
29+
baseVersion.ShouldBe(null);
30+
else
31+
baseVersion.SemanticVersion.ToString().ShouldBe(expectedBaseVersion);
32+
}
33+
}
34+
}

GitVersionCore/GitVersionCore.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
<Compile Include="VersionCalculation\BaseVersionCalculators\ConfigNextVersionBaseVersionStrategy.cs" />
9494
<Compile Include="VersionCalculation\BaseVersionCalculators\LastTagBaseVersionStrategy.cs" />
9595
<Compile Include="VersionCalculation\BaseVersionCalculators\MergeMessageBaseVersionStrategy.cs" />
96+
<Compile Include="VersionCalculation\BaseVersionCalculators\VersionInBranchBaseVersionStrategy.cs" />
9697
<Compile Include="VersionCalculation\BaseVersionStrategy.cs" />
9798
<Compile Include="VersionCalculation\IBaseVersionCalculator.cs" />
9899
<Compile Include="VersionCalculation\IMetaDataCalculator.cs" />
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
namespace GitVersion.VersionCalculation.BaseVersionCalculators
2+
{
3+
using System;
4+
using System.Linq;
5+
6+
public class VersionInBranchBaseVersionStrategy : BaseVersionStrategy
7+
{
8+
public override BaseVersion GetVersion(GitVersionContext context)
9+
{
10+
var versionInBranch = GetVersionInBranch(context);
11+
if (versionInBranch != null)
12+
{
13+
var firstCommitOfBranch = context.CurrentBranch.Commits.Last();
14+
return new BaseVersion(false, versionInBranch.Item2, firstCommitOfBranch);
15+
}
16+
17+
return null;
18+
}
19+
20+
Tuple<string, SemanticVersion> GetVersionInBranch(GitVersionContext context)
21+
{
22+
var branchParts = context.CurrentBranch.Name.Split('/', '-');
23+
foreach (var part in branchParts)
24+
{
25+
SemanticVersion semanticVersion;
26+
if (SemanticVersion.TryParse(part, context.Configuration.GitTagPrefix, out semanticVersion))
27+
{
28+
return Tuple.Create(part, semanticVersion);
29+
}
30+
}
31+
32+
return null;
33+
}
34+
}
35+
}

GitVersionCore/VersionCalculation/NewNextVersionCalculator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ public NewNextVersionCalculator(IBaseVersionCalculator baseVersionCalculator = n
1515
new BaseVersionCalculator(
1616
new ConfigNextVersionBaseVersionStrategy(),
1717
new LastTagBaseVersionStrategy(),
18-
new MergeMessageBaseVersionStrategy());
18+
new MergeMessageBaseVersionStrategy(),
19+
new VersionInBranchBaseVersionStrategy());
1920
}
2021

2122
public SemanticVersion FindVersion(GitVersionContext context)

0 commit comments

Comments
 (0)