/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function run_test() {
const { StructuredLogger } = ChromeUtils.importESModule(
"resource://testing-common/StructuredLog.sys.mjs"
);
let testBuffer = [];
let appendBuffer =
function (msg) {
testBuffer.push(JSON.stringify(msg));
};
let assertLastMsg =
function (refData) {
// Check all fields in refData agree with those in the
// last message logged, and pop that message.
let lastMsg = JSON.parse(testBuffer.pop());
for (let field in refData) {
deepEqual(lastMsg[field], refData[field]);
}
// The logger should always set the source to the logger name.
equal(lastMsg.source,
"test_log" );
};
let logger =
new StructuredLogger(
"test_log" , appendBuffer);
// Test unstructured logging
logger.info(
"Test message" );
assertLastMsg({
action:
"log" ,
message:
"Test message" ,
level:
"INFO" ,
});
logger.info(
"Test message" , { foo:
"bar" });
assertLastMsg({
action:
"log" ,
message:
"Test message" ,
level:
"INFO" ,
extra: { foo:
"bar" },
});
// Test end / start actions
logger.testStart(
"aTest" );
assertLastMsg({
test:
"aTest" ,
action:
"test_start" ,
});
logger.testEnd(
"aTest" ,
"OK" );
assertLastMsg({
test:
"aTest" ,
action:
"test_end" ,
status:
"OK" ,
});
// A failed test populates the "expected" field.
logger.testStart(
"aTest" );
logger.testEnd(
"aTest" ,
"FAIL" ,
"PASS" );
assertLastMsg({
action:
"test_end" ,
test:
"aTest" ,
status:
"FAIL" ,
expected:
"PASS" ,
});
// A failed test populates the "expected" field.
logger.testStart(
"aTest" );
logger.testEnd(
"aTest" ,
"FAIL" ,
"PASS" ,
null ,
"Many\nlines\nof\nstack\n" );
assertLastMsg({
action:
"test_end" ,
test:
"aTest" ,
status:
"FAIL" ,
expected:
"PASS" ,
stack:
"Many\nlines\nof\nstack\n" ,
});
// Skipped tests don't log failures
logger.testStart(
"aTest" );
logger.testEnd(
"aTest" ,
"SKIP" ,
"PASS" );
ok(!JSON.parse(testBuffer[testBuffer.length - 1]).hasOwnProperty(
"expected" ));
assertLastMsg({
action:
"test_end" ,
test:
"aTest" ,
status:
"SKIP" ,
});
logger.testStatus(
"aTest" ,
"foo" ,
"PASS" ,
"PASS" ,
"Passed test" );
ok(!JSON.parse(testBuffer[testBuffer.length - 1]).hasOwnProperty(
"expected" ));
assertLastMsg({
action:
"test_status" ,
test:
"aTest" ,
subtest:
"foo" ,
status:
"PASS" ,
message:
"Passed test" ,
});
logger.testStatus(
"aTest" ,
"bar" ,
"FAIL" );
assertLastMsg({
action:
"test_status" ,
test:
"aTest" ,
subtest:
"bar" ,
status:
"FAIL" ,
expected:
"PASS" ,
});
logger.testStatus(
"aTest" ,
"bar" ,
"FAIL" ,
"PASS" ,
null ,
"Many\nlines\nof\nstack\n"
);
assertLastMsg({
action:
"test_status" ,
test:
"aTest" ,
subtest:
"bar" ,
status:
"FAIL" ,
expected:
"PASS" ,
stack:
"Many\nlines\nof\nstack\n" ,
});
// Skipped tests don't log failures
logger.testStatus(
"aTest" ,
"baz" ,
"SKIP" );
ok(!JSON.parse(testBuffer[testBuffer.length - 1]).hasOwnProperty(
"expected" ));
assertLastMsg({
action:
"test_status" ,
test:
"aTest" ,
subtest:
"baz" ,
status:
"SKIP" ,
});
// Suite start and end messages.
var ids = { aManifest: [
"aTest" ] };
logger.suiteStart(ids);
assertLastMsg({
action:
"suite_start" ,
tests: { aManifest: [
"aTest" ] },
});
logger.suiteEnd();
assertLastMsg({
action:
"suite_end" ,
});
}
Messung V0.5 C=98 H=93 G=95
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland