Skip to content

Commit ce53e2a

Browse files
authored
Merge pull request #3244 from AlexPykavy/refactor-next-version-calculator
Refactor next version calculator (get rid of `taggedSemanticVersion`)
2 parents 3eba753 + 5767382 commit ce53e2a

File tree

11 files changed

+207
-242
lines changed

11 files changed

+207
-242
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,10 @@ public void CanTakePreReleaseVersionFromReleasesBranchWithNumericPreReleaseTag()
8888
fixture.Repository.MakeCommits(5);
8989
fixture.Repository.CreateBranch("releases/2.0.0");
9090
fixture.Checkout("releases/2.0.0");
91-
fixture.Repository.ApplyTag("v2.0.0-1");
91+
fixture.Repository.ApplyTag("v2.0.0-beta.1");
9292

9393
var variables = fixture.GetVersion();
94-
Assert.AreEqual("2.0.0-1", variables.FullSemVer);
94+
Assert.AreEqual("2.0.0-beta.1", variables.FullSemVer);
9595
}
9696

9797
[Test]

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

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,9 @@ public void ChoosesHighestVersionReturnedFromStrategies()
309309
repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any<HashSet<IBranch>>()).Returns(Enumerable.Empty<IBranch>());
310310
var dateTimeOffset = DateTimeOffset.Now;
311311
var versionStrategies = new IVersionStrategy[] { new V1Strategy(DateTimeOffset.Now), new V2Strategy(dateTimeOffset) };
312-
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), Substitute.For<IMainlineVersionCalculator>(),
312+
var mainlineVersionCalculatorMock = Substitute.For<IMainlineVersionCalculator>();
313+
mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any<ICommit?>()).Returns(new SemanticVersionBuildMetaData());
314+
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), mainlineVersionCalculatorMock,
313315
repositoryStoreMock, new(context), versionStrategies, effectiveBranchConfigurationFinderMock, incrementStrategyFinderMock);
314316

315317
// Act
@@ -338,7 +340,9 @@ public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhen()
338340
repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any<HashSet<IBranch>>()).Returns(Enumerable.Empty<IBranch>());
339341
var when = DateTimeOffset.Now;
340342
var versionStrategies = new IVersionStrategy[] { new V1Strategy(when), new V2Strategy(null) };
341-
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), Substitute.For<IMainlineVersionCalculator>(),
343+
var mainlineVersionCalculatorMock = Substitute.For<IMainlineVersionCalculator>();
344+
mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any<ICommit?>()).Returns(new SemanticVersionBuildMetaData());
345+
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), mainlineVersionCalculatorMock,
342346
repositoryStoreMock, new(context), versionStrategies, effectiveBranchConfigurationFinderMock, incrementStrategyFinderMock);
343347

344348
// Act
@@ -367,7 +371,9 @@ public void UsesWhenFromNextBestMatchIfHighestDoesntHaveWhenReversedOrder()
367371
repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any<HashSet<IBranch>>()).Returns(Enumerable.Empty<IBranch>());
368372
var when = DateTimeOffset.Now;
369373
var versionStrategies = new IVersionStrategy[] { new V2Strategy(null), new V1Strategy(when) };
370-
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), Substitute.For<IMainlineVersionCalculator>(),
374+
var mainlineVersionCalculatorMock = Substitute.For<IMainlineVersionCalculator>();
375+
mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any<ICommit?>()).Returns(new SemanticVersionBuildMetaData());
376+
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), mainlineVersionCalculatorMock,
371377
repositoryStoreMock, new(context), versionStrategies, effectiveBranchConfigurationFinderMock, incrementStrategyFinderMock);
372378

373379
// Act
@@ -397,7 +403,9 @@ public void ShouldNotFilterVersion()
397403
repositoryStoreMock.GetSourceBranches(branchMock, configuration, Arg.Any<HashSet<IBranch>>()).Returns(Enumerable.Empty<IBranch>());
398404
var version = new BaseVersion("dummy", false, new SemanticVersion(2), GitToolsTestingExtensions.CreateMockCommit(), null);
399405
var versionStrategies = new IVersionStrategy[] { new TestVersionStrategy(version) };
400-
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), Substitute.For<IMainlineVersionCalculator>(),
406+
var mainlineVersionCalculatorMock = Substitute.For<IMainlineVersionCalculator>();
407+
mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any<ICommit?>()).Returns(new SemanticVersionBuildMetaData());
408+
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), mainlineVersionCalculatorMock,
401409
repositoryStoreMock, new(context), versionStrategies, effectiveBranchConfigurationFinderMock, incrementStrategyFinderMock);
402410

