Skip to content

Commit 7311fd5

Browse files
committed
Uncomment line in GitVersionFinder to test new way of doing things. It kinda works but lots of small differences causing test breaks
1 parent b7f2386 commit 7311fd5

14 files changed

+65
-35
lines changed

GitVersionCore.Tests/GitVersionContextBuilder.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ public GitVersionContextBuilder WithTaggedMaster()
2929
return this;
3030
}
3131

32+
public GitVersionContextBuilder WithDevelopBranch()
33+
{
34+
repository = CreateRepository();
35+
var mockBranch = new MockBranch("develop")
36+
{
37+
new MockCommit()
38+
};
39+
((MockBranchCollection) repository.Branches).Add(mockBranch);
40+
((MockRepository)repository).Head = mockBranch;
41+
return this;
42+
}
43+
3244
public GitVersionContext Build()
3345
{
3446
return new GitVersionContext(repository ?? CreateRepository(), config ?? new Config());

GitVersionCore.Tests/VersionCalculation/BaseVersionCalculatorTests.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using GitVersion;
55
using GitVersion.VersionCalculation;
66
using GitVersion.VersionCalculation.BaseVersionCalculators;
7+
using LibGit2Sharp;
78
using NUnit.Framework;
89
using Shouldly;
910

@@ -21,7 +22,7 @@ public void ChoosesHighestVersionReturnedFromStrategies()
2122

2223
baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0");
2324
baseVersion.ShouldIncrement.ShouldBe(true);
24-
baseVersion.BaseVersionWhenFrom.ShouldBe(dateTimeOffset);
25+
baseVersion.BaseVersionSource.When().ShouldBe(dateTimeOffset);
2526
}
2627

2728
[Test]
@@ -35,7 +36,7 @@ public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhen()
3536

3637
baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0");
3738
baseVersion.ShouldIncrement.ShouldBe(true);
38-
baseVersion.BaseVersionWhenFrom.ShouldBe(when);
39+
baseVersion.BaseVersionSource.When().ShouldBe(when);
3940
}
4041

4142
[Test]
@@ -49,16 +50,16 @@ public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhenReversedOrder()
4950

5051
baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0");
5152
baseVersion.ShouldIncrement.ShouldBe(true);
52-
baseVersion.BaseVersionWhenFrom.ShouldBe(when);
53+
baseVersion.BaseVersionSource.When().ShouldBe(when);
5354
}
5455

5556
class V1Strategy : BaseVersionStrategy
5657
{
57-
readonly DateTimeOffset? when;
58+
readonly Commit when;
5859

5960
public V1Strategy(DateTimeOffset? when)
6061
{
61-
this.when = when;
62+
this.when = when == null ? null : new MockCommit { CommitterEx = when.Value.ToSignature() };
6263
}
6364

6465
public override BaseVersion GetVersion(GitVersionContext context)
@@ -69,11 +70,11 @@ public override BaseVersion GetVersion(GitVersionContext context)
6970

7071
class V2Strategy : BaseVersionStrategy
7172
{
72-
DateTimeOffset? when;
73+
Commit when;
7374

7475
public V2Strategy(DateTimeOffset? when)
7576
{
76-
this.when = when;
77+
this.when = when == null ? null : new MockCommit { CommitterEx = when.Value.ToSignature() };
7778
}
7879

7980
public override BaseVersion GetVersion(GitVersionContext context)

GitVersionCore.Tests/VersionCalculation/NewNextVersionCalculatorTests.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class NewNextVersionCalculatorTests
1111
[Test]
1212
public void ShouldIncrementVersionBasedOnConfig()
1313
{
14-
var baseCalculator = new TestBaseVersionCalculator(true, new SemanticVersion(1), DateTimeOffset.Now);
14+
var baseCalculator = new TestBaseVersionCalculator(true, new SemanticVersion(1), new MockCommit());
1515
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "master", "b1a34e", DateTimeOffset.Now);
1616
var sut = new NewNextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData));
1717
var config = new Config();
@@ -29,7 +29,7 @@ public void ShouldIncrementVersionBasedOnConfig()
2929
[Test]
3030
public void DoesNotIncrementWhenBaseVersionSaysNotTo()
3131
{
32-
var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), DateTimeOffset.Now);
32+
var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit());
3333
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "master", "b1a34e", DateTimeOffset.Now);
3434
var sut = new NewNextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData));
3535
var config = new Config();
@@ -43,5 +43,20 @@ public void DoesNotIncrementWhenBaseVersionSaysNotTo()
4343

