Skip to content

Commit c4dffb3

Browse files
committed
bad tag should be skipped when finding last major
1 parent f3c88fb commit c4dffb3

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System;
2+
using GitVersion;
3+
using NUnit.Framework;
4+
5+
[TestFixture]
6+
public class LastMinorVersionFinderTests
7+
{
8+
[Test]
9+
public void Should_get_last_minor_release()
10+
{
11+
using (var fixture = new EmptyRepositoryFixture(new Config()))
12+
{
13+
var commit0 = fixture.Repository.MakeACommit(new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero));
14+
fixture.Repository.Tags.Add("1.0.0", commit0);
15+
var commit1 = fixture.Repository.MakeACommit(new DateTimeOffset(2001, 1, 1, 1, 1, 1, TimeSpan.Zero));
16+
fixture.Repository.Tags.Add("1.1.0", commit1);
17+
var commit2 = fixture.Repository.MakeACommit(new DateTimeOffset(2002, 1, 1, 1, 1, 1, TimeSpan.Zero));
18+
fixture.Repository.Tags.Add("1.1.1", commit2);
19+
20+
var dateTimeOffset = LastMinorVersionFinder.Execute(fixture.Repository, new Config(), fixture.Repository.Head.Tip);
21+
Assert.AreEqual(2001, dateTimeOffset.Year);
22+
}
23+
}
24+
[Test]
25+
public void Should_ignore_invalid_tag()
26+
{
27+
using (var fixture = new EmptyRepositoryFixture(new Config()))
28+
{
29+
var commit1 = fixture.Repository.MakeACommit(new DateTimeOffset(2001, 1, 1, 1, 1, 1, TimeSpan.Zero));
30+
fixture.Repository.Tags.Add("1.1.0", commit1);
31+
var commit2 = fixture.Repository.MakeACommit(new DateTimeOffset(2002, 1, 1, 1, 1, 1, TimeSpan.Zero));
32+
fixture.Repository.Tags.Add("BadTag", commit2);
33+
34+
var dateTimeOffset = LastMinorVersionFinder.Execute(fixture.Repository, new Config(), fixture.Repository.Head.Tip);
35+
Assert.AreEqual(2001, dateTimeOffset.Year);
36+
}
37+
}
38+
}

GitVersionCore.Tests/GitVersionCore.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
<Compile Include="Fixtures\RemoteRepositoryFixture.cs" />
7777
<Compile Include="GitDirFinderTests.cs" />
7878
<Compile Include="Fixtures\BaseGitFlowRepositoryFixture.cs" />
79+
<Compile Include="GitFlowFeatureBranchTests.cs" />
7980
<Compile Include="IntegrationTests\RemoteRepositoryTests.cs" />
8081
<Compile Include="IntegrationTests\GitFlow\DevelopScenarios.cs" />
8182
<Compile Include="IntegrationTests\GitFlow\GitFlowFeatureBranchTests.cs" />

GitVersionCore/LastMinorVersionFinder.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public static DateTimeOffset Execute(IRepository repo, Config configuration, Com
1919
)
2020
{
2121
var fromTag = GetTimeStampFromTag(repo, configuration, commit);
22-
22+
2323
if (fromTag != DateTimeOffset.MinValue)
2424
{
2525
return fromTag;
@@ -28,11 +28,18 @@ public static DateTimeOffset Execute(IRepository repo, Config configuration, Com
2828
return commit.When();
2929
}
3030

31-
3231
static DateTimeOffset GetTimeStampFromTag(IRepository repository, Config configuration, Commit targetCommit)
3332
{
3433
var allMajorMinorTags = repository.Tags
35-
.Where(x => SemanticVersion.Parse(x.Name, configuration.TagPrefix).Patch == 0)
34+
.Where(x =>
35+
{
36+
SemanticVersion version;
37+
if (!SemanticVersion.TryParse(x.Name, configuration.TagPrefix, out version))
38+
{
39+
return false;
40+
}
41+
return version.Patch == 0;
42+
})
3643
.ToDictionary(x => x.PeeledTarget(), x => x);
3744
var olderThan = targetCommit.When();
3845
foreach (var commit in repository.Head.Commits.Where(x => x.When() <= olderThan))

0 commit comments

Comments
 (0)