Skip to content

Commit 02e8059

Browse files
committed
Adding LastTagBaseVersionStrategy
1 parent 24bc02b commit 02e8059

File tree

7 files changed

+60
-3
lines changed

7 files changed

+60
-3
lines changed
Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace GitVersionCore.Tests.VersionCalculation.Strategies
1+
namespace GitVersionCore.Tests
22
{
33
using GitVersion;
44
using LibGit2Sharp;
@@ -20,6 +20,15 @@ public GitVersionContextBuilder WithConfig(Config config)
2020
return this;
2121
}
2222

23+
public GitVersionContextBuilder WithTaggedMaster()
24+
{
25+
repository = CreateRepository();
26+
var target = repository.Head.Tip;
27+
((MockTagCollection)repository.Tags).Add(new MockTag ("1.0.0", target));
28+
((MockBranch)repository.Head).Add(new MockCommit { CommitterEx = SignatureBuilder.SignatureNow() });
29+
return this;
30+
}
31+
2332
public GitVersionContext Build()
2433
{
2534
return new GitVersionContext(repository ?? CreateRepository(), config ?? new Config());
@@ -34,6 +43,7 @@ IRepository CreateRepository()
3443
{
3544
mockBranch
3645
},
46+
Tags = new MockTagCollection(),
3747
Head = mockBranch
3848
};
3949

GitVersionCore.Tests/GitVersionCore.Tests.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@
117117
<Compile Include="VariableProviderTests.cs" />
118118
<Compile Include="VersionCalculation\BaseVersionCalculatorTests.cs" />
119119
<Compile Include="VersionCalculation\Strategies\ConfigNextVersionBaseVersionStrategyTests.cs" />
120-
<Compile Include="VersionCalculation\Strategies\GitVersionContextBuilder.cs" />
120+
<Compile Include="GitVersionContextBuilder.cs" />
121+
<Compile Include="VersionCalculation\Strategies\LastTagBaseVersionStrategyTests.cs" />
121122
<Compile Include="VersionCalculation\Strategies\MergeMessageBaseVersionStrategyTests.cs" />
122123
</ItemGroup>
123124
<ItemGroup>

GitVersionCore.Tests/Mocks/MockTag.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ public override GitObject Target
1515
get { return TargetEx; }
1616
}
1717
public TagAnnotation AnnotationEx;
18+
19+
public MockTag() { }
20+
21+
public MockTag(string name, Commit target)
22+
{
23+
NameEx = name;
24+
TargetEx = target;
25+
}
26+
1827
public override TagAnnotation Annotation
1928
{
2029
get { return AnnotationEx; }

GitVersionCore.Tests/VersionCalculation/BaseVersionCalculatorTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using GitVersion;
44
using GitVersion.VersionCalculation;
55
using GitVersion.VersionCalculation.BaseVersionCalculators;
6-
using GitVersionCore.Tests.VersionCalculation.Strategies;
76
using NUnit.Framework;
87
using Shouldly;
98

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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 LastTagBaseVersionStrategyTests
9+
{
10+
[Test]
11+
public void ShouldAllowVersionIncremenet()
12+
{
13+
var context = new GitVersionContextBuilder()
14+
.WithTaggedMaster()
15+
.Build();
16+
var sut = new LastTagBaseVersionStrategy();
17+
18+
var baseVersion = sut.GetVersion(context);
19+
20+
baseVersion.ShouldIncrement.ShouldBe(true);
21+
}
22+
}
23+
}

GitVersionCore/GitVersionCore.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
<Compile Include="VersionCalculation\BaseVersionCalculator.cs" />
9191
<Compile Include="VersionCalculation\BaseVersionCalculators\BaseVersion.cs" />
9292
<Compile Include="VersionCalculation\BaseVersionCalculators\ConfigNextVersionBaseVersionStrategy.cs" />
93+
<Compile Include="VersionCalculation\BaseVersionCalculators\LastTagBaseVersionStrategy.cs" />
9394
<Compile Include="VersionCalculation\BaseVersionCalculators\MergeMessageBaseVersionStrategy.cs" />
9495
<Compile Include="VersionCalculation\BaseVersionStrategy.cs" />
9596
<Compile Include="VersioningModes\ContinuousDeliveryMode.cs" />
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace GitVersion.VersionCalculation.BaseVersionCalculators
2+
{
3+
public class LastTagBaseVersionStrategy : BaseVersionStrategy
4+
{
5+
public override BaseVersion GetVersion(GitVersionContext context)
6+
{
7+
VersionTaggedCommit version;
8+
if (new LastTaggedReleaseFinder(context).GetVersion(out version))
9+
return new BaseVersion(true, version.SemVer);
10+
11+
return null;
12+
}
13+
}
14+
}

0 commit comments

Comments
 (0)