From 1f6c00a0f96f824682b2f056c94f96785e074e61 Mon Sep 17 00:00:00 2001 From: Sven Van Hulle Date: Fri, 3 Jan 2020 12:56:57 +0100 Subject: [PATCH 1/5] #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"); From 08d0d1e005db0f9e2a006ad3919b82fcedd39d8a Mon Sep 17 00:00:00 2001 From: Skoucail Date: Fri, 3 Jan 2020 13:23:27 +0100 Subject: [PATCH 2/5] Resort using and fix format --- .../OutputVariables/VariableProvider.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/GitVersionCore/OutputVariables/VariableProvider.cs b/src/GitVersionCore/OutputVariables/VariableProvider.cs index fe9140d677..15c6139d8e 100644 --- a/src/GitVersionCore/OutputVariables/VariableProvider.cs +++ b/src/GitVersionCore/OutputVariables/VariableProvider.cs @@ -1,13 +1,14 @@ -using GitVersion.Configuration; +using System; +using System.Text.RegularExpressions; using GitVersion.Exceptions; using GitVersion.Extensions; -using GitVersion.Helpers; using GitVersion.VersionCalculation; using GitVersion.VersioningModes; -using System; -using System.Text.RegularExpressions; +using GitVersion.Configuration; +using GitVersion.Helpers; -namespace GitVersion.OutputVariables { +namespace GitVersion.OutputVariables +{ public class VariableProvider : IVariableProvider { private readonly INextVersionCalculator nextVersionCalculator; From 8cacaf99ba8e6e95847b9e7df74730bf406c3794 Mon Sep 17 00:00:00 2001 From: Skoucail Date: Fri, 3 Jan 2020 13:26:29 +0100 Subject: [PATCH 3/5] Reorder usings and fix format --- .../VariableProviderTests.cs | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/GitVersionCore.Tests/VariableProviderTests.cs b/src/GitVersionCore.Tests/VariableProviderTests.cs index ce302bec81..fb01ec4bc4 100644 --- a/src/GitVersionCore.Tests/VariableProviderTests.cs +++ b/src/GitVersionCore.Tests/VariableProviderTests.cs @@ -1,14 +1,15 @@ -using GitVersion; +using System; 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 { @@ -208,8 +209,10 @@ public void ProvidesVariablesInContinuousDeploymentModeWithTagNamePattern() } [Test] - public void ProvidesVariablesInContinuousDeploymentModeWithTagSetToUseBranchName() { - var semVer = new SemanticVersion { + public void ProvidesVariablesInContinuousDeploymentModeWithTagSetToUseBranchName() + { + var semVer = new SemanticVersion + { Major = 1, Minor = 2, Patch = 3, @@ -230,8 +233,10 @@ public void ProvidesVariablesInContinuousDeploymentModeWithTagSetToUseBranchName [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 { + public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranch() + { + var semVer = new SemanticVersion + { Major = 1, Minor = 2, Patch = 3, @@ -255,8 +260,10 @@ public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranch() { [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 { + public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomAssemblyInformationalFormat() + { + var semVer = new SemanticVersion + { Major = 1, Minor = 2, Patch = 3, From 8c41481610473e7174d4e56628738fe3ecb6c4af Mon Sep 17 00:00:00 2001 From: Skoucail Date: Fri, 3 Jan 2020 13:27:22 +0100 Subject: [PATCH 4/5] Remove space after namespace --- src/GitVersionCore.Tests/VariableProviderTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitVersionCore.Tests/VariableProviderTests.cs b/src/GitVersionCore.Tests/VariableProviderTests.cs index fb01ec4bc4..712846ddf8 100644 --- a/src/GitVersionCore.Tests/VariableProviderTests.cs +++ b/src/GitVersionCore.Tests/VariableProviderTests.cs @@ -8,7 +8,7 @@ using GitVersion.VersionCalculation; using GitVersion.VersioningModes; -namespace GitVersionCore.Tests +namespace GitVersionCore.Tests { [TestFixture] public class VariableProviderTests : TestBase From 5c57939b87d1f93895f596c4a11f3c3e4423b12f Mon Sep 17 00:00:00 2001 From: Skoucail Date: Fri, 3 Jan 2020 15:02:56 +0100 Subject: [PATCH 5/5] Move RegexReplace inside the CheckAndFormatString function --- src/GitVersionCore/OutputVariables/VariableProvider.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitVersionCore/OutputVariables/VariableProvider.cs b/src/GitVersionCore/OutputVariables/VariableProvider.cs index 15c6139d8e..827f7a3da1 100644 --- a/src/GitVersionCore/OutputVariables/VariableProvider.cs +++ b/src/GitVersionCore/OutputVariables/VariableProvider.cs @@ -57,7 +57,7 @@ public VersionVariables GetVariablesFor(SemanticVersion semanticVersion, Effecti var semverFormatValues = new SemanticVersionFormatValues(semanticVersion, config); var informationalVersion = CheckAndFormatString(config.AssemblyInformationalFormat, semverFormatValues, - environment, semverFormatValues.DefaultInformationalVersion, "AssemblyInformationalVersion").RegexReplace("[^0-9A-Za-z-.+]", "-"); + environment, semverFormatValues.DefaultInformationalVersion, "AssemblyInformationalVersion"); var assemblyFileSemVer = CheckAndFormatString(config.AssemblyFileVersioningFormat, semverFormatValues, environment, semverFormatValues.AssemblyFileSemVer, "AssemblyFileVersioningFormat"); @@ -136,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) {