reporting: TC integration escaping issues fix.

- error: testFailed ignored if message or details isn't correctly escaped
- fail: testFailed's message should be escaped also.
This commit is contained in:
Vasily Levchenko
2017-02-21 15:42:50 +03:00
committed by vvlevchenko
parent e59f3c0805
commit f372ddea4d
@@ -439,29 +439,33 @@ fun main(args : Array<String>) {
return super.pass() return super.pass()
} }
TestResult fail(TestFailedException e) {
teamcityReport("testFailed type='comparisonFailure' name='$name' message='${e.getMessage()}'")
teamcityFinish()
return super.fail(e)
}
TestResult error(Exception e) {
def writer = new StringWriter()
e.printStackTrace(new PrintWriter(writer))
def rawString = writer.toString()
/** /**
* Teamcity require escaping some symbols in pipe manner. * Teamcity require escaping some symbols in pipe manner.
* https://github.com/GitTools/GitVersion/issues/94 * https://github.com/GitTools/GitVersion/issues/94
*/ */
def formatedString = rawString String toTeamCityFormat(String inStr) {
.replaceAll("\\|", "||") return inStr.replaceAll("\\|", "||")
.replaceAll("\r", "|r") .replaceAll("\r", "|r")
.replaceAll("\n", "|n") .replaceAll("\n", "|n")
.replaceAll("'", "|'") .replaceAll("'", "|'")
.replaceAll("\\[", "|[") .replaceAll("\\[", "|[")
.replaceAll("]", "|]") .replaceAll("]", "|]")
teamcityReport("testFailed name='$name' message='${e.getMessage()}' details='${formatedString}'")
}
TestResult fail(TestFailedException e) {
teamcityReport("testFailed type='comparisonFailure' name='$name' message='${toTeamCityFormat(e.getMessage())}'")
teamcityFinish()
return super.fail(e)
}
TestResult error(Exception e) {
def writer = new StringWriter()
e.printStackTrace(new PrintWriter(writer))
def rawString = writer.toString()
teamcityReport("testFailed name='$name' message='${toTeamCityFormat(e.getMessage())}' details='${toTeamCityFormat(rawString)}'")
teamcityFinish() teamcityFinish()
return super.error(e) return super.error(e)
} }