1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:38:11 +00:00

test-js: Allow skipping tests with "test.skip(name, callback)"

Skipped tests count as a "pass" rather than a "fail" (i.e. a test suite
with a skipped test will pass), however it does display a message when
the test is printing.

This is intended for tests which _should_ work, but currently do not.
This should be preferred over "// FIXME" notes if possible.
This commit is contained in:
Matthew Olsson 2020-07-04 12:57:12 -07:00 committed by Andreas Kling
parent cf537311e4
commit 82fa65135a
2 changed files with 70 additions and 22 deletions

View file

@ -415,7 +415,7 @@ class Expector {
expect = value => new Expector(value);
// describe is able to lump test results inside of it by using this context
// variable. Top level tests are assumed to be in the default context
// variable. Top level tests have the default suite message
const defaultSuiteMessage = "__$$TOP_LEVEL$$__";
let suiteMessage = defaultSuiteMessage;
@ -425,19 +425,18 @@ describe = (message, callback) => {
suiteMessage = defaultSuiteMessage;
}
const getTestFunction = successMessage => (message, callback) => {
test = (message, callback) => {
if (!__TestResults__[suiteMessage])
__TestResults__[suiteMessage] = {};
const suite = __TestResults__[suiteMessage];
if (!suite[message])
suite[message] = {};
if (suite[message])
throw new Error("Duplicate test name: " + message);
try {
callback();
suite[message] = {
result: successMessage,
result: "pass",
};
} catch (e) {
suite[message] = {
@ -446,6 +445,20 @@ const getTestFunction = successMessage => (message, callback) => {
}
}
test = getTestFunction("pass");
test.skip = (message, callback) => {
if (typeof callback !== "function")
throw new Error("test.skip has invalid second argument (must be a function)");
if (!__TestResults__[suiteMessage])
__TestResults__[suiteMessage] = {};
const suite = __TestResults__[suiteMessage];
if (suite[message])
throw new Error("Duplicate test name: " + message);
suite[message] = {
result: "skip",
}
}
})();