Skip to content

Commit 101dea6

Browse files
committed
added test for the output with build server and json when running in build server
1 parent d0f8a3c commit 101dea6

File tree

4 files changed

+51
-29
lines changed

4 files changed

+51
-29
lines changed

src/GitVersionExe.Tests/ExecutionResults.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using Newtonsoft.Json;
34
using GitVersion.OutputVariables;
@@ -21,7 +22,10 @@ public virtual VersionVariables OutputVariables
2122
{
2223
get
2324
{
24-
var outputVariables = JsonConvert.DeserializeObject<Dictionary<string, string>>(Output);
25+
var jsonStartIndex = Output.IndexOf("{", StringComparison.Ordinal);
26+
var json = Output.Substring(jsonStartIndex);
27+
28+
var outputVariables = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
2529
return VersionVariables.FromDictionary(outputVariables);
2630
}
2731
}

src/GitVersionExe.Tests/JsonOutputOnBuildServer.cs

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using System.Collections.Generic;
2+
using GitTools.Testing;
3+
using GitVersion.BuildServers;
4+
using NUnit.Framework;
5+
using Shouldly;
6+
7+
namespace GitVersionExe.Tests
8+
{
9+
public class JsonOutputOnBuildServerTest
10+
{
11+
[Test]
12+
public void BeingOnBuildServerDoesntOverrideOutputJson()
13+
{
14+
using var fixture = new RemoteRepositoryFixture();
15+
fixture.Repository.MakeATaggedCommit("1.2.3");
16+
fixture.Repository.MakeACommit();
17+
18+
var env = new KeyValuePair<string, string>(TeamCity.EnvironmentVariableName, "8.0.0");
19+
20+
var result = GitVersionHelper.ExecuteIn(fixture.LocalRepositoryFixture.RepositoryPath, arguments: " /output json", environments: env);
21+
22+
result.ExitCode.ShouldBe(0);
23+
result.Output.ShouldStartWith("{");
24+
result.Output.TrimEnd().ShouldEndWith("}");
25+
}
26+
27+
[Test]
28+
public void BeingOnBuildServerWithOutputJsonDoesNotFail()
29+
{
30+
using var fixture = new RemoteRepositoryFixture();
31+
fixture.Repository.MakeATaggedCommit("1.2.3");
32+
fixture.Repository.MakeACommit();
33+
34+
var env = new KeyValuePair<string, string>(TeamCity.EnvironmentVariableName, "8.0.0");
35+
36+
var result = GitVersionHelper.ExecuteIn(fixture.LocalRepositoryFixture.RepositoryPath, arguments: " /output json /output buildserver", environments: env);
37+
38+
result.ExitCode.ShouldBe(0);
39+
const string version = "0.1.0+4";
40+
result.Output.ShouldContain($"##teamcity[buildNumber '{version}']");
41+
result.OutputVariables.ShouldNotBeNull();
42+
result.OutputVariables.FullSemVer.ShouldBeEquivalentTo(version);
43+
}
44+
}
45+
}

src/GitVersionExe/ArgumentParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ public Arguments ParseArguments(string[] commandLineArguments)
279279
{
280280
if (!Enum.TryParse(v, true, out OutputType outputType))
281281
{
282-
throw new WarningException($"Value '{value}' cannot be parsed as output type, please use 'json' or 'buildserver'");
282+
throw new WarningException($"Value '{v}' cannot be parsed as output type, please use 'json' or 'buildserver'");
283283
}
284284

285285
arguments.Output.Add(outputType);

0 commit comments

Comments
 (0)