Skip to content

Commit

Permalink
Get VersionInBranchRegex out of IGitVersionConfiguration
Browse files Browse the repository at this point in the history
renamed TagPrefix-> TagPrefixPattern
  • Loading branch information
arturcic committed Oct 5, 2024
1 parent 120ce11 commit b8ebe25
Show file tree
Hide file tree
Showing 23 changed files with 78 additions and 102 deletions.
8 changes: 4 additions & 4 deletions src/GitVersion.App.Tests/ArgumentParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ private static IEnumerable<TestCaseData> OverrideConfigWithSingleOptionTestData(
"tag-prefix=sample",
new GitVersionConfiguration
{
TagPrefix = "sample"
TagPrefixPattern = "sample"
}
);
yield return new TestCaseData(
Expand Down Expand Up @@ -546,23 +546,23 @@ private static IEnumerable<TestCaseData> OverrideConfigWithMultipleOptionsTestDa
"/overrideconfig tag-prefix=sample /overrideconfig assembly-versioning-scheme=MajorMinor",
new GitVersionConfiguration
{
TagPrefix = "sample",
TagPrefixPattern = "sample",
AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinor
}
);
yield return new TestCaseData(
"/overrideconfig tag-prefix=sample /overrideconfig assembly-versioning-format=\"{Major}.{Minor}.{Patch}.{env:CI_JOB_ID ?? 0}\"",
new GitVersionConfiguration
{
TagPrefix = "sample",
TagPrefixPattern = "sample",
AssemblyVersioningFormat = "{Major}.{Minor}.{Patch}.{env:CI_JOB_ID ?? 0}"
}
);
yield return new TestCaseData(
"/overrideconfig tag-prefix=sample /overrideconfig assembly-versioning-format=\"{Major}.{Minor}.{Patch}.{env:CI_JOB_ID ?? 0}\" /overrideconfig update-build-number=true /overrideconfig assembly-versioning-scheme=MajorMinorPatchTag /overrideconfig mode=ContinuousDelivery /overrideconfig tag-pre-release-weight=4",
new GitVersionConfiguration
{
TagPrefix = "sample",
TagPrefixPattern = "sample",
AssemblyVersioningFormat = "{Major}.{Minor}.{Patch}.{env:CI_JOB_ID ?? 0}",
UpdateBuildNumber = true,
AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatchTag,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ public void CanReadDefaultDocument()
configuration.AssemblyInformationalFormat.ShouldBe(null);
configuration.Branches["develop"].Label.ShouldBe("alpha");
configuration.Branches["release"].Label.ShouldBe("beta");
configuration.TagPrefix.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
configuration.TagPrefixPattern.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
configuration.NextVersion.ShouldBe(null);
}

Expand Down Expand Up @@ -361,7 +361,7 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty()

var expectedConfig = GitFlowConfigurationBuilder.New
.WithNextVersion("1.2.3")
.WithTagPrefix("custom-tag-prefix-from-yml")
.WithTagPrefixPattern("custom-tag-prefix-from-yml")
.Build();
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);

Expand All @@ -370,7 +370,7 @@ public void ShouldNotOverrideAnythingWhenOverrideConfigIsEmpty()
configuration.AssemblyInformationalFormat.ShouldBe(expectedConfig.AssemblyInformationalFormat);
configuration.AssemblyVersioningFormat.ShouldBe(expectedConfig.AssemblyVersioningFormat);
configuration.AssemblyFileVersioningFormat.ShouldBe(expectedConfig.AssemblyFileVersioningFormat);
configuration.TagPrefix.ShouldBe(expectedConfig.TagPrefix);
configuration.TagPrefixPattern.ShouldBe(expectedConfig.TagPrefixPattern);
configuration.NextVersion.ShouldBe(expectedConfig.NextVersion);
configuration.MajorVersionBumpMessage.ShouldBe(expectedConfig.MajorVersionBumpMessage);
configuration.MinorVersionBumpMessage.ShouldBe(expectedConfig.MinorVersionBumpMessage);
Expand Down Expand Up @@ -398,7 +398,7 @@ public void ShouldUseDefaultTagPrefixWhenNotSetInConfigFile()
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);

configuration.TagPrefix.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
configuration.TagPrefixPattern.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
}

[Test]
Expand All @@ -408,7 +408,7 @@ public void ShouldUseTagPrefixFromConfigFileWhenProvided()
using var _ = this.fileSystem.SetupConfigFile(path: this.repoPath, text: text);
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath);

