Skip to content

Instantly share code, notes, and snippets.

@chrisns
Created June 26, 2014 17:06
Show Gist options
  • Save chrisns/5433e9d4685d4b614e49 to your computer and use it in GitHub Desktop.
Save chrisns/5433e9d4685d4b614e49 to your computer and use it in GitHub Desktop.
pycharm tcmessages.py fix
import sys
class TeamcityServiceMessages:
quote = {"'": "|'", "|": "||", "\n": "|n", "\r": "|r", ']': '|]'}
messages = []
def __init__(self, output=sys.stdout, prepend_linebreak=False, buffer_output=True):
self.output = output
self.prepend_linebreak = prepend_linebreak
self.buffer_output = buffer_output
def escapeValue(self, value):
if sys.version_info[0] <= 2 and isinstance(value, unicode):
s = value.encode("utf-8")
else:
s = str(value)
return "".join([self.quote.get(x, x) for x in s])
def message(self, messageName, **properties):
s = "##teamcity[" + messageName
for k, v in properties.items():
if v is None:
continue
s = s + " %s='%s'" % (k, self.escapeValue(v))
s += "]\n"
self.messages.append(s)
if self.buffer_output is False: self.writeout()
def testSuiteStarted(self, suiteName, location=None):
self.message('testSuiteStarted', name=suiteName, locationHint=location)
def testSuiteFinished(self, suiteName):
self.message('testSuiteFinished', name=suiteName)
self.writeout();
def testStarted(self, testName, location=None):
self.message('testStarted', name=testName, locationHint=location)
def testFinished(self, testName, duration=None):
self.message('testFinished', name=testName, duration=duration)
def testIgnored(self, testName, message=''):
self.message('testIgnored', name=testName, message=message)
def testFailed(self, testName, message='', details='', expected='', actual=''):
if expected and actual:
self.message('testFailed', type='comparisonFailure', name=testName, message=message,
details=details, expected=expected, actual=actual)
else:
self.message('testFailed', name=testName, message=message, details=details)
def testError(self, testName, message='', details=''):
self.message('testFailed', name=testName, message=message, details=details, error="true")
def testStdOut(self, testName, out):
self.message('testStdOut', name=testName, out=out)
def testStdErr(self, testName, out):
self.message('testStdErr', name=testName, out=out)
def testCount(self, count):
self.message('testCount', count=count)
def testMatrixEntered(self):
self.message('enteredTheMatrix')
def writeout(self):
if self.prepend_linebreak: self.output.write("\n")
for message in self.messages:
self.output.write(message)
self.messages = []
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment