Skip to content

Commit 82c1b3c

Browse files
authored
Merge pull request #1451 from GriffinPlus/master
Support for generic build servers, improved scripting support
2 parents ef1add0 + 7b72120 commit 82c1b3c

File tree

3 files changed

+112
-0
lines changed

3 files changed

+112
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
using System;
2+
using System.IO;
3+
using GitVersion;
4+
using GitVersionCore.Tests;
5+
using NUnit.Framework;
6+
using Shouldly;
7+
8+
[TestFixture]
9+
public class EnvRunTests : TestBase
10+
{
11+
private const string EnvVarName = "ENVRUN_DATABASE";
12+
private string mFilePath;
13+
14+
[SetUp]
15+
public void SetEnvironmentVariableForTest()
16+
{
17+
// set environment variable and create an empty envrun file to indicate that EnvRun is running...
18+
mFilePath = Path.Combine(Path.GetTempPath(), "envrun.db");
19+
Environment.SetEnvironmentVariable(EnvVarName, mFilePath, EnvironmentVariableTarget.Process);
20+
File.OpenWrite(mFilePath).Dispose();
21+
}
22+
23+
[TearDown]
24+
public void ClearEnvironmentVariableForTest()
25+
{
26+
Environment.SetEnvironmentVariable(EnvVarName, null, EnvironmentVariableTarget.Process);
27+
File.Delete(mFilePath);
28+
}
29+
30+
[Test]
31+
public void CanApplyToCurrentContext()
32+
{
33+
EnvRun envrun = new EnvRun();
34+
bool applys = envrun.CanApplyToCurrentContext();
35+
applys.ShouldBeTrue();
36+
}
37+
38+
[Test]
39+
public void CanApplyToCurrentContext_EnvironmentVariableNotSet()
40+
{
41+
Environment.SetEnvironmentVariable(EnvVarName, null, EnvironmentVariableTarget.Process);
42+
EnvRun envrun = new EnvRun();
43+
bool applys = envrun.CanApplyToCurrentContext();
44+
applys.ShouldBeFalse();
45+
}
46+
47+
[TestCase("1.2.3")]
48+
[TestCase("1.2.3-rc4")]
49+
public void GenerateSetVersionMessage(string fullSemVer)
50+
{
51+
EnvRun envrun = new EnvRun();
52+
var vars = new TestableVersionVariables(fullSemVer: fullSemVer);
53+
var version = envrun.GenerateSetVersionMessage(vars);
54+
version.ShouldBe(fullSemVer);
55+
}
56+
57+
[TestCase("Version", "1.2.3", "@@envrun[set name='GitVersion_Version' value='1.2.3']")]
58+
[TestCase("Version", "1.2.3-rc4", "@@envrun[set name='GitVersion_Version' value='1.2.3-rc4']")]
59+
public void GenerateSetParameterMessage(string name, string value, string expected)
60+
{
61+
EnvRun envrun = new EnvRun();
62+
var output = envrun.GenerateSetParameterMessage(name, value);
63+
output.ShouldHaveSingleItem();
64+
output[0].ShouldBe(expected);
65+
}
66+
67+
}

src/GitVersionCore/BuildServers/BuildServerList.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public static class BuildServerList
1515
new GitLabCi(),
1616
new VsoAgent(),
1717
new TravisCI(),
18+
new EnvRun(),
1819
};
1920

2021
public static IEnumerable<IBuildServer> GetApplicableBuildServers()
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
namespace GitVersion
2+
{
3+
using System;
4+
using System.IO;
5+
6+
public class EnvRun : BuildServerBase
7+
{
8+
public override bool CanApplyToCurrentContext()
9+
{
10+
string envRunDatabasePath = Environment.GetEnvironmentVariable("ENVRUN_DATABASE");
11+
if (!string.IsNullOrEmpty(envRunDatabasePath))
12+
{
13+
if (!File.Exists(envRunDatabasePath))
14+
{
15+
Logger.WriteError(string.Format("The database file of EnvRun.exe was not found at {0}.", envRunDatabasePath));
16+
return false;
17+
}
18+
19+
return true;
20+
}
21+
22+
return false;
23+
}
24+
25+
public override string GenerateSetVersionMessage(VersionVariables variables)
26+
{
27+
return variables.FullSemVer;
28+
}
29+
30+
public override string[] GenerateSetParameterMessage(string name, string value)
31+
{
32+
return new[]
33+
{
34+
string.Format("@@envrun[set name='GitVersion_{0}' value='{1}']", name, value)
35+
};
36+
}
37+
38+
public override bool PreventFetch()
39+
{
40+
return true;
41+
}
42+
43+
}
44+
}

0 commit comments

Comments
 (0)