configuration.TagPrefix.ShouldBe("custom-tag-prefix-from-yml");
configuration.TagPrefixPattern.ShouldBe("custom-tag-prefix-from-yml");
}

[Test]
Expand All @@ -422,7 +422,7 @@ public void ShouldOverrideTagPrefixWithOverrideConfigValue([Values] bool tagPref
};
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath, overrideConfiguration);

configuration.TagPrefix.ShouldBe("tag-prefix-from-override-configuration");
configuration.TagPrefixPattern.ShouldBe("tag-prefix-from-override-configuration");
}

[Test]
Expand All @@ -437,7 +437,7 @@ public void ShouldNotOverrideDefaultTagPrefixWhenNotSetInOverrideConfig()

var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath, overrideConfiguration);

configuration.TagPrefix.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
configuration.TagPrefixPattern.ShouldBe(RegexPatterns.Configuration.DefaultTagPrefixPattern);
}

[Test]
Expand All @@ -451,7 +451,7 @@ public void ShouldNotOverrideTagPrefixFromConfigFileWhenNotSetInOverrideConfig()
};
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath, overrideConfiguration);

configuration.TagPrefix.ShouldBe("custom-tag-prefix-from-yml");
configuration.TagPrefixPattern.ShouldBe("custom-tag-prefix-from-yml");
}

[Test]
Expand All @@ -465,6 +465,6 @@ public void ShouldOverrideTagPrefixFromConfigFileWhenSetInOverrideConfig()
};
var configuration = this.configurationProvider.ProvideForDirectory(this.repoPath, overrideConfiguration);

configuration.TagPrefix.ShouldBe("custom-tag-prefix-from-console");
configuration.TagPrefixPattern.ShouldBe("custom-tag-prefix-from-console");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public virtual TConfigurationBuilder WithAssemblyFileVersioningFormat(string? va
return (TConfigurationBuilder)this;
}

