Skip to content

Commit b9430d7

Browse files
author
Yannick Hein
committed
GitTools#2340 Attempt to fix, but work unfinished
1 parent e425dc5 commit b9430d7

18 files changed

+98
-66
lines changed

src/GitVersionCore.Tests/IntegrationTests/BranchWithoutCommitScenarios.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using NUnit.Framework;
44
using GitVersionCore.Tests.Helpers;
55
using LibGit2Sharp;
6-
using NUnit.Framework;
76

87
namespace GitVersionCore.Tests.IntegrationTests
98
{
@@ -61,7 +60,7 @@ public void BetaBranchCreatedButStillOnTaggedAlphaCommitShouldCreateBetaVersion(
6160
fixture.Checkout("release/1.1.0"); // still on the same commit, but another branch, choosing to build same code as beta now
6261

6362
// Assert
64-
fixture.AssertFullSemver("1.1.0-beta.1", config); //will be 1.1.0-alpha.1, should be 1.1.0-beta.1. Tag is an "alpha" tag from develop branch, only "beta" tags should count when on release branch. If no beta tag found, build new beta version on release branch.
63+
fixture.AssertFullSemver("1.1.0-beta.1", config); //Tag is an "alpha" tag from develop branch, only "beta" tags should count when on release branch. If no beta tag found, build new beta version on release branch.
6564

6665
fixture.Checkout("develop"); // back to develop
6766
fixture.AssertFullSemver("1.1.0-alpha.1", config); //will be 1.1.0-alpha.1 based on tag (as before)

src/GitVersionCore.Tests/IntegrationTests/ReleaseBranchScenarios.cs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,15 @@ public void WhenReleaseBranchOffDevelopIsMergedIntoMasterAndDevelopVersionIsTake
171171
[Test]
172172
public void WhenReleaseBranchOffDevelopIsMergedFFIntoMasterAndDevelopVersionIsTakenWithIt()
173173
{
174+
var config = new Config
175+
{
176+
Branches =
177+
{
178+
{ "release", new BranchConfig { Tag = "beta" } },
179+
{ "develop", new BranchConfig { Tag = "alpha" } }
180+
}
181+
};
182+
174183
using var fixture = new EmptyRepositoryFixture();
175184
fixture.Repository.MakeATaggedCommit("1.0.3");
176185
fixture.Repository.CreateBranch("develop");
@@ -182,12 +191,21 @@ public void WhenReleaseBranchOffDevelopIsMergedFFIntoMasterAndDevelopVersionIsTa
182191
fixture.Checkout("master");
183192
fixture.Repository.Merge("release-2.0.0", Generate.SignatureNow());
184193

185-
fixture.AssertFullSemver("2.0.0+0");
194+
fixture.AssertFullSemver("2.0.0+0", config);
186195
}
187196

188197
[Test]
189198
public void WhenTaggedReleaseBranchOffDevelopIsMergedFFIntoMasterAndDevelopVersionIsTakenWithIt()
190199
{
200+
var config = new Config
201+
{
202+
Branches =
203+
{
204+
{ "release", new BranchConfig { Tag = "beta" } },
205+
{ "develop", new BranchConfig { Tag = "alpha" } }
206+
}
207+
};
208+
191209
using var fixture = new EmptyRepositoryFixture();
192210
fixture.Repository.MakeATaggedCommit("1.0.3");
193211
fixture.Repository.CreateBranch("develop");
@@ -197,12 +215,12 @@ public void WhenTaggedReleaseBranchOffDevelopIsMergedFFIntoMasterAndDevelopVersi
197215
fixture.Checkout("release-2.0.0");
198216
fixture.Repository.MakeCommits(4);
199217
fixture.Repository.MakeATaggedCommit("2.0.0-beta.1+4");
200-
fixture.AssertFullSemver("2.0.0-beta.1+4");
218+
fixture.AssertFullSemver("2.0.0-beta.1+4", config);
201219
fixture.Checkout("master");
202220
fixture.Repository.Merge("release-2.0.0", Generate.SignatureNow());
203221

204222
// Do not take tag into account since tag is a "beta" tag on the "release" branch but now "master" is checked out
205-
fixture.AssertFullSemver("2.0.0+0");
223+
fixture.AssertFullSemver("2.0.0+0", config);
206224
}
207225

208226
[Test]

src/GitVersionCore.Tests/VersionCalculation/SemanticVersionTests.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public void ValidateVersionParsing(
4141
{
4242
fullFormattedVersionString ??= versionString;
4343

44-
SemanticVersion.TryParse(versionString, tagPrefixRegex, out var version).ShouldBe(true, versionString);
44+
SemanticVersion.TryParse(versionString, tagPrefixRegex, tag, out var version).ShouldBe(true, versionString);
4545
Assert.AreEqual(major, version.Major);
4646
Assert.AreEqual(minor, version.Minor);
4747
Assert.AreEqual(patch, version.Patch);
@@ -58,7 +58,7 @@ public void ValidateVersionParsing(
5858
[TestCase("some-T-ext")]
5959
public void ValidateInvalidVersionParsing(string versionString)
6060
{
61-
Assert.IsFalse(SemanticVersion.TryParse(versionString, null, out _), "TryParse Result");
61+
Assert.IsFalse(SemanticVersion.TryParse(versionString, null, null, out _), "TryParse Result");
6262
}
6363

6464
[Test]
@@ -74,16 +74,16 @@ public void LegacySemVerTest()
7474
[Test]
7575
public void VersionSorting()
7676
{
77-
SemanticVersion.Parse("1.0.0", null).ShouldBeGreaterThan(SemanticVersion.Parse("1.0.0-beta", null));
78-
SemanticVersion.Parse("1.0.0-beta.2", null).ShouldBeGreaterThan(SemanticVersion.Parse("1.0.0-beta.1", null));
79-
SemanticVersion.Parse("1.0.0-beta.1", null).ShouldBeLessThan(SemanticVersion.Parse("1.0.0-beta.2", null));
77+
SemanticVersion.Parse("1.0.0", null, null).ShouldBeGreaterThan(SemanticVersion.Parse("1.0.0-beta", null, null));
78+
SemanticVersion.Parse("1.0.0-beta.2", null, null).ShouldBeGreaterThan(SemanticVersion.Parse("1.0.0-beta.1", null, null));
79+
SemanticVersion.Parse("1.0.0-beta.1", null, null).ShouldBeLessThan(SemanticVersion.Parse("1.0.0-beta.2", null, null));
8080
}
8181

8282
[Test]
8383
public void ToStringJTests()
8484
{
85-
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null).ToString("j"));
86-
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3-beta.4", null).ToString("j"));
85+
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null, null).ToString("j"));
86+
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3-beta.4", null, "beta").ToString("j"));
8787
var fullSemVer = new SemanticVersion
8888
{
8989
Major = 1,
@@ -103,8 +103,8 @@ public void ToStringJTests()
103103
[Test]
104104
public void ToStringSTests()
105105
{
106-
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null).ToString("s"));
107-
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4", null).ToString("s"));
106+
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null, null).ToString("s"));
107+
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4", null, null).ToString("s"));
108108
var fullSemVer = new SemanticVersion
109109
{
110110
Major = 1,
@@ -139,8 +139,8 @@ public void ToStringSTests()
139139
[Test]
140140
public void ToStringLTests()
141141
{
142-
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null).ToString("l"));
143-
Assert.AreEqual("1.2.3-beta4", SemanticVersion.Parse("1.2.3-beta.4", null).ToString("l"));
142+
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null, null).ToString("l"));
143+
Assert.AreEqual("1.2.3-beta4", SemanticVersion.Parse("1.2.3-beta.4", null, null).ToString("l"));
144144
var fullSemVer = new SemanticVersion
145145
{
146146
Major = 1,
@@ -160,8 +160,8 @@ public void ToStringLTests()
160160
[Test]
161161
public void ToStringLpTests()
162162
{
163-
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null).ToString("lp"));
164-
Assert.AreEqual("1.2.3-beta0004", SemanticVersion.Parse("1.2.3-beta.4", null).ToString("lp"));
163+
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null, null).ToString("lp"));
164+
Assert.AreEqual("1.2.3-beta0004", SemanticVersion.Parse("1.2.3-beta.4", null, null).ToString("lp"));
165165
var fullSemVer = new SemanticVersion
166166
{
167167
Major = 1,
@@ -181,9 +181,9 @@ public void ToStringLpTests()
181181
[Test]
182182
public void ToStringTests()
183183
{
184-
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null).ToString());
185-
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4", null).ToString());
186-
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4+5", null).ToString());
184+
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null, null).ToString());
185+
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4", null, null).ToString());
186+
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4+5", null, null).ToString());
187187
var fullSemVer = new SemanticVersion
188188
{
189189
Major = 1,
@@ -218,9 +218,9 @@ public void ToStringTests()
218218
[Test]
219219
public void ToStringFTests()
220220
{
221-
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null).ToString("f"));
222-
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4", null).ToString("f"));
223-
Assert.AreEqual("1.2.3-beta.4+5", SemanticVersion.Parse("1.2.3-beta.4+5", null).ToString("f"));
221+
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null, null).ToString("f"));
222+
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4", null, null).ToString("f"));
223+
Assert.AreEqual("1.2.3-beta.4+5", SemanticVersion.Parse("1.2.3-beta.4+5", null, null).ToString("f"));
224224
var fullSemVer = new SemanticVersion
225225
{
226226
Major = 1,
@@ -240,9 +240,9 @@ public void ToStringFTests()
240240
[Test]
241241
public void ToStringITests()
242242
{
243-
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4", null).ToString("i"));
244-
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null).ToString("i"));
245-
Assert.AreEqual("1.2.3-beta.4+5", SemanticVersion.Parse("1.2.3-beta.4+5", null).ToString("i"));
243+
Assert.AreEqual("1.2.3-beta.4", SemanticVersion.Parse("1.2.3-beta.4", null, null).ToString("i"));
244+
Assert.AreEqual("1.2.3", SemanticVersion.Parse("1.2.3", null, null).ToString("i"));
245+
Assert.AreEqual("1.2.3-beta.4+5", SemanticVersion.Parse("1.2.3-beta.4+5", null, null).ToString("i"));
246246
var fullSemVer = new SemanticVersion
247247
{
248248
Major = 1,

src/GitVersionCore.Tests/VersionConverters/AssemblyInfoFileUpdaterTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void ShouldCreateAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo(strin
4646
var workingDir = Path.GetTempPath();
4747
var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension;
4848
var fullPath = Path.Combine(workingDir, assemblyInfoFile);
49-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
49+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v", null), new TestEffectiveConfiguration(), false);
5050

5151
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
5252
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
@@ -64,7 +64,7 @@ public void ShouldCreateAssemblyInfoFileAtPathWhenNotExistsAndEnsureAssemblyInfo
6464
var workingDir = Path.GetTempPath();
6565
var assemblyInfoFile = Path.Combine("src", "Project", "Properties", "VersionAssemblyInfo." + fileExtension);
6666
var fullPath = Path.Combine(workingDir, assemblyInfoFile);
67-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
67+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v", null), new TestEffectiveConfiguration(), false);
6868

6969
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
7070
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
@@ -85,7 +85,7 @@ public void ShouldCreateAssemblyInfoFilesAtPathWhenNotExistsAndEnsureAssemblyInf
8585
"AssemblyInfo." + fileExtension,
8686
Path.Combine("src", "Project", "Properties", "VersionAssemblyInfo." + fileExtension)
8787
};
88-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
88+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v", null), new TestEffectiveConfiguration(), false);
8989

9090
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
9191
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFiles.ToArray()));
@@ -105,7 +105,7 @@ public void ShouldNotCreateAssemblyInfoFileWhenNotExistsAndNotEnsureAssemblyInfo
105105
var workingDir = Path.GetTempPath();
106106
var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension;
107107
var fullPath = Path.Combine(workingDir, assemblyInfoFile);
108-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
108+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v", null), new TestEffectiveConfiguration(), false);
109109