403411
// Act
@@ -427,7 +435,9 @@ public void ShouldFilterVersion()
427435
var higherVersion = new BaseVersion("exclude", false, new SemanticVersion(2), GitToolsTestingExtensions.CreateMockCommit(), null);
428436
var lowerVersion = new BaseVersion("dummy", false, new SemanticVersion(1), GitToolsTestingExtensions.CreateMockCommit(), null);
429437
var versionStrategies = new IVersionStrategy[] { new TestVersionStrategy(higherVersion, lowerVersion) };
430-
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), Substitute.For<IMainlineVersionCalculator>(),
438+
var mainlineVersionCalculatorMock = Substitute.For<IMainlineVersionCalculator>();
439+
mainlineVersionCalculatorMock.CreateVersionBuildMetaData(Arg.Any<ICommit?>()).Returns(new SemanticVersionBuildMetaData());
440+
var unitUnderTest = new NextVersionCalculator(Substitute.For<ILog>(), mainlineVersionCalculatorMock,
431441
repositoryStoreMock, new(context), versionStrategies, effectiveBranchConfigurationFinderMock, incrementStrategyFinderMock);
432442

433443
// Act

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,9 @@ public void ValidateVersionParsing(
4949
Assert.AreEqual(major, version.Major);
5050
Assert.AreEqual(minor, version.Minor);
5151
Assert.AreEqual(patch, version.Patch);
52-
version.PreReleaseTag.ShouldNotBeNull();
5352
Assert.AreEqual(tag, version.PreReleaseTag.Name);
5453
Assert.AreEqual(tagNumber, version.PreReleaseTag.Number);
5554

56-
version.BuildMetaData.ShouldNotBeNull();
5755
Assert.AreEqual(numberOfBuilds, version.BuildMetaData.CommitsSinceTag);
5856
Assert.AreEqual(branchName, version.BuildMetaData.Branch);
5957
Assert.AreEqual(sha, version.BuildMetaData.Sha);

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public void VersionSourceSha()
2323

2424
var nextVersion = nextVersionCalculator.FindVersion();
2525

26-
nextVersion.IncrementedVersion.BuildMetaData.ShouldNotBeNull();
2726
nextVersion.IncrementedVersion.BuildMetaData.VersionSourceSha.ShouldBeNull();
2827
nextVersion.IncrementedVersion.BuildMetaData.CommitsSinceVersionSource.ShouldBe(3);
2928
}
@@ -38,7 +37,6 @@ public void VersionSourceShaOneCommit()
3837

3938
var nextVersion = nextVersionCalculator.FindVersion();
4039

41-
nextVersion.IncrementedVersion.BuildMetaData.ShouldNotBeNull();
4240
nextVersion.IncrementedVersion.BuildMetaData.VersionSourceSha.ShouldBeNull();
4341
nextVersion.IncrementedVersion.BuildMetaData.CommitsSinceVersionSource.ShouldBe(1);
4442
}
@@ -59,7 +57,6 @@ public void VersionSourceShaUsingTag()
5957

6058
var nextVersion = nextVersionCalculator.FindVersion();
6159

62-
nextVersion.IncrementedVersion.BuildMetaData.ShouldNotBeNull();
6360
nextVersion.IncrementedVersion.BuildMetaData.VersionSourceSha.ShouldBe(secondCommit.Sha);
6461
nextVersion.IncrementedVersion.BuildMetaData.CommitsSinceVersionSource.ShouldBe(1);
6562
}

src/GitVersion.Core/Extensions/AssemblyVersionsGeneratorExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public static class AssemblyVersionsGeneratorExtensions
88
AssemblyVersioningScheme.Major => $"{sv.Major}.0.0.0",
99
AssemblyVersioningScheme.MajorMinor => $"{sv.Major}.{sv.Minor}.0.0",
1010
AssemblyVersioningScheme.MajorMinorPatch => $"{sv.Major}.{sv.Minor}.{sv.Patch}.0",
11-
AssemblyVersioningScheme.MajorMinorPatchTag => $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag?.Number ?? 0}",
11+
AssemblyVersioningScheme.MajorMinorPatchTag => $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag.Number ?? 0}",
1212
AssemblyVersioningScheme.None => null,
1313
_ => throw new ArgumentException($"Unexpected value ({scheme}).", nameof(scheme))
1414
};
@@ -19,7 +19,7 @@ public static class AssemblyVersionsGeneratorExtensions
1919
AssemblyFileVersioningScheme.Major => $"{sv.Major}.0.0.0",
2020
AssemblyFileVersioningScheme.MajorMinor => $"{sv.Major}.{sv.Minor}.0.0",
2121
AssemblyFileVersioningScheme.MajorMinorPatch => $"{sv.Major}.{sv.Minor}.{sv.Patch}.0",
22-
AssemblyFileVersioningScheme.MajorMinorPatchTag => $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag?.Number ?? 0}",
22+
AssemblyFileVersioningScheme.MajorMinorPatchTag => $"{sv.Major}.{sv.Minor}.{sv.Patch}.{sv.PreReleaseTag.Number ?? 0}",
2323
AssemblyFileVersioningScheme.None => null,
2424
_ => throw new ArgumentException($"Unexpected value ({scheme}).", nameof(scheme))
2525
};

0 commit comments

Comments
 (0)