public virtual TConfigurationBuilder WithTagPrefix(string? value)
public virtual TConfigurationBuilder WithTagPrefixPattern(string? value)
{
this.tagPrefix = value;
return (TConfigurationBuilder)this;
Expand Down Expand Up @@ -339,7 +339,7 @@ public virtual TConfigurationBuilder WithConfiguration(IGitVersionConfiguration
WithAssemblyInformationalFormat(value.AssemblyInformationalFormat);
WithAssemblyVersioningFormat(value.AssemblyVersioningFormat);
WithAssemblyFileVersioningFormat(value.AssemblyFileVersioningFormat);
WithTagPrefix(value.TagPrefix);
WithTagPrefixPattern(value.TagPrefixPattern);
WithVersionInBranchPattern(value.VersionInBranchPattern);
WithNextVersion(value.NextVersion);
WithMajorVersionBumpMessage(value.MajorVersionBumpMessage);
Expand Down Expand Up @@ -398,7 +398,7 @@ public virtual IGitVersionConfiguration Build()
AssemblyInformationalFormat = this.assemblyInformationalFormat,
AssemblyVersioningFormat = this.assemblyVersioningFormat,
AssemblyFileVersioningFormat = this.assemblyFileVersioningFormat,
TagPrefix = this.tagPrefix,
TagPrefixPattern = this.tagPrefix,
VersionInBranchPattern = this.versionInBranchPattern,
NextVersion = this.nextVersion,
MajorVersionBumpMessage = this.majorVersionBumpMessage,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ private GitFlowConfigurationBuilder()
PatchVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultPatchPattern,
SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat,
VersionStrategies = ConfigurationConstants.DefaultVersionStrategies,
TagPrefix = RegexPatterns.Configuration.DefaultTagPrefixPattern,
TagPrefixPattern = RegexPatterns.Configuration.DefaultTagPrefixPattern,
VersionInBranchPattern = RegexPatterns.Configuration.DefaultVersionInBranchPattern,
TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight,
UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ private GitHubFlowConfigurationBuilder()
PatchVersionBumpMessage = RegexPatterns.VersionCalculation.DefaultPatchPattern,
SemanticVersionFormat = ConfigurationConstants.DefaultSemanticVersionFormat,
VersionStrategies = ConfigurationConstants.DefaultVersionStrategies,
TagPrefix = RegexPatterns.Configuration.DefaultTagPrefixPattern,
TagPrefixPattern = RegexPatterns.Configuration.DefaultTagPrefixPattern,
VersionInBranchPattern = RegexPatterns.Configuration.DefaultVersionInBranchPattern,
TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight,
UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ private TrunkBasedConfigurationBuilder()
VersionStrategies.ConfiguredNextVersion,
VersionStrategies.Mainline
],
TagPrefix = RegexPatterns.Configuration.DefaultTagPrefixPattern,
TagPrefixPattern = RegexPatterns.Configuration.DefaultTagPrefixPattern,
VersionInBranchPattern = RegexPatterns.Configuration.DefaultVersionInBranchPattern,
TagPreReleaseWeight = ConfigurationConstants.DefaultTagPreReleaseWeight,
UpdateBuildNumber = ConfigurationConstants.DefaultUpdateBuildNumber,
Expand Down
16 changes: 1 addition & 15 deletions src/GitVersion.Configuration/GitVersionConfiguration.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using System.Globalization;
using System.Text.RegularExpressions;
using GitVersion.Configuration.Attributes;
using GitVersion.Core;
using GitVersion.Extensions;
using GitVersion.VersionCalculation;
using static GitVersion.Configuration.ConfigurationConstants;

Expand Down Expand Up @@ -41,26 +39,14 @@ internal sealed record GitVersionConfiguration : BranchConfiguration, IGitVersio
[JsonPropertyDescription($"A regular expression which is used to trim Git tags before processing. Defaults to '{RegexPatterns.Configuration.DefaultTagPrefixPattern}'")]
[JsonPropertyDefault(RegexPatterns.Configuration.DefaultTagPrefixPattern)]
[JsonPropertyFormat(Format.Regex)]
public string? TagPrefix { get; internal set; }
public string? TagPrefixPattern { get; internal set; }

[JsonPropertyName("version-in-branch-pattern")]
[JsonPropertyDescription($"A regular expression which is used to determine the version number in the branch name or commit message (e.g., v1.0.0-LTS). Defaults to '{RegexPatterns.Configuration.DefaultVersionInBranchPattern}'.")]
[JsonPropertyDefault(RegexPatterns.Configuration.DefaultVersionInBranchPattern)]
[JsonPropertyFormat(Format.Regex)]
public string? VersionInBranchPattern { get; internal set; }

[JsonIgnore]
public Regex VersionInBranchRegex
=> versionInBranchRegex ??= RegexPatterns.Cache.GetOrAdd(GetVersionInBranchPattern());
private Regex? versionInBranchRegex;

private string GetVersionInBranchPattern()
{
var versionInBranchPattern = VersionInBranchPattern;
if (versionInBranchPattern.IsNullOrEmpty()) versionInBranchPattern = RegexPatterns.Configuration.DefaultVersionInBranchPattern;
return $"^{versionInBranchPattern.TrimStart('^')}";
}

[JsonPropertyName("next-version")]
[JsonPropertyDescription("Allows you to bump the next version explicitly. Useful for bumping main or a feature branch with breaking changes")]
public string? NextVersion
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDyn

var cacheDirectoryTimestamp = this.fileSystem.GetLastDirectoryWrite(cacheDirectory);

var configuration = GitFlowConfigurationBuilder.New.WithTagPrefix("prefix").Build();
var configuration = GitFlowConfigurationBuilder.New.WithTagPrefixPattern("prefix").Build();
var overrideConfiguration = new ConfigurationHelper(configuration).Dictionary;

gitVersionOptions = new() { WorkingDirectory = fixture.RepositoryPath, ConfigurationInfo = { OverrideConfiguration = overrideConfiguration } };
Expand Down
6 changes: 3 additions & 3 deletions src/GitVersion.Core.Tests/IntegrationTests/MainScenarios.cs
Original file line number Diff line number Diff line change
Expand Up @@ -208,14 +208,14 @@ public void CanSpecifyTagPrefixes()
fixture.Repository.MakeATaggedCommit(taggedVersion);
fixture.Repository.MakeCommits(5);

var configuration = GitFlowConfigurationBuilder.New.WithTagPrefix("version-").Build();
var configuration = GitFlowConfigurationBuilder.New.WithTagPrefixPattern("version-").Build();
fixture.AssertFullSemver("1.0.4-5", configuration);
}

