Skip to content

Instantly share code, notes, and snippets.

@Nisden
Last active August 29, 2015 14:06
Show Gist options
  • Save Nisden/0cd864ad690729d39bd5 to your computer and use it in GitHub Desktop.
Save Nisden/0cd864ad690729d39bd5 to your computer and use it in GitHub Desktop.
Teamcity helpers
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