Skip to content

Commit cf6dd21

Browse files
committed
Merge pull request #95 from Particular/issue-94
Escape TeamCity parameter values, fixes #94
2 parents 2638bc3 + 24f46bc commit cf6dd21

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

GitFlowVersion/BuildServers/TeamCity.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,26 @@ public void PerformPreProcessingSteps(string gitDirectory)
2222

2323
public string GenerateSetParameterMessage(string name, string value)
2424
{
25-
return string.Format("##teamcity[setParameter name='GitFlowVersion.{0}' value='{1}']", name, value);
25+
return string.Format("##teamcity[setParameter name='GitFlowVersion.{0}' value='{1}']", name, EscapeValue(value));
2626
}
2727

2828
public string GenerateSetVersionMessage(string versionToUseForBuildNumber)
2929
{
30-
return string.Format("##teamcity[buildNumber '{0}']", versionToUseForBuildNumber);
30+
return string.Format("##teamcity[buildNumber '{0}']", EscapeValue(versionToUseForBuildNumber));
31+
}
32+
33+
static string EscapeValue(string value)
34+
{
35+
// List of escape values from http://confluence.jetbrains.com/display/TCD8/Build+Script+Interaction+with+TeamCity
36+
37+
value = value.Replace("|", "||");
38+
value = value.Replace("'", "|'");
39+
value = value.Replace("[", "|[");
40+
value = value.Replace("]", "|]");
41+
value = value.Replace("\r", "|r");
42+
value = value.Replace("\n", "|n");
43+
44+
return value;
3145
}
3246
}
3347
}

Tests/BuildServers/TeamCityTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,12 @@ public void Develop_branch()
1212
Assert.AreEqual("##teamcity[buildNumber '0.0.0-Unstable4']", tcVersion);
1313
}
1414

15+
[Test]
16+
public void EscapeValues()
17+
{
18+
var versionBuilder = new TeamCity();
19+
var tcVersion = versionBuilder.GenerateSetParameterMessage("Foo", "0.8.0-unstable568 Branch:'develop' Sha:'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb'");
20+
Assert.AreEqual("##teamcity[setParameter name='GitFlowVersion.Foo' value='0.8.0-unstable568 Branch:|'develop|' Sha:|'ee69bff1087ebc95c6b43aa2124bd58f5722e0cb|'']", tcVersion);
21+
}
22+
1523
}

0 commit comments

Comments
 (0)