[Test]
public void CanSpecifyTagPrefixesAsRegex()
{
var configuration = GitFlowConfigurationBuilder.New.WithTagPrefix($"version-|{RegexPatterns.Configuration.DefaultTagPrefixPattern}").Build();
var configuration = GitFlowConfigurationBuilder.New.WithTagPrefixPattern($"version-|{RegexPatterns.Configuration.DefaultTagPrefixPattern}").Build();
using var fixture = new EmptyRepositoryFixture();
var taggedVersion = "v1.0.3";
fixture.Repository.MakeATaggedCommit(taggedVersion);
Expand All @@ -233,7 +233,7 @@ public void CanSpecifyTagPrefixesAsRegex()
[Test]
public void AreTagsNotAdheringToTagPrefixIgnored()
{
var configuration = GitFlowConfigurationBuilder.New.WithTagPrefix("").Build();
var configuration = GitFlowConfigurationBuilder.New.WithTagPrefixPattern("").Build();
using var fixture = new EmptyRepositoryFixture();
var taggedVersion = "version-1.0.3";
fixture.Repository.MakeATaggedCommit(taggedVersion);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public void CanUseCommitMessagesToBumpVersion_TagsTakePriorityOnlyIfVersions(
string expectedVersionAfterNewCommit)
{
var configuration = GitFlowConfigurationBuilder.New
.WithTagPrefix(tagPrefix)
.WithTagPrefixPattern(tagPrefix)
.Build();

using var fixture = new EmptyRepositoryFixture();
Expand Down Expand Up @@ -61,7 +61,7 @@ public void CanUseCommitMessagesToBumpVersion_TagsTakePriorityOnlyIfVersions(
[TestCase("prefix", "bar", "2.1.0-1", "2.0.0-bar.1+1", ExpectedResult = "2.0.0-bar.1+1")]
public string WhenTaggingACommitAsPreRelease(string tagPrefix, string? label, string tag, string expectedVersion)
{
var configuration = GitFlowConfigurationBuilder.New.WithLabel(null).WithTagPrefix(tagPrefix)
var configuration = GitFlowConfigurationBuilder.New.WithLabel(null).WithTagPrefixPattern(tagPrefix)
.WithBranch("main", b => b.WithLabel(label).WithDeploymentMode(DeploymentMode.ManualDeployment))
.Build();

Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core.Tests/MergeMessageTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public void EmptyTagPrefix(string? prefix)
{
// Arrange
const string message = "Updated some code.";
var configuration = GitHubFlowConfigurationBuilder.New.WithTagPrefix(prefix).Build();
var configuration = GitHubFlowConfigurationBuilder.New.WithTagPrefixPattern(prefix).Build();

// Act
var sut = new MergeMessage(message, configuration);
Expand Down
11 changes: 6 additions & 5 deletions src/GitVersion.Core/Configuration/EffectiveConfiguration.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System.Text.RegularExpressions;
using GitVersion.Extensions;
using GitVersion.VersionCalculation;

Expand All @@ -10,7 +9,9 @@ namespace GitVersion.Configuration;
/// </summary>
public record EffectiveConfiguration
{
public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchConfiguration branchConfiguration,
public EffectiveConfiguration(
IGitVersionConfiguration configuration,
IBranchConfiguration branchConfiguration,
EffectiveConfiguration? fallbackConfiguration = null)
{
configuration.NotNull();
Expand Down Expand Up @@ -50,8 +51,8 @@ public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchCon
AssemblyVersioningFormat = configuration.AssemblyVersioningFormat;
AssemblyFileVersioningFormat = configuration.AssemblyFileVersioningFormat;
DeploymentMode = branchConfiguration.DeploymentMode.Value;
TagPrefix = configuration.TagPrefix;
VersionInBranchRegex = configuration.VersionInBranchRegex;
TagPrefix = configuration.TagPrefixPattern;
VersionInBranchPattern = configuration.VersionInBranchPattern;
Label = branchConfiguration.Label;
NextVersion = configuration.NextVersion;
Increment = branchConfiguration.Increment;
Expand Down Expand Up @@ -92,7 +93,7 @@ public EffectiveConfiguration(IGitVersionConfiguration configuration, IBranchCon

public string? TagPrefix { get; }

public Regex VersionInBranchRegex { get; }
public string? VersionInBranchPattern { get; }

public string? Label { get; }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System.Text.RegularExpressions;
using GitVersion.VersionCalculation;

namespace GitVersion.Configuration;
Expand All @@ -17,12 +16,10 @@ public interface IGitVersionConfiguration : IBranchConfiguration

string? AssemblyFileVersioningFormat { get; }

string? TagPrefix { get; }
string? TagPrefixPattern { get; }

string? VersionInBranchPattern { get; }

Regex VersionInBranchRegex { get; }

string? NextVersion { get; }

string? MajorVersionBumpMessage { get; }
Expand Down
Loading

0 comments on commit b8ebe25

Please sign in to comment.