4444
version.ToString().ShouldBe("1.0.0");
4545
}
46+
47+
[Test]
48+
public void AppliesBranchPreReleaseTag()
49+
{
50+
var baseCalculator = new TestBaseVersionCalculator(false, new SemanticVersion(1), new MockCommit());
51+
var semanticVersionBuildMetaData = new SemanticVersionBuildMetaData(1, "develop", "b1a34e", DateTimeOffset.Now);
52+
var sut = new NewNextVersionCalculator(baseCalculator, new TestMetaDataCalculator(semanticVersionBuildMetaData));
53+
var context = new GitVersionContextBuilder()
54+
.WithDevelopBranch()
55+
.Build();
56+
57+
var version = sut.FindVersion(context);
58+
59+
version.ToString().ShouldBe("1.0.0-unstable.1");
60+
}
4661
}
4762
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
namespace GitVersionCore.Tests.VersionCalculation
22
{
3-
using System;
43
using GitVersion;
54
using GitVersion.VersionCalculation;
65
using GitVersion.VersionCalculation.BaseVersionCalculators;
6+
using LibGit2Sharp;
77

88
public class TestBaseVersionCalculator : IBaseVersionCalculator
99
{
1010
readonly SemanticVersion semanticVersion;
1111
bool shouldIncrement;
12-
DateTimeOffset? when;
12+
Commit source;
1313

14-
public TestBaseVersionCalculator(bool shouldIncrement, SemanticVersion semanticVersion, DateTimeOffset? when)
14+
public TestBaseVersionCalculator(bool shouldIncrement, SemanticVersion semanticVersion, Commit source)
1515
{
1616
this.semanticVersion = semanticVersion;
17-
this.when = when;
17+
this.source = source;
1818
this.shouldIncrement = shouldIncrement;
1919
}
2020

2121
public BaseVersion GetBaseVersion(GitVersionContext context)
2222
{
23-
return new BaseVersion(shouldIncrement, semanticVersion, when);
23+
return new BaseVersion(shouldIncrement, semanticVersion, source);
2424
}
2525
}
2626
}

GitVersionCore.Tests/VersionCalculation/TestMetaDataCalculator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
namespace GitVersionCore.Tests.VersionCalculation
22
{
3-
using System;
43
using GitVersion;
54
using GitVersion.VersionCalculation;
5+
using LibGit2Sharp;
66

77
public class TestMetaDataCalculator : IMetaDataCalculator
88
{
@@ -13,7 +13,7 @@ public TestMetaDataCalculator(SemanticVersionBuildMetaData metaData)
1313
this.metaData = metaData;
1414
}
1515

16-
public SemanticVersionBuildMetaData Create(DateTimeOffset? baseVersionWhenFrom, GitVersionContext context)
16+
public SemanticVersionBuildMetaData Create(Commit baseVersionSource, GitVersionContext context)
1717
{
1818
return metaData;
1919
}

GitVersionCore/Configuration/Config.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public Config()
1818
Branches["develop"] = new BranchConfig
1919
{
2020
Tag = "unstable",
21+
Increment = IncrementStrategy.Minor,
2122
VersioningMode = GitVersion.VersioningMode.ContinuousDeployment
2223
};
2324
}

GitVersionCore/GitVersionFinder.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public SemanticVersion FindVersion(GitVersionContext context)
1010
Logger.WriteInfo("Running against branch: " + context.CurrentBranch.Name);
1111
EnsureMainTopologyConstraints(context);
1212