110110
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
111111
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, false, assemblyInfoFile));
@@ -120,7 +120,7 @@ public void ShouldNotCreateAssemblyInfoFileForUnknownSourceCodeAndEnsureAssembly
120120
var workingDir = Path.GetTempPath();
121121
var assemblyInfoFile = "VersionAssemblyInfo.js";
122122
var fullPath = Path.Combine(workingDir, assemblyInfoFile);
123-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
123+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v", null), new TestEffectiveConfiguration(), false);
124124

125125
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
126126
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
@@ -134,7 +134,7 @@ public void ShouldStartSearchFromWorkingDirectory()
134134
fileSystem = Substitute.For<IFileSystem>();
135135
var workingDir = Path.GetTempPath();
136136
var assemblyInfoFiles = Array.Empty<string>();
137-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
137+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v", null), new TestEffectiveConfiguration(), false);
138138

139139
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
140140
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, false, assemblyInfoFiles.ToArray()));

src/GitVersionCore.Tests/VersionConverters/ProjectFileUpdaterTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public void UpdateProjectXmlVersionElementWithStandardXmlInsertsElement(string x
177177
{
178178
using var projectFileUpdater = new ProjectFileUpdater(log, fileSystem);
179179

180-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
180+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v", null), new TestEffectiveConfiguration(), false);
181181
var xmlRoot = XElement.Parse(xml);
182182
projectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
183183

@@ -207,7 +207,7 @@ public void UpdateProjectXmlVersionElementWithStandardXmlModifiesElement(string
207207
{
208208
using var projectFileUpdater = new ProjectFileUpdater(log, fileSystem);
209209

210-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
210+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v", null), new TestEffectiveConfiguration(), false);
211211
var xmlRoot = XElement.Parse(xml);
212212
projectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
213213

@@ -240,7 +240,7 @@ public void UpdateProjectXmlVersionElementWithDuplicatePropertyGroupsModifiesLas
240240
{
241241
using var projectFileUpdater = new ProjectFileUpdater(log, fileSystem);
242242

243-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
243+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v", null), new TestEffectiveConfiguration(), false);
244244
var xmlRoot = XElement.Parse(xml);
245245
projectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
246246

@@ -275,7 +275,7 @@ public void UpdateProjectXmlVersionElementWithMultipleVersionElementsLastOneIsMo
275275
{
276276
using var projectFileUpdater = new ProjectFileUpdater(log, fileSystem);
277277

278-
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
278+
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v", null), new TestEffectiveConfiguration(), false);
279279
var xmlRoot = XElement.Parse(xml);
280280
projectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
281281

src/GitVersionCore/Configuration/ConfigExtensions.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,10 @@ public static string GetBranchSpecificTag(this EffectiveConfiguration configurat
126126
}
127127
if (tagToUse.Contains("{BranchName}"))
128128
{
129-
log.Info("Using branch name to calculate version tag");
129+
if (log != null)
130+
{
131+
log.Info("Using branch name to calculate version tag");
132+
}
130133

131134
var branchName = branchNameOverride ?? branchFriendlyName;
132135
if (!string.IsNullOrWhiteSpace(configuration.BranchPrefixToTrim))

src/GitVersionCore/Configuration/Init/SetNextVersion.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ protected override StepResult HandleResult(string result, Queue<ConfigInitWizard
2020
return StepResult.Ok();
2121
}
2222

23-
if (!SemanticVersion.TryParse(result, string.Empty, out var semVer))
23+
if (!SemanticVersion.TryParse(result, string.Empty, null, out var semVer))
2424
return StepResult.InvalidResponseSelected();
2525

2626
config.NextVersion = semVer.ToString("t");

src/GitVersionCore/Core/Abstractions/IRepositoryMetadataProvider.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ public interface IRepositoryMetadataProvider
3434
/// </summary>
3535
BranchCommit FindCommitBranchWasBranchedFrom(Branch branch, Config configuration, params Branch[] excludedBranches);
3636

37-
SemanticVersion GetCurrentCommitTaggedVersion(GitObject commit, EffectiveConfiguration config);
37+
SemanticVersion GetCurrentCommitTaggedVersion(Branch branch, GitObject commit, EffectiveConfiguration config);
3838
SemanticVersion MaybeIncrement(BaseVersion baseVersion, GitVersionContext context);
39-
IEnumerable<SemanticVersion> GetVersionTagsOnBranch(Branch branch, string tagPrefixRegex);
40-
IEnumerable<Tuple<Tag, SemanticVersion>> GetValidVersionTags(string tagPrefixRegex, DateTimeOffset? olderThan = null);
39+
IEnumerable<SemanticVersion> GetVersionTagsOnBranch(Branch branch, string tagPrefixRegex, string tagSuffix);
40+
IEnumerable<Tuple<Tag, SemanticVersion>> GetValidVersionTags(string tagPrefixRegex, string tagSuffix, DateTimeOffset? olderThan = null);
4141

4242
ICommitLog GetCommitLog(Commit baseVersionSource, Commit currentCommit);
4343
bool GetMatchingCommitBranch(Commit baseVersionSource, Branch branch, Commit firstMatchingCommit);

0 commit comments

Comments
 (0)