From a5169658984447dae188625b08b1f86ec036710d Mon Sep 17 00:00:00 2001 From: Artur Date: Fri, 17 Feb 2023 08:44:46 +0100 Subject: [PATCH] #3341 - fix parsing loose version format --- ...nfigNextVersionBaseVersionStrategyTests.cs | 26 ++++++++++++++----- .../ConfigNextVersionVersionStrategy.cs | 5 ++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfigNextVersionBaseVersionStrategyTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfigNextVersionBaseVersionStrategyTests.cs index 6db52ed9f4..539138cd72 100644 --- a/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfigNextVersionBaseVersionStrategyTests.cs +++ b/src/GitVersion.Core.Tests/VersionCalculation/Strategies/ConfigNextVersionBaseVersionStrategyTests.cs @@ -19,20 +19,32 @@ public void ReturnsNullWhenNoNextVersionIsInConfig() baseVersion.ShouldBe(null); } - [TestCase("1.0.0", "1.0.0")] - [TestCase("2.12.654651698", "2.12.654651698")] - public void ConfigNextVersionTest(string nextVersion, string expectedVersion) + [TestCase("1.0.0", "1.0.0", SemanticVersionFormat.Strict)] + [TestCase("1.0.0", "1.0.0", SemanticVersionFormat.Loose)] + [TestCase("2.12.654651698", "2.12.654651698", SemanticVersionFormat.Strict)] + [TestCase("2.12.654651698", "2.12.654651698", SemanticVersionFormat.Loose)] + [TestCase("0.1", "0.1.0", SemanticVersionFormat.Loose)] + public void ConfigNextVersionTest(string nextVersion, string expectedVersion, SemanticVersionFormat versionFormat) { - var baseVersion = GetBaseVersion(new GitVersionConfiguration - { - NextVersion = nextVersion - }); + var baseVersion = GetBaseVersion(new GitVersionConfiguration { NextVersion = nextVersion, SemanticVersionFormat = versionFormat }); baseVersion.ShouldNotBeNull(); baseVersion.ShouldIncrement.ShouldBe(false); baseVersion.SemanticVersion.ToString().ShouldBe(expectedVersion); } + [TestCase("0.1", SemanticVersionFormat.Strict)] + public void ConfigNextVersionTestShouldFail(string nextVersion, SemanticVersionFormat versionFormat) + => + Should.Throw(() + => GetBaseVersion(new GitVersionConfiguration + { + NextVersion = nextVersion, + SemanticVersionFormat = versionFormat + })) + .Message.ShouldBe($"Failed to parse {nextVersion} into a Semantic Version"); + + private static BaseVersion? GetBaseVersion(GitVersionConfiguration? configuration = null) { var contextBuilder = new GitVersionContextBuilder(); diff --git a/src/GitVersion.Core/VersionCalculation/BaseVersionCalculators/ConfigNextVersionVersionStrategy.cs b/src/GitVersion.Core/VersionCalculation/BaseVersionCalculators/ConfigNextVersionVersionStrategy.cs index c4858e7a49..d9e2f1b491 100644 --- a/src/GitVersion.Core/VersionCalculation/BaseVersionCalculators/ConfigNextVersionVersionStrategy.cs +++ b/src/GitVersion.Core/VersionCalculation/BaseVersionCalculators/ConfigNextVersionVersionStrategy.cs @@ -16,10 +16,11 @@ public ConfigNextVersionVersionStrategy(Lazy versionContext) public override IEnumerable GetBaseVersions(EffectiveBranchConfiguration configuration) { - var nextVersion = Context.Configuration.NextVersion; + var contextConfiguration = Context.Configuration; + var nextVersion = contextConfiguration.NextVersion; if (!nextVersion.IsNullOrEmpty() && !Context.IsCurrentCommitTagged) { - var semanticVersion = SemanticVersion.Parse(nextVersion, Context.Configuration.LabelPrefix); + var semanticVersion = SemanticVersion.Parse(nextVersion, contextConfiguration.LabelPrefix, contextConfiguration.SemanticVersionFormat); yield return new BaseVersion("NextVersion in GitVersion configuration file", false, semanticVersion, null, null); } }