Last active
August 29, 2015 14:06
-
-
Save Nisden/0cd864ad690729d39bd5 to your computer and use it in GitHub Desktop.
Teamcity helpers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private class TestCase : IDisposable | |
{ | |
public string TestName | |
{ | |
get | |
{ | |
return testName; | |
} | |
} | |
private string testName; | |
private System.Diagnostics.Stopwatch stopWatch; | |
public TestCase(string testName) | |
{ | |
this.testName = testName; | |
Program.TestStarted(testName); | |
stopWatch = new System.Diagnostics.Stopwatch(); | |
stopWatch.Start(); | |
} | |
#region IDisposable Members | |
public void Dispose() | |
{ | |
stopWatch.Stop(); | |
Program.TestFinished(testName, stopWatch.ElapsedMilliseconds); | |
stopWatch = null; | |
} | |
#endregion | |
} | |
private class TestSuit : IDisposable | |
{ | |
private string suitName; | |
public TestSuit(string suitName) | |
{ | |
this.suitName = suitName; | |
Program.TestSuiteStarted(suitName); | |
} | |
#region IDisposable Members | |
public void Dispose() | |
{ | |
Program.TestSuiteFinished(suitName); | |
} | |
#endregion | |
} | |
private static void TestSuiteStarted(string name) | |
{ | |
Console.WriteLine("##teamcity[testSuiteStarted name='{0}']", Escape(name)); | |
} | |
private static void TestSuiteFinished(string name) | |
{ | |
Console.WriteLine("##teamcity[testSuiteFinished name='{0}']", Escape(name)); | |
} | |
private static void TestStarted(string testName) | |
{ | |
Console.WriteLine("##teamcity[testStarted name='{0}']", Escape(testName)); | |
} | |
private static void TestFinished(string testName, long miliseconds) | |
{ | |
Console.WriteLine("##teamcity[testFinished name='{0}' duration='{1}']", Escape(testName), miliseconds); | |
} | |
private static void TestFailed(string testName, string message, string details) | |
{ | |
Console.WriteLine("##teamcity[testFailed name='{0}' message='{1}' details='{2}']", Escape(testName), Escape(message), Escape(details)); | |
} | |
private static void TestFailed(string testName, string message, string details, string expected, string actual) | |
{ | |
Console.WriteLine("##teamcity[testFailed name='{0}' message='{1}' details='{2}' expected='{3}' actual='{4}']", Escape(testName), Escape(message), Escape(details), Escape(expected), Escape(actual)); | |
} | |
private static void TestIgnored(string testName, string message) | |
{ | |
Console.WriteLine("##teamcity[testIgnored name='{0}' message='{1}']", Escape(testName), Escape(message)); | |
} | |
private static void ReportProgress(string message) | |
{ | |
Console.WriteLine("##teamcity[progressMessage '{0}']", Escape(message)); | |
} | |
private static void StepStart(string name) | |
{ | |
Console.WriteLine("##teamcity[progressStart '{0}']", Escape(name)); | |
} | |
private static void StepFinished(string name) | |
{ | |
Console.WriteLine("##teamcity[progressFinish '{0}']", Escape(name)); | |
} | |
private static void PublishArtifact(string path) | |
{ | |
Console.WriteLine("##teamcity[publishArtifacts '{0}']", Escape(path)); | |
} | |
private static string Escape(string str) | |
{ | |
return (str ?? string.Empty).Replace("|", "||"). | |
Replace("\'", "|'"). | |
Replace("\n", "|n"). | |
Replace("\r", "|r"). | |
Replace("\u0085", "|x"). | |
Replace("\u2028", "|l"). | |
Replace("\u2029", "|p"). | |
Replace("[", "|["). | |
Replace("]", "|]"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment