Fix test logging for Windows
This commit is contained in:
@@ -105,14 +105,29 @@ const KarmaKotlinReporter = function (baseReporterDecorator, config, emitter) {
|
|||||||
|
|
||||||
this.TEST_STD_OUT = "##teamcity[testStdOut name='%s' out='%s' flowId='']";
|
this.TEST_STD_OUT = "##teamcity[testStdOut name='%s' out='%s' flowId='']";
|
||||||
|
|
||||||
|
const END_KOTLIN_TEST = "'--END_KOTLIN_TEST--";
|
||||||
|
|
||||||
const tcOnBrowserStart = this.onBrowserStart;
|
const tcOnBrowserStart = this.onBrowserStart;
|
||||||
this.onBrowserStart = function (browser) {
|
this.onBrowserStart = function (browser) {
|
||||||
tcOnBrowserStart.call(this, browser);
|
tcOnBrowserStart.call(this, browser);
|
||||||
this.browserResults[browser.id].consoleCollector = [];
|
this.browserResults[browser.id].consoleCollector = [];
|
||||||
|
this.browserResults[browser.id].consoleResultCollector = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
const concatenateFqn = function (result) {
|
||||||
|
return `${result.suite.join(".")}.${result.description}`
|
||||||
};
|
};
|
||||||
|
|
||||||
this.onBrowserLog = (browser, log, type) => {
|
this.onBrowserLog = (browser, log, type) => {
|
||||||
const browserResult = this.browserResults[browser.id];
|
const browserResult = this.browserResults[browser.id];
|
||||||
|
|
||||||
|
if (log.startsWith(END_KOTLIN_TEST)) {
|
||||||
|
var result = JSON.parse(log.substring(END_KOTLIN_TEST.length, log.length - 1));
|
||||||
|
browserResult.consoleResultCollector[concatenateFqn(result)] = browserResult.consoleCollector;
|
||||||
|
browserResult.consoleCollector = [];
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (browserResult) {
|
if (browserResult) {
|
||||||
browserResult.consoleCollector.push(`[${type}] ${log}\n`)
|
browserResult.consoleCollector.push(`[${type}] ${log}\n`)
|
||||||
}
|
}
|
||||||
@@ -126,14 +141,12 @@ const KarmaKotlinReporter = function (baseReporterDecorator, config, emitter) {
|
|||||||
const testName = result.description;
|
const testName = result.description;
|
||||||
|
|
||||||
const endMessage = log.pop();
|
const endMessage = log.pop();
|
||||||
this.browserResults[browser.id].consoleCollector.forEach(item => {
|
this.browserResults[browser.id].consoleResultCollector[concatenateFqn(result)].forEach(item => {
|
||||||
log.push(
|
log.push(
|
||||||
formatMessage(this.TEST_STD_OUT, testName, item)
|
formatMessage(this.TEST_STD_OUT, testName, item)
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
log.push(endMessage);
|
log.push(endMessage);
|
||||||
|
|
||||||
this.browserResults[browser.id].consoleCollector = []
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.specFailure = function (browser, result) {
|
this.specFailure = function (browser, result) {
|
||||||
@@ -141,7 +154,7 @@ const KarmaKotlinReporter = function (baseReporterDecorator, config, emitter) {
|
|||||||
const testName = result.description;
|
const testName = result.description;
|
||||||
|
|
||||||
log.push(formatMessage(this.TEST_START, testName));
|
log.push(formatMessage(this.TEST_START, testName));
|
||||||
this.browserResults[browser.id].consoleCollector.forEach(item => {
|
this.browserResults[browser.id].consoleResultCollector[concatenateFqn(result)].forEach(item => {
|
||||||
log.push(
|
log.push(
|
||||||
formatMessage(this.TEST_STD_OUT, testName, item)
|
formatMessage(this.TEST_STD_OUT, testName, item)
|
||||||
)
|
)
|
||||||
@@ -153,8 +166,6 @@ const KarmaKotlinReporter = function (baseReporterDecorator, config, emitter) {
|
|||||||
.join('\n\n')
|
.join('\n\n')
|
||||||
));
|
));
|
||||||
log.push(formatMessage(this.TEST_END, testName, result.time));
|
log.push(formatMessage(this.TEST_END, testName, result.time));
|
||||||
|
|
||||||
this.browserResults[browser.id].consoleCollector = []
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.flushLogs = function (browserResult) {
|
this.flushLogs = function (browserResult) {
|
||||||
|
|||||||
@@ -21,3 +21,9 @@ const untypedArgs = parser.parse(processArgs);
|
|||||||
|
|
||||||
const initialAdapter = kotlin_test.kotlin.test.detectAdapter_8be2vx$();
|
const initialAdapter = kotlin_test.kotlin.test.detectAdapter_8be2vx$();
|
||||||
kotlin_test.setAdapter(getFilteringAdapter(initialAdapter, untypedArgs));
|
kotlin_test.setAdapter(getFilteringAdapter(initialAdapter, untypedArgs));
|
||||||
|
|
||||||
|
const resultFun = window.__karma__.result;
|
||||||
|
window.__karma__.result = function (result) {
|
||||||
|
console.log(`--END_KOTLIN_TEST--\n${JSON.stringify(result)}`);
|
||||||
|
resultFun(result)
|
||||||
|
};
|
||||||
+5
-1
@@ -7,6 +7,10 @@ interface Window {
|
|||||||
__karma__: {
|
__karma__: {
|
||||||
config: {
|
config: {
|
||||||
args: string[]
|
args: string[]
|
||||||
}
|
},
|
||||||
|
result: (result: BrowserResult) => void
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface BrowserResult {
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user