diff --git a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs index e9998b1de5..6a60061351 100644 --- a/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs +++ b/src/GitVersion.Configuration.Tests/Configuration/ConfigurationExtensionsTests.cs @@ -127,21 +127,39 @@ public void EnsureGetBranchSpecificLabelWorksWithoutEnvironmentWhenNoEnvPlacehol } [Test] - public void EnsureGetBranchSpecificLabelThrowsWhenEnvVarMissing() + public void EnsureGetBranchSpecificLabelReturnsLabelTemplateWhenEnvVarMissing() { var environment = new TestEnvironment(); // Do not set MISSING_VAR + var expectedLabel = "pr-{env:MISSING_VAR}"; var configuration = GitFlowConfigurationBuilder.New .WithoutBranches() .WithBranch(BranchName, builder => builder - .WithLabel("pr-{env:MISSING_VAR}") + .WithLabel(expectedLabel) .WithRegularExpression(@"^pull[/-]")) .Build(); var effectiveConfiguration = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName(BranchName)); - Should.Throw(() => - effectiveConfiguration.GetBranchSpecificLabel(ReferenceName.FromBranchName(BranchName), null, environment)); + var actual = effectiveConfiguration.GetBranchSpecificLabel(ReferenceName.FromBranchName(BranchName), null, environment); + actual.ShouldBe(expectedLabel); + } + + [Test] + public void EnsureGetBranchSpecificLabelReturnsLabelTemplateWhenPropertyMissing() + { + var expectedLabel = "{BranchName}"; + + var configuration = GitFlowConfigurationBuilder.New + .WithoutBranches() + .WithBranch("feature/test", builder => builder + .WithLabel("{BranchName}") + .WithRegularExpression(@"^features?[\/-]")) + .Build(); + + var effectiveConfiguration = configuration.GetEffectiveConfiguration(ReferenceName.FromBranchName(BranchName)); + var actual = effectiveConfiguration.GetBranchSpecificLabel(ReferenceName.FromBranchName(BranchName), null, new TestEnvironment()); + actual.ShouldBe(expectedLabel); } [TestCase("case-00/my-branch", "case-00-my-branch")] diff --git a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs index 3f4ac9a428..586e1d14df 100644 --- a/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs +++ b/src/GitVersion.Core/Extensions/ConfigurationExtensions.cs @@ -133,8 +133,15 @@ private static bool ShouldBeIgnored(ICommit commit, IIgnoreConfiguration ignore) var effectiveBranchName = branchNameOverride ?? branchName; var labelPlaceholders = BuildLabelPlaceholders(configuration.RegularExpression, effectiveBranchName); - return label.FormatWith(labelPlaceholders, environment) - .RegexReplace(RegexPatterns.SanitizeLabelRegexPattern, "-"); + try + { + return label.FormatWith(labelPlaceholders, environment) + .RegexReplace(RegexPatterns.SanitizeLabelRegexPattern, "-"); + } + catch (Exception e) when (e is ArgumentException or FormatException) + { + return label; + } } public TaggedSemanticVersions GetTaggedSemanticVersion()