Skip to content

Commit 427a0e3

Browse files
committed
Add DefaultInformationalVersion for backwards compatibility
1 parent 0ab6814 commit 427a0e3

File tree

4 files changed

+46
-8
lines changed

4 files changed

+46
-8
lines changed

src/GitVersionCore.Tests/VariableProviderTests.cs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,49 @@
1-
using System;
1+
using GitVersion;
22
using GitVersion.Logging;
3-
using NUnit.Framework;
4-
using Shouldly;
53
using GitVersion.OutputFormatters;
64
using GitVersion.OutputVariables;
7-
using GitVersion;
85
using GitVersion.VersionCalculation;
96
using GitVersion.VersioningModes;
7+
using NUnit.Framework;
8+
using Shouldly;
9+
using System;
10+
using System.Collections.Generic;
1011

1112
namespace GitVersionCore.Tests
1213
{
1314
[TestFixture]
1415
public class VariableProviderTests : TestBase
1516
{
1617
private IVariableProvider variableProvider;
18+
private List<string> logMessages;
1719

1820
[SetUp]
1921
public void Setup()
2022
{
2123
ShouldlyConfiguration.ShouldMatchApprovedDefaults.LocateTestMethodUsingAttribute<TestAttribute>();
22-
var log = new NullLog();
24+
logMessages = new List<string>();
25+
var log = new Log(new TestLogAppender(logMessages.Add));
2326
var metaDataCalculator = new MetaDataCalculator();
2427
var baseVersionCalculator = new BaseVersionCalculator(log, null);
2528
var mainlineVersionCalculator = new MainlineVersionCalculator(log, metaDataCalculator);
2629
var nextVersionCalculator = new NextVersionCalculator(log, metaDataCalculator, baseVersionCalculator, mainlineVersionCalculator);
27-
variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment());
30+
variableProvider = new VariableProvider(nextVersionCalculator, new TestEnvironment(), log);
31+
}
32+
33+
[Test]
34+
public void ShouldLogWarningWhenUsingDefaultInformationalVersionInCustomFormat()
35+
{
36+
var semVer = new SemanticVersion
37+
{
38+
Major = 1,
39+
Minor = 2,
40+
Patch = 3,
41+
};
42+
43+
var propertyName = nameof(SemanticVersionFormatValues.DefaultInformationalVersion);
44+
var config = new TestEffectiveConfiguration(assemblyInformationalFormat: $"{{{propertyName}}}");
45+
variableProvider.GetVariablesFor(semVer, config, false);
46+
logMessages.ShouldContain(message => message.Trim().StartsWith("WARN") && message.Contains(propertyName), 1, $"Expected a warning to be logged when using the variable {propertyName} in a configuration format template");
2847
}
2948

3049
[Test]

src/GitVersionCore/OutputVariables/VariableProvider.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,21 @@
66
using GitVersion.VersioningModes;
77
using GitVersion.Configuration;
88
using GitVersion.Helpers;
9+
using GitVersion.Logging;
910

1011
namespace GitVersion.OutputVariables
1112
{
1213
public class VariableProvider : IVariableProvider
1314
{
1415
private readonly INextVersionCalculator nextVersionCalculator;
1516
private readonly IEnvironment environment;
17+
private readonly ILog log;
1618

17-
public VariableProvider(INextVersionCalculator nextVersionCalculator, IEnvironment environment)
19+
public VariableProvider(INextVersionCalculator nextVersionCalculator, IEnvironment environment, ILog log = default)
1820
{
1921
this.nextVersionCalculator = nextVersionCalculator ?? throw new ArgumentNullException(nameof(nextVersionCalculator));
2022
this.environment = environment;
23+
this.log = log ?? new NullLog();
2124
}
2225

2326
public VersionVariables GetVariablesFor(SemanticVersion semanticVersion, EffectiveConfiguration config, bool isCurrentCommitTagged)
@@ -124,7 +127,7 @@ private static void PromoteNumberOfCommitsToTagNumber(SemanticVersion semanticVe
124127
}
125128
}
126129

127-
private static string CheckAndFormatString<T>(string formatString, T source, IEnvironment environment, string defaultValue, string formatVarName)
130+
private string CheckAndFormatString<T>(string formatString, T source, IEnvironment environment, string defaultValue, string formatVarName)
128131
{
129132
string formattedString;
130133

@@ -134,6 +137,8 @@ private static string CheckAndFormatString<T>(string formatString, T source, IEn
134137
}
135138
else
136139
{
140+
WarnIfUsingObsoleteFormatValues(formatString);
141+
137142
try
138143
{
139144
formattedString = formatString.FormatWith(source, environment).RegexReplace("[^0-9A-Za-z-.+]", "-");
@@ -146,5 +151,14 @@ private static string CheckAndFormatString<T>(string formatString, T source, IEn
146151

147152
return formattedString;
148153
}
154+
155+
private void WarnIfUsingObsoleteFormatValues(string formatString)
156+
{
157+
var obsoletePropertyName = nameof(SemanticVersionFormatValues.DefaultInformationalVersion);
158+
if (formatString.Contains($"{{{obsoletePropertyName}}}"))
159+
{
160+
log.Write(LogLevel.Warn, $"Use format variable '{nameof(SemanticVersionFormatValues.InformationalVersion)}' instead of '{obsoletePropertyName}' which is obsolete and will be removed in a future release.");
161+
}
162+
}
149163
}
150164
}

src/GitVersionCore/OutputVariables/VersionVariables.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections;
33
using System.Collections.Generic;
4+
using System.Globalization;
45
using System.IO;
56
using System.Linq;
67
using YamlDotNet.Serialization;

src/GitVersionCore/SemanticVersioning/SemanticVersionFormatValues.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Globalization;
23
using GitVersion.Configuration;
34
using GitVersion.Extensions;
@@ -71,6 +72,9 @@ public SemanticVersionFormatValues(SemanticVersion semver, EffectiveConfiguratio
7172

7273
public string InformationalVersion => semver.ToString("i");
7374

75+
[Obsolete("Use InformationalVersion instead")]
76+
public string DefaultInformationalVersion => InformationalVersion;
77+
7478
public string VersionSourceSha => semver.BuildMetaData.VersionSourceSha;
7579

7680
public string CommitsSinceVersionSource => semver.BuildMetaData.CommitsSinceVersionSource.ToString(CultureInfo.InvariantCulture);

0 commit comments

Comments
 (0)