Skip to content

Don't consider "tag-prefix" as optional if it's explicitly specified #3208

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 25, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatch
mode: ContinuousDelivery
tag-prefix: '[vV]'
tag-prefix: '[vV]?'
continuous-delivery-fallback-tag: ci
major-version-bump-message: '\+semver:\s?(breaking|major)'
minor-version-bump-message: '\+semver:\s?(feature|minor)'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ public void ShouldUseDefaultTagPrefixWhenNotSetInConfigFile()
SetupConfigFileContent(text);
var config = this.configProvider.Provide(this.repoPath);

config.TagPrefix.ShouldBe("[vV]");
config.TagPrefix.ShouldBe(Config.DefaultTagPrefix);
}

[Test]
Expand Down Expand Up @@ -491,7 +491,7 @@ public void ShouldNotOverrideDefaultTagPrefixWhenNotSetInOverrideConfig()
SetupConfigFileContent(text);
var config = this.configProvider.Provide(this.repoPath, new Config { TagPrefix = null });

config.TagPrefix.ShouldBe("[vV]");
config.TagPrefix.ShouldBe(Config.DefaultTagPrefix);
}

[Test]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public TestEffectiveConfiguration(
string? assemblyFileVersioningFormat = null,
string? assemblyInformationalFormat = null,
VersioningMode versioningMode = VersioningMode.ContinuousDelivery,
string tagPrefix = "v",
string tagPrefix = "v?",
string tag = "",
string? nextVersion = null,
string branchPrefixToTrim = "",
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core.Tests/Model/MergeMessageTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace GitVersion.Core.Tests;
[TestFixture]
public class MergeMessageTests : TestBase
{
private readonly Config config = new() { TagPrefix = "[vV]" };
private readonly Config config = new() { TagPrefix = Config.DefaultTagPrefix };

[Test]
public void NullMessageStringThrows() =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public void ValidateVersionParsing(
[TestCase("someText")]
[TestCase("some-T-ext")]
[TestCase("v.1.2.3", "v")]
[TestCase("1.2.3", "v")]
public void ValidateInvalidVersionParsing(string versionString, string? tagPrefixRegex = null) =>
Assert.IsFalse(SemanticVersion.TryParse(versionString, tagPrefixRegex, out _), "TryParse Result");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void ShouldCreateAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo(strin
var workingDir = Path.GetTempPath();
var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension;
var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);

using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
Expand All @@ -60,7 +60,7 @@ public void ShouldCreateAssemblyInfoFileAtPathWhenNotExistsAndEnsureAssemblyInfo
var workingDir = Path.GetTempPath();
var assemblyInfoFile = PathHelper.Combine("src", "Project", "Properties", $"VersionAssemblyInfo.{fileExtension}");
var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);

using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
Expand All @@ -81,7 +81,7 @@ public void ShouldCreateAssemblyInfoFilesAtPathWhenNotExistsAndEnsureAssemblyInf
"AssemblyInfo." + fileExtension,
PathHelper.Combine("src", "Project", "Properties", "VersionAssemblyInfo." + fileExtension)
};
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);

using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFiles.ToArray()));
Expand All @@ -101,7 +101,7 @@ public void ShouldNotCreateAssemblyInfoFileWhenNotExistsAndNotEnsureAssemblyInfo
var workingDir = Path.GetTempPath();
var assemblyInfoFile = "VersionAssemblyInfo." + fileExtension;
var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);

using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, false, assemblyInfoFile));
Expand All @@ -116,7 +116,7 @@ public void ShouldNotCreateAssemblyInfoFileForUnknownSourceCodeAndEnsureAssembly
var workingDir = Path.GetTempPath();
const string assemblyInfoFile = "VersionAssemblyInfo.js";
var fullPath = PathHelper.Combine(workingDir, assemblyInfoFile);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);

using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, true, assemblyInfoFile));
Expand All @@ -130,7 +130,7 @@ public void ShouldStartSearchFromWorkingDirectory()
this.fileSystem = Substitute.For<IFileSystem>();
var workingDir = Path.GetTempPath();
var assemblyInfoFiles = Array.Empty<string>();
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v?"), new TestEffectiveConfiguration(), false);

