Skip to content

Commit f3b7c36

Browse files
authored
Merge pull request #3444 from HHobeck/feature/3443_change-to-immutable-class-type
Changing the following classes and define the properties as immutable SemanticVersion, SemanticVersionPreReleaseTag and SemanticVersionBuildMetaData
2 parents 5ac47d5 + 2ae2c3c commit f3b7c36

23 files changed

+397
-249
lines changed

src/GitVersion.BuildAgents.Tests/Agents/BitBucketPipelinesTests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,17 @@ private void AssertVariablesAreWrittenToFile(string file)
139139
Minor = 2,
140140
Patch = 3,
141141
PreReleaseTag = "beta1",
142-
BuildMetaData = "5"
142+
BuildMetaData = new SemanticVersionBuildMetaData("5")
143+
{
144+
Sha = "f28807e615e9f06aec8a33c87780374e0c1f6fb8",
145+
CommitDate = new DateTimeOffset(2022, 4, 6, 16, 10, 59, TimeSpan.FromHours(10))
146+
}
143147
};
144148

145-
semanticVersion.BuildMetaData.CommitDate = new DateTimeOffset(2022, 4, 6, 16, 10, 59, TimeSpan.FromHours(10));
146-
semanticVersion.BuildMetaData.Sha = "f28807e615e9f06aec8a33c87780374e0c1f6fb8";
147-
148149
var configuration = new TestEffectiveConfiguration();
149150
var variableProvider = this.sp.GetRequiredService<IVariableProvider>();
150151

151-
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, false);
152+
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, null);
152153

153154
this.buildServer.WithPropertyFile(file);
154155

src/GitVersion.BuildAgents.Tests/Agents/BuildServerBaseTests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,16 @@ public void BuildNumberIsFullSemVer()
2929
Minor = 2,
3030
Patch = 3,
3131
PreReleaseTag = "beta1",
32-
BuildMetaData = "5"
32+
BuildMetaData = new SemanticVersionBuildMetaData("5")
33+
{
34+
Sha = "commitSha",
35+
CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
36+
}
3337
};
3438

35-
semanticVersion.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z");
36-
semanticVersion.BuildMetaData.Sha = "commitSha";
37-
3839
var configuration = new TestEffectiveConfiguration();
3940

40-
var variables = this.buildServer.GetVariablesFor(semanticVersion, configuration, false);
41+
var variables = this.buildServer.GetVariablesFor(semanticVersion, configuration, null);
4142
var buildAgent = this.sp.GetRequiredService<BuildAgent>();
4243
buildAgent.WriteIntegration(writes.Add, variables);
4344

src/GitVersion.BuildAgents.Tests/Agents/CodeBuildTests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,18 @@ private void AssertVariablesAreWrittenToFile(string file)
7474
Minor = 2,
7575
Patch = 3,
7676
PreReleaseTag = "beta1",
77-
BuildMetaData = "5"
77+
BuildMetaData = new SemanticVersionBuildMetaData("5")
78+
{
79+
Sha = "commitSha",
80+
CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
81+
}
7882
};
7983

80-
semanticVersion.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z");
81-
semanticVersion.BuildMetaData.Sha = "commitSha";
82-
8384
var configuration = new TestEffectiveConfiguration();
8485

8586
var variableProvider = this.sp.GetRequiredService<IVariableProvider>();
8687

87-
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, false);
88+
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, null);
8889

8990
this.buildServer.WithPropertyFile(file);
9091

src/GitVersion.BuildAgents.Tests/Agents/GitLabCiTests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,17 @@ private void AssertVariablesAreWrittenToFile(string file)
5959
Minor = 2,
6060
Patch = 3,
6161
PreReleaseTag = "beta1",
62-
BuildMetaData = "5"
62+
BuildMetaData = new SemanticVersionBuildMetaData("5")
63+
{
64+
Sha = "commitSha",
65+
CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
66+
}
6367
};
6468

65-
semanticVersion.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z");
66-
semanticVersion.BuildMetaData.Sha = "commitSha";
67-
6869
var configuration = new TestEffectiveConfiguration();
6970
var variableProvider = this.sp.GetRequiredService<IVariableProvider>();
7071

71-
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, false);
72+
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, null);
7273

7374
this.buildServer.WithPropertyFile(file);
7475

src/GitVersion.BuildAgents.Tests/Agents/JenkinsTests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,17 +130,18 @@ private void AssertVariablesAreWrittenToFile(string file)
130130
Minor = 2,
131131
Patch = 3,
132132
PreReleaseTag = "beta1",
133-
BuildMetaData = "5"
133+
BuildMetaData = new SemanticVersionBuildMetaData("5")
134+
{
135+
Sha = "commitSha",
136+
CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z")
137+
}
134138
};
135139

