Skip to content

Commit b4597ab

Browse files
committed
Merge pull request #757 from okb/feature/next-version-is-integer
Allow next-version to be an integer
2 parents baec6d1 + 3547cc5 commit b4597ab

File tree

3 files changed

+89
-1
lines changed

3 files changed

+89
-1
lines changed

src/GitVersionCore.Tests/ConfigProviderTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,36 @@ public void CanProvideConfigForNewBranch()
116116
config.Branches["bug[/-]"].Tag.ShouldBe("bugfix");
117117
}
118118

119+
[Test]
120+
public void NextVersionCanBeInteger()
121+
{
122+
const string text = "next-version: 2";
123+
SetupConfigFileContent(text);
124+
var config = ConfigurationProvider.Provide(repoPath, fileSystem);
125+
126+
config.NextVersion.ShouldBe("2.0");
127+
}
128+
129+
[Test]
130+
public void NextVersionCanHaveEnormousMinorVersion()
131+
{
132+
const string text = "next-version: 2.118998723";
133+
SetupConfigFileContent(text);
134+
var config = ConfigurationProvider.Provide(repoPath, fileSystem);
135+
136+
config.NextVersion.ShouldBe("2.118998723");
137+
}
138+
139+
[Test]
140+
public void NextVersionCanHavePatch()
141+
{
142+
const string text = "next-version: 2.12.654651698";
143+
SetupConfigFileContent(text);
144+
var config = ConfigurationProvider.Provide(repoPath, fileSystem);
145+
146+
config.NextVersion.ShouldBe("2.12.654651698");
147+
}
148+
119149
[Test]
120150
[MethodImpl(MethodImplOptions.NoInlining)]
121151
public void CanWriteOutEffectiveConfiguration()

src/GitVersionCore.Tests/VersionCalculation/Strategies/ConfigNextVersionBaseVersionStrategyTests.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,50 @@ public void ReturnsNullWhenNoNextVersionIsInConfig()
3535

3636
baseVersion.ShouldBe(null);
3737
}
38+
39+
[Test]
40+
public void NextVersionCanBeInteger()
41+
{
42+
var contextBuilder = new GitVersionContextBuilder()
43+
.WithConfig(new Config
44+
{
45+
NextVersion = "2"
46+
});
47+
var sut = new ConfigNextVersionBaseVersionStrategy();
48+
49+
var baseVersion = sut.GetVersions(contextBuilder.Build()).Single();
50+
51+
baseVersion.SemanticVersion.ToString().ShouldBe("2.0.0");
52+
}
53+
54+
[Test]
55+
public void NextVersionCanHaveEnormousMinorVersion()
56+
{
57+
var contextBuilder = new GitVersionContextBuilder()
58+
.WithConfig(new Config
59+
{
60+
NextVersion = "2.118998723"
61+
});
62+
var sut = new ConfigNextVersionBaseVersionStrategy();
63+
64+
var baseVersion = sut.GetVersions(contextBuilder.Build()).Single();
65+
66+
baseVersion.SemanticVersion.ToString().ShouldBe("2.118998723.0");
67+
}
68+
69+
[Test]
70+
public void NextVersionCanHavePatch()
71+
{
72+
var contextBuilder = new GitVersionContextBuilder()
73+
.WithConfig(new Config
74+
{
75+
NextVersion = "2.12.654651698"
76+
});
77+
var sut = new ConfigNextVersionBaseVersionStrategy();
78+
79+
var baseVersion = sut.GetVersions(contextBuilder.Build()).Single();
80+
81+
baseVersion.SemanticVersion.ToString().ShouldBe("2.12.654651698");
82+
}
3883
}
3984
}

src/GitVersionCore/Configuration/Config.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
namespace GitVersion
22
{
3+
using System;
34
using System.Collections.Generic;
5+
using System.Globalization;
46
using System.Linq;
57
using YamlDotNet.Serialization;
68

79
public class Config
810
{
911
Dictionary<string, BranchConfig> branches = new Dictionary<string, BranchConfig>();
12+
string nextVersion;
1013

1114
[YamlMember(Alias = "assembly-versioning-scheme")]
1215
public AssemblyVersioningScheme? AssemblyVersioningScheme { get; set; }
@@ -24,7 +27,17 @@ public class Config
2427
public string ContinuousDeploymentFallbackTag { get; set; }
2528

2629
[YamlMember(Alias = "next-version")]
27-
public string NextVersion { get; set; }
30+
public string NextVersion
31+
{
32+
get { return this.nextVersion; }
33+
set
34+
{
35+
int major;
36+
this.nextVersion = int.TryParse(value, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out major)
37+
? string.Format("{0}.0", major)
38+
: value;
39+
}
40+
}
2841

2942
[YamlMember(Alias = "major-version-bump-message")]
3043
public string MajorVersionBumpMessage { get; set; }

0 commit comments

Comments
 (0)