diff --git a/src/GitVersionCore.Tests/BuildServers/VsoAgentBuildNumberTests.cs b/src/GitVersionCore.Tests/BuildServers/VsoAgentBuildNumberTests.cs new file mode 100644 index 0000000000..83d50cf6ff --- /dev/null +++ b/src/GitVersionCore.Tests/BuildServers/VsoAgentBuildNumberTests.cs @@ -0,0 +1,67 @@ +using System; +using GitVersion; +using GitVersionCore.Tests; +using NUnit.Framework; +using Shouldly; +using System.Collections.Generic; + +[TestFixture] +public class VsoAgentBuildNumberTests +{ + string key = "BUILD_BUILDNUMBER"; + string logPrefix = "##vso[build.updatebuildnumber]"; + List> examples; + VsoAgent versionBuilder = new VsoAgent(); + + [SetUp] + public void SetUpVsoAgentBuildNumberTest() + { + examples = new List>(); + } + + [TearDown] + public void TearDownVsoAgentBuildNumberTest() + { + examples = null; + Environment.SetEnvironmentVariable(key, null, EnvironmentVariableTarget.Process); + } + + + [Test] + public void VsoAgentBuildNumberWithFullSemVer() + { + examples.Add(new Tuple("$(GitVersion.FullSemVer)", "1.0.0", "1.0.0")); + examples.Add(new Tuple("$(GITVERSION_FULLSEMVER)", "1.0.0", "1.0.0")); + examples.Add(new Tuple("$(GitVersion.FullSemVer)-Build.1234", "1.0.0", "1.0.0-Build.1234")); + examples.Add(new Tuple("$(GITVERSION_FULLSEMVER)-Build.1234", "1.0.0", "1.0.0-Build.1234")); + + foreach (var example in examples) + { + Environment.SetEnvironmentVariable(key, example.Item1, EnvironmentVariableTarget.Process); + var vars = new TestableVersionVariables(fullSemVer: example.Item2); + + var logMessage = versionBuilder.GenerateSetVersionMessage(vars); + logMessage.ShouldBe(logPrefix + example.Item3); + } + } + + + [Test] + public void VsoAgentBuildNumberWithSemVer() + { + examples.Add(new Tuple("$(GitVersion.SemVer)", "1.0.0", "1.0.0")); + examples.Add(new Tuple("$(GITVERSION_SEMVER)", "1.0.0", "1.0.0")); + examples.Add(new Tuple("$(GitVersion.SemVer)-Build.1234", "1.0.0", "1.0.0-Build.1234")); + examples.Add(new Tuple("$(GITVERSION_SEMVER)-Build.1234", "1.0.0", "1.0.0-Build.1234")); + + foreach (var example in examples) + { + Environment.SetEnvironmentVariable(key, example.Item1, EnvironmentVariableTarget.Process); + var vars = new TestableVersionVariables(semVer: example.Item2); + + var logMessage = versionBuilder.GenerateSetVersionMessage(vars); + logMessage.ShouldBe(logPrefix + example.Item3); + } + } + +} \ No newline at end of file diff --git a/src/GitVersionCore.Tests/GitVersionCore.Tests.csproj b/src/GitVersionCore.Tests/GitVersionCore.Tests.csproj index a3c44e6cc2..370f750929 100644 --- a/src/GitVersionCore.Tests/GitVersionCore.Tests.csproj +++ b/src/GitVersionCore.Tests/GitVersionCore.Tests.csproj @@ -90,6 +90,7 @@ + diff --git a/src/GitVersionCore/BuildServers/VsoAgent.cs b/src/GitVersionCore/BuildServers/VsoAgent.cs index 8a0457dccc..b629a4d9c9 100644 --- a/src/GitVersionCore/BuildServers/VsoAgent.cs +++ b/src/GitVersionCore/BuildServers/VsoAgent.cs @@ -36,7 +36,7 @@ public override string GenerateSetVersionMessage(VersionVariables variables) var buildNum = Environment.GetEnvironmentVariable("BUILD_BUILDNUMBER"); var newBuildNum = variables.Aggregate(buildNum, (current, kvp) => - current.RegexReplace(string.Format(@"\$\(GITVERSION_{0}\)", kvp.Key), kvp.Value ?? string.Empty, RegexOptions.IgnoreCase)); + current.RegexReplace(string.Format(@"\$\(GITVERSION[_\.]{0}\)", kvp.Key), kvp.Value ?? string.Empty, RegexOptions.IgnoreCase)); // If no variable substitution has happened, use FullSemVer if (buildNum == newBuildNum)