136-
semanticVersion.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z");
137-
semanticVersion.BuildMetaData.Sha = "commitSha";
138-
139140
var configuration = new TestEffectiveConfiguration();
140141

141142
var variableProvider = this.sp.GetRequiredService<IVariableProvider>();
142143

143-
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, false);
144+
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, null);
144145

145146
this.buildServer.WithPropertyFile(file);
146147

src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ public static VersionVariables GetVersion(this RepositoryFixtureBase fixture, IG
9191
var context = contextOptions.Value;
9292

9393
var nextVersion = nextVersionCalculator.FindVersion();
94-
return variableProvider.GetVariablesFor(nextVersion.IncrementedVersion, nextVersion.Configuration, context.IsCurrentCommitTagged);
94+
return variableProvider.GetVariablesFor(
95+
nextVersion.IncrementedVersion, nextVersion.Configuration, context.CurrentCommitTaggedVersion
96+
);
9597
}
9698
catch (Exception)
9799
{

src/GitVersion.Core.Tests/IntegrationTests/OtherBranchScenarios.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,29 @@ namespace GitVersion.Core.Tests.IntegrationTests;
77
[TestFixture]
88
public class OtherBranchScenarios : TestBase
99
{
10+
/// <summary>
11+
/// https://github.com/GitTools/GitVersion/issues/2340
12+
/// </summary>
13+
[Test]
14+
public void ShouldOnlyConsiderTagsMatchingOfCurrentBranch()
15+
{
16+
var configuration = GitFlowConfigurationBuilder.New
17+
.WithBranch("develop", builder => builder.WithLabel("snapshot"))
18+
.WithBranch("release", builder => builder.WithLabel("rc"))
19+
.Build();
20+
21+
using var fixture = new EmptyRepositoryFixture();
22+
23+
fixture.MakeACommit();
24+
fixture.BranchTo("develop");
25+
fixture.MakeACommit();
26+
fixture.MakeATaggedCommit("0.1.2-snapshot.2");
27+
fixture.BranchTo("release/0.1.2");
28+
29+
// ✅ succeeds as expected
30+
fixture.AssertFullSemver("0.1.2-rc.1+0", configuration);
31+
}
32+
1033
[Test]
1134
public void CanTakeVersionFromReleaseBranch()
1235
{

src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void Json()
2727
var serviceProvider = ConfigureServices();
2828

2929
var variableProvider = serviceProvider.GetRequiredService<IVariableProvider>();
30-
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, false);
30+
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, null);
3131
var json = variables.ToString();
3232
json.ShouldMatchApproved(c => c.SubFolder("Approved"));
3333
}

src/GitVersion.Core.Tests/VersionCalculation/SemanticVersionTests.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,16 +131,20 @@ public string ToStringWithFormatITests(int major, int minor, int patch, string p
131131
return semVer.ToString("i");
132132
}
133133

134-
private static SemanticVersion BuildSemVer(int major, int minor, int patch, string? preReleaseName, int? preReleaseVersion, int? buildCount, string? branchName = null, string? sha = null, string? otherMetadata = null)
134+
private static SemanticVersion BuildSemVer(int major, int minor, int patch, string? preReleaseName, int? preReleaseVersion,
135+
int? buildCount, string? branchName = null, string? sha = null, string? otherMetadata = null)
135136
{
136-
var semVer = new SemanticVersion(major, minor, patch);
137+
138+
SemanticVersionPreReleaseTag? preReleaseTag = null;
137139
if (preReleaseName != null)
138140
{
139-
semVer.PreReleaseTag = new SemanticVersionPreReleaseTag(preReleaseName, preReleaseVersion);
141+
preReleaseTag = new SemanticVersionPreReleaseTag(preReleaseName, preReleaseVersion);
140142
}
143+
144+
SemanticVersionBuildMetaData? buildMetaDate = null;
141145
if (buildCount.HasValue)
142146
{
143-
semVer.BuildMetaData = new SemanticVersionBuildMetaData
147+
buildMetaDate = new SemanticVersionBuildMetaData
144148
{
145149
CommitsSinceTag = buildCount.Value,
146150
Sha = sha,
@@ -149,6 +153,10 @@ private static SemanticVersion BuildSemVer(int major, int minor, int patch, stri
149153
};
150154
}
151155

152-
return semVer;
156+
return new SemanticVersion(major, minor, patch)
157+
{
158+
PreReleaseTag = preReleaseTag ?? new(),
159+
BuildMetaData = buildMetaDate ?? new()
160+
};
153161
}
154162
}

0 commit comments

Comments
 (0)