13+
//return new NewNextVersionCalculator().FindVersion(context);
14+
1315
if (ShouldGitHubFlowVersioningSchemeApply(context.Repository))
1416
{
1517
Logger.WriteInfo("GitHubFlow version strategy will be used");

GitVersionCore/VersionCalculation/BaseVersionCalculator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public BaseVersion GetBaseVersion(GitVersionContext context)
2121
{
2222
if (v1.SemanticVersion > v2.SemanticVersion)
2323
{
24-
return new BaseVersion(v1.ShouldIncrement, v1.SemanticVersion, v1.BaseVersionWhenFrom ?? v2.BaseVersionWhenFrom);
24+
return new BaseVersion(v1.ShouldIncrement, v1.SemanticVersion, v1.BaseVersionSource ?? v2.BaseVersionSource);
2525
}
2626

27-
return new BaseVersion(v2.ShouldIncrement, v2.SemanticVersion, v2.BaseVersionWhenFrom ?? v1.BaseVersionWhenFrom);
27+
return new BaseVersion(v2.ShouldIncrement, v2.SemanticVersion, v2.BaseVersionSource ?? v1.BaseVersionSource);
2828
});
2929
}
3030
}
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
11
namespace GitVersion.VersionCalculation.BaseVersionCalculators
22
{
3-
using System;
3+
using LibGit2Sharp;
44

55
public class BaseVersion
66
{
7-
public BaseVersion(bool shouldIncrement, SemanticVersion semanticVersion, DateTimeOffset? baseVersionWhenFrom)
7+
public BaseVersion(bool shouldIncrement, SemanticVersion semanticVersion, Commit baseVersionSource)
88
{
99
ShouldIncrement = shouldIncrement;
1010
SemanticVersion = semanticVersion;
11-
BaseVersionWhenFrom = baseVersionWhenFrom;
11+
BaseVersionSource = baseVersionSource;
1212
}
1313

1414
public bool ShouldIncrement { get; private set; }
1515

1616
public SemanticVersion SemanticVersion { get; private set; }
1717

18-
/// <summary>
19-
/// Can be null even if the base version has a version
20-
///
21-
/// This happens when the base version doesn't have a time it came from
22-
/// </summary>
23-
public DateTimeOffset? BaseVersionWhenFrom { get; private set; }
18+
public Commit BaseVersionSource { get; private set; }
2419
}
2520
}

GitVersionCore/VersionCalculation/BaseVersionCalculators/LastTagBaseVersionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public override BaseVersion GetVersion(GitVersionContext context)
66
{
77
VersionTaggedCommit version;
88
if (new LastTaggedReleaseFinder(context).GetVersion(out version))
9-
return new BaseVersion(true, version.SemVer, version.Commit.When());
9+
return new BaseVersion(true, version.SemVer, version.Commit);
1010

1111
return null;
1212
}

GitVersionCore/VersionCalculation/BaseVersionCalculators/MergeMessageBaseVersionStrategy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public override BaseVersion GetVersion(GitVersionContext context)
99
SemanticVersion semanticVersion;
1010
// TODO when this approach works, inline the other class into here
1111
if (MergeMessageParser.TryParse(context.CurrentCommit, context.Configuration, out semanticVersion))
12-
return new BaseVersion(true, semanticVersion, commit.When());
12+
return new BaseVersion(true, semanticVersion, commit);
1313
}
1414
return null;
1515
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
namespace GitVersion.VersionCalculation
22
{
3-
using System;
3+
using LibGit2Sharp;
44

55
public interface IMetaDataCalculator
66
{
7-
SemanticVersionBuildMetaData Create(DateTimeOffset? baseVersionWhenFrom, GitVersionContext context);
7+
SemanticVersionBuildMetaData Create(Commit baseVersionSource, GitVersionContext context);
88
}
99
}

GitVersionCore/VersionCalculation/MetaDataCalculator.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
namespace GitVersion.VersionCalculation
22
{
3-
using System;
43
using System.Linq;
54
using LibGit2Sharp;
65

76
public class MetaDataCalculator : IMetaDataCalculator
87
{
9-
public SemanticVersionBuildMetaData Create(DateTimeOffset? baseVersionWhenFrom, GitVersionContext context)
8+
public SemanticVersionBuildMetaData Create(Commit baseVersionSource, GitVersionContext context)
109
{
1110
var qf = new CommitFilter
1211
{
13-
Since = baseVersionWhenFrom,
12+
Since = baseVersionSource,
1413
Until = context.CurrentCommit,
1514
SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Time
1615
};

GitVersionCore/VersionCalculation/NewNextVersionCalculator.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ public SemanticVersion FindVersion(GitVersionContext context)
2424

2525
if (baseVersion.ShouldIncrement) IncrementVersion(context, baseVersion);
2626

27-
baseVersion.SemanticVersion.BuildMetaData = metaDataCalculator.Create(baseVersion.BaseVersionWhenFrom, context);
27+
if (!baseVersion.SemanticVersion.PreReleaseTag.HasTag() && !string.IsNullOrEmpty(context.Configuration.Tag))
28+
{
29+
baseVersion.SemanticVersion.PreReleaseTag = new SemanticVersionPreReleaseTag(context.Configuration.Tag, 1);
30+
}
31+
32+
baseVersion.SemanticVersion.BuildMetaData = metaDataCalculator.Create(baseVersion.BaseVersionSource, context);
2833

2934
return baseVersion.SemanticVersion;
3035
}

0 commit comments

Comments
 (0)