using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(this.log, this.fileSystem);
assemblyInfoFileUpdater.Execute(variables, new AssemblyInfoContext(workingDir, false, assemblyInfoFiles.ToArray()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ public void CannotUpdateProjectFileWithoutAPropertyGroup(string xml)
[Description(NoMonoDescription)]
public void UpdateProjectXmlVersionElementWithStandardXmlInsertsElement(string xml)
{
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v?"), new TestEffectiveConfiguration(), false);
var xmlRoot = XElement.Parse(xml);
variables.AssemblySemVer.ShouldNotBeNull();
ProjectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
Expand Down Expand Up @@ -183,7 +183,7 @@ public void UpdateProjectXmlVersionElementWithStandardXmlInsertsElement(string x
[Description(NoMonoDescription)]
public void UpdateProjectXmlVersionElementWithStandardXmlModifiesElement(string xml)
{
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v?"), new TestEffectiveConfiguration(), false);
var xmlRoot = XElement.Parse(xml);
variables.AssemblySemVer.ShouldNotBeNull();
ProjectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
Expand Down Expand Up @@ -215,7 +215,7 @@ public void UpdateProjectXmlVersionElementWithStandardXmlModifiesElement(string
[Description(NoMonoDescription)]
public void UpdateProjectXmlVersionElementWithDuplicatePropertyGroupsModifiesLastElement(string xml)
{
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v?"), new TestEffectiveConfiguration(), false);
var xmlRoot = XElement.Parse(xml);
variables.AssemblySemVer.ShouldNotBeNull();
ProjectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
Expand Down Expand Up @@ -248,7 +248,7 @@ public void UpdateProjectXmlVersionElementWithDuplicatePropertyGroupsModifiesLas
[Description(NoMonoDescription)]
public void UpdateProjectXmlVersionElementWithMultipleVersionElementsLastOneIsModified(string xml)
{
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v"), new TestEffectiveConfiguration(), false);
var variables = this.variableProvider.GetVariablesFor(SemanticVersion.Parse("2.0.0", "v?"), new TestEffectiveConfiguration(), false);
var xmlRoot = XElement.Parse(xml);
variables.AssemblySemVer.ShouldNotBeNull();
ProjectFileUpdater.UpdateProjectVersionElement(xmlRoot, ProjectFileUpdater.AssemblyVersionElement, variables.AssemblySemVer);
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/Model/Configuration/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public override string ToString()
return stringBuilder.ToString();
}

public const string DefaultTagPrefix = "[vV]";
public const string DefaultTagPrefix = "[vV]?";
public const string ReleaseBranchRegex = "^releases?[/-]";
public const string FeatureBranchRegex = "^features?[/-]";
public const string PullRequestRegex = @"^(pull|pull\-requests|pr)[/-]";
Expand Down
2 changes: 1 addition & 1 deletion src/GitVersion.Core/PublicAPI.Shipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const GitVersion.BuildAgents.SpaceAutomation.EnvironmentVariableName = "JB_SPACE
const GitVersion.BuildAgents.TeamCity.EnvironmentVariableName = "TEAMCITY_VERSION" -> string!
const GitVersion.BuildAgents.TravisCi.EnvironmentVariableName = "TRAVIS" -> string!
const GitVersion.Configuration.ConfigFileLocator.DefaultFileName = "GitVersion.yml" -> string!
const GitVersion.Model.Configuration.Config.DefaultTagPrefix = "[vV]" -> string!
const GitVersion.Model.Configuration.Config.DefaultTagPrefix = "[vV]?" -> string!
const GitVersion.Model.Configuration.Config.DevelopBranchKey = "develop" -> string!
const GitVersion.Model.Configuration.Config.DevelopBranchRegex = "^dev(elop)?(ment)?$" -> string!
const GitVersion.Model.Configuration.Config.FeatureBranchKey = "feature" -> string!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public static SemanticVersion Parse(string version, string? tagPrefixRegex)

public static bool TryParse(string version, string? tagPrefixRegex, [NotNullWhen(true)] out SemanticVersion? semanticVersion)
{
var match = Regex.Match(version, $"^({tagPrefixRegex})?(?<version>.*)$");
var match = Regex.Match(version, $"^({tagPrefixRegex})(?<version>.*)$");

if (!match.Success)
{
Expand Down