From 1f6c00a0f96f824682b2f056c94f96785e074e61 Mon Sep 17 00:00:00 2001 From: Sven Van Hulle Date: Fri, 3 Jan 2020 12:56:57 +0100 Subject: [PATCH] #1520 Replace special chars in InformationalVersion by daches when a custom format is used. --- ...sDeliveryModeForFeatureBranch.approved.txt | 32 +++++++++ ...omAssemblyInformationalFormat.approved.txt | 32 +++++++++ .../VariableProviderTests.cs | 67 ++++++++++++++++--- .../OutputVariables/VariableProvider.cs | 14 ++-- 4 files changed, 128 insertions(+), 17 deletions(-) create mode 100644 src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranch.approved.txt create mode 100644 src/GitVersionCore.Tests/Approved/VariableProviderTests.ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInformationalFormat.approved.txt 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..ce302bec81 100644 --- a/src/GitVersionCore.Tests/VariableProviderTests.cs +++ b/src/GitVersionCore.Tests/VariableProviderTests.cs @@ -1,15 +1,14 @@ -using System; +using GitVersion; using GitVersion.Logging; -using NUnit.Framework; -using Shouldly; using GitVersion.OutputFormatters; using GitVersion.OutputVariables; -using GitVersion; using GitVersion.VersionCalculation; using GitVersion.VersioningModes; +using NUnit.Framework; +using Shouldly; +using System; -namespace GitVersionCore.Tests -{ +namespace GitVersionCore.Tests { [TestFixture] public class VariableProviderTests : TestBase { @@ -209,10 +208,8 @@ public void ProvidesVariablesInContinuousDeploymentModeWithTagNamePattern() } [Test] - public void ProvidesVariablesInContinuousDeploymentModeWithTagSetToUseBranchName() - { - var semVer = new SemanticVersion - { + public void ProvidesVariablesInContinuousDeploymentModeWithTagSetToUseBranchName() { + var semVer = new SemanticVersion { Major = 1, Minor = 2, Patch = 3, @@ -229,5 +226,55 @@ 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 d4cdfc7763..350ba4fa20 100644 --- a/src/GitVersionCore/OutputVariables/VariableProvider.cs +++ b/src/GitVersionCore/OutputVariables/VariableProvider.cs @@ -1,13 +1,13 @@ -using System; -using System.Text.RegularExpressions; +using GitVersion.Configuration; using GitVersion.Exceptions; +using GitVersion.Extensions; +using GitVersion.Helpers; using GitVersion.VersionCalculation; using GitVersion.VersioningModes; -using GitVersion.Configuration; -using GitVersion.Helpers; +using System; +using System.Text.RegularExpressions; -namespace GitVersion.OutputVariables -{ +namespace GitVersion.OutputVariables { public class VariableProvider : IVariableProvider { private readonly INextVersionCalculator nextVersionCalculator; @@ -56,7 +56,7 @@ public VersionVariables GetVariablesFor(SemanticVersion semanticVersion, Effecti var semverFormatValues = new SemanticVersionFormatValues(semanticVersion, config); var informationalVersion = CheckAndFormatString(config.AssemblyInformationalFormat, semverFormatValues, - environment, semverFormatValues.DefaultInformationalVersion, "AssemblyInformationalVersion"); + environment, semverFormatValues.DefaultInformationalVersion, "AssemblyInformationalVersion").RegexReplace("[^0-9A-Za-z-.+]", "-"); var assemblyFileSemVer = CheckAndFormatString(config.AssemblyFileVersioningFormat, semverFormatValues, environment, semverFormatValues.AssemblyFileSemVer, "AssemblyFileVersioningFormat");