|
1 | 1 | using System.Collections.Generic;
|
| 2 | +using System.IO; |
2 | 3 | using GitTools.Testing;
|
3 | 4 | using GitVersion.BuildAgents;
|
| 5 | +using GitVersion.OutputVariables; |
| 6 | +using Newtonsoft.Json; |
4 | 7 | using NUnit.Framework;
|
5 | 8 | using Shouldly;
|
6 | 9 |
|
@@ -41,5 +44,31 @@ public void BeingOnBuildServerWithOutputJsonDoesNotFail()
|
41 | 44 | result.OutputVariables.ShouldNotBeNull();
|
42 | 45 | result.OutputVariables.FullSemVer.ShouldBeEquivalentTo(version);
|
43 | 46 | }
|
| 47 | + |
| 48 | + [TestCase("", "GitVersion.json")] |
| 49 | + [TestCase("version.json", "version.json")] |
| 50 | + public void BeingOnBuildServerWithOutputJsonAndOutputFileDoesNotFail(string outputFile, string fileName) |
| 51 | + { |
| 52 | + using var fixture = new RemoteRepositoryFixture(); |
| 53 | + fixture.Repository.MakeATaggedCommit("1.2.3"); |
| 54 | + fixture.Repository.MakeACommit(); |
| 55 | + |
| 56 | + var env = new KeyValuePair<string, string>(TeamCity.EnvironmentVariableName, "8.0.0"); |
| 57 | + |
| 58 | + var result = GitVersionHelper.ExecuteIn(fixture.LocalRepositoryFixture.RepositoryPath, arguments: $" /output json /output buildserver /output file /outputfile {outputFile}", environments: env); |
| 59 | + |
| 60 | + result.ExitCode.ShouldBe(0); |
| 61 | + const string version = "0.1.0+4"; |
| 62 | + result.Output.ShouldContain($"##teamcity[buildNumber '{version}']"); |
| 63 | + result.OutputVariables.ShouldNotBeNull(); |
| 64 | + result.OutputVariables.FullSemVer.ShouldBeEquivalentTo(version); |
| 65 | + |
| 66 | + var filePath = Path.Combine(fixture.LocalRepositoryFixture.RepositoryPath, fileName); |
| 67 | + var json = File.ReadAllText(filePath); |
| 68 | + |
| 69 | + var outputVariables = VersionVariables.FromDictionary(JsonConvert.DeserializeObject<Dictionary<string, string>>(json)); |
| 70 | + outputVariables.ShouldNotBeNull(); |
| 71 | + outputVariables.FullSemVer.ShouldBeEquivalentTo(version); |
| 72 | + } |
44 | 73 | }
|
45 | 74 | }
|
0 commit comments