diff --git a/src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt b/src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt new file mode 100644 index 0000000000..6cc023b2aa --- /dev/null +++ b/src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt @@ -0,0 +1,32 @@ +{ + "Major":1, + "Minor":2, + "Patch":3, + "PreReleaseTag":"", + "PreReleaseTagWithDash":"", + "PreReleaseLabel":"", + "PreReleaseNumber":"", + "WeightedPreReleaseNumber":"", + "BuildMetaData":5, + "BuildMetaDataPadded":"0005", + "FullBuildMetaData":"5.Branch.feature-123.Sha.commitSha", + "MajorMinorPatch":"1.2.3", + "SemVer":"1.2.3", + "LegacySemVer":"1.2.3", + "LegacySemVerPadded":"1.2.3", + "AssemblySemVer":"1.2.3.0", + "AssemblySemFileVer":"1.2.3.0", + "FullSemVer":"1.2.3+5", + "InformationalVersion":"1.2.3+5.Branch.feature-123.Sha.commitSha", + "BranchName":"feature/123", + "Sha":"commitSha", + "ShortSha":"commitShortSha", + "NuGetVersionV2":"1.2.3", + "NuGetVersion":"1.2.3", + "NuGetPreReleaseTagV2":"", + "NuGetPreReleaseTag":"", + "VersionSourceSha":"versionSourceSha", + "CommitsSinceVersionSource":5, + "CommitsSinceVersionSourcePadded":"0005", + "CommitDate":"2014-03-06" +} \ No newline at end of file diff --git a/src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInformationalFormat.approved.txt b/src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInformationalFormat.approved.txt new file mode 100644 index 0000000000..64fd5b3400 --- /dev/null +++ b/src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInformationalFormat.approved.txt @@ -0,0 +1,32 @@ +{ + "Major":1, + "Minor":2, + "Patch":3, + "PreReleaseTag":"", + "PreReleaseTagWithDash":"", + "PreReleaseLabel":"", + "PreReleaseNumber":"", + "WeightedPreReleaseNumber":"", + "BuildMetaData":5, + "BuildMetaDataPadded":"0005", + "FullBuildMetaData":"5.Branch.feature-123.Sha.commitSha", + "MajorMinorPatch":"1.2.3", + "SemVer":"1.2.3", + "LegacySemVer":"1.2.3", + "LegacySemVerPadded":"1.2.3", + "AssemblySemVer":"1.2.3.0", + "AssemblySemFileVer":"1.2.3.0", + "FullSemVer":"1.2.3+5", + "InformationalVersion":"1.2.3+5.Branch.feature-123.Sha.commitShortSha", + "BranchName":"feature/123", + "Sha":"commitSha", + "ShortSha":"commitShortSha", + "NuGetVersionV2":"1.2.3", + "NuGetVersion":"1.2.3", + "NuGetPreReleaseTagV2":"", + "NuGetPreReleaseTag":"", + "VersionSourceSha":"versionSourceSha", + "CommitsSinceVersionSource":5, + "CommitsSinceVersionSourcePadded":"0005", + "CommitDate":"2014-03-06" +} \ No newline at end of file diff --git a/src/GitVersionCore.Tests/VariableProviderTests.cs b/src/GitVersionCore.Tests/VariableProviderTests.cs index db3c4a88de..712846ddf8 100644 --- a/src/GitVersionCore.Tests/VariableProviderTests.cs +++ b/src/GitVersionCore.Tests/VariableProviderTests.cs @@ -229,5 +229,59 @@ public void ProvidesVariablesInContinuousDeploymentModeWithTagSetToUseBranchName vars.FullSemVer.ShouldBe("1.2.3-feature.5"); } + + [Test] + [Category("NoMono")] + [Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")] + public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranch() + { + var semVer = new SemanticVersion + { + Major = 1, + Minor = 2, + Patch = 3, + BuildMetaData = "5.Branch.feature/123" + }; + + semVer.BuildMetaData.Branch = "feature/123"; + semVer.BuildMetaData.VersionSourceSha = "versionSourceSha"; + semVer.BuildMetaData.Sha = "commitSha"; + semVer.BuildMetaData.ShortSha = "commitShortSha"; + semVer.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z"); + + + var config = new TestEffectiveConfiguration(); + + var vars = variableProvider.GetVariablesFor(semVer, config, false); + + JsonOutputFormatter.ToJson(vars).ShouldMatchApproved(c => c.SubFolder("Approved")); + } + + [Test] + [Category("NoMono")] + [Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")] + public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInformationalFormat() + { + var semVer = new SemanticVersion + { + Major = 1, + Minor = 2, + Patch = 3, + BuildMetaData = "5.Branch.feature/123" + }; + + semVer.BuildMetaData.Branch = "feature/123"; + semVer.BuildMetaData.VersionSourceSha = "versionSourceSha"; + semVer.BuildMetaData.Sha = "commitSha"; + semVer.BuildMetaData.ShortSha = "commitShortSha"; + semVer.BuildMetaData.CommitDate = DateTimeOffset.Parse("2014-03-06 23:59:59Z"); + + + var config = new TestEffectiveConfiguration(assemblyInformationalFormat: "{Major}.{Minor}.{Patch}+{CommitsSinceVersionSource}.Branch.{BranchName}.Sha.{ShortSha}"); + + var vars = variableProvider.GetVariablesFor(semVer, config, false); + + JsonOutputFormatter.ToJson(vars).ShouldMatchApproved(c => c.SubFolder("Approved")); + } } } diff --git a/src/GitVersionCore/OutputVariables/VariableProvider.cs b/src/GitVersionCore/OutputVariables/VariableProvider.cs index d6b45b7768..827f7a3da1 100644 --- a/src/GitVersionCore/OutputVariables/VariableProvider.cs +++ b/src/GitVersionCore/OutputVariables/VariableProvider.cs @@ -1,6 +1,7 @@ using System; using System.Text.RegularExpressions; using GitVersion.Exceptions; +using GitVersion.Extensions; using GitVersion.VersionCalculation; using GitVersion.VersioningModes; using GitVersion.Configuration; @@ -135,7 +136,7 @@ private static string CheckAndFormatString(string formatString, T source, IEn { try { - formattedString = formatString.FormatWith(source, environment); + formattedString = formatString.FormatWith(source, environment).RegexReplace("[^0-9A-Za-z-.+]", "-"); } catch (ArgumentException formex) {