wasm: add "skip" support to qtwasmtestlib
We're not looking to skip faulty tests, but there are cases where we would like to indicate that a test function exists but can't run because some precondition is not met. Pick-to: 6.4 Change-Id: Ifaaafcfa7a55beaaf56d8b25fabbe3dc2566350f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
This commit is contained in:
parent
83cf2985e9
commit
ad0cb1f32d
@ -45,8 +45,22 @@ void verify(bool condition, std::string_view conditionString, std::string_view f
|
|||||||
// thread-safe and call be called from any thread.
|
// thread-safe and call be called from any thread.
|
||||||
void completeTestFunction(TestResult result, std::string message)
|
void completeTestFunction(TestResult result, std::string message)
|
||||||
{
|
{
|
||||||
|
auto resultString = [](TestResult result) {
|
||||||
|
switch (result) {
|
||||||
|
case TestResult::Pass:
|
||||||
|
return "PASS";
|
||||||
|
break;
|
||||||
|
case TestResult::Fail:
|
||||||
|
return "FAIL";
|
||||||
|
break;
|
||||||
|
case TestResult::Skip:
|
||||||
|
return "SKIP";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Report test result to JavaScript test runner, on the main thread
|
// Report test result to JavaScript test runner, on the main thread
|
||||||
runOnMainThread([resultString = result == TestResult::Pass ? "PASS" : "FAIL", message](){
|
runOnMainThread([resultString = resultString(result), message](){
|
||||||
EM_ASM({
|
EM_ASM({
|
||||||
completeTestFunction(UTF8ToString($0), UTF8ToString($1), UTF8ToString($2));
|
completeTestFunction(UTF8ToString($0), UTF8ToString($1), UTF8ToString($2));
|
||||||
}, g_currentTestName.c_str(), resultString, message.c_str());
|
}, g_currentTestName.c_str(), resultString, message.c_str());
|
||||||
@ -97,7 +111,6 @@ std::string getTestFunctions()
|
|||||||
void runTestFunction(std::string name)
|
void runTestFunction(std::string name)
|
||||||
{
|
{
|
||||||
g_currentTestName = name;
|
g_currentTestName = name;
|
||||||
QMetaObject::invokeMethod(g_testObject, "init");
|
|
||||||
QMetaObject::invokeMethod(g_testObject, name.c_str());
|
QMetaObject::invokeMethod(g_testObject, name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ namespace QtWasmTest {
|
|||||||
enum TestResult {
|
enum TestResult {
|
||||||
Pass,
|
Pass,
|
||||||
Fail,
|
Fail,
|
||||||
|
Skip,
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string formatMessage(std::string_view file,
|
std::string formatMessage(std::string_view file,
|
||||||
|
@ -156,8 +156,18 @@ function testFunctionStarted(name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testFunctionCompleted(status) {
|
function testFunctionCompleted(status) {
|
||||||
const color = status.startsWith("PASS") ? "green" : status.startsWith("FAIL") ? "red" : "black";
|
|
||||||
let line = `<span style='color: ${color};'>${status}</text><br>`;
|
const color = (status) => {
|
||||||
|
if (status.startsWith("PASS"))
|
||||||
|
return "green";
|
||||||
|
if (status.startsWith("FAIL"))
|
||||||
|
return "red";
|
||||||
|
if (status.startsWith("SKIP"))
|
||||||
|
return "tan";
|
||||||
|
return "black";
|
||||||
|
};
|
||||||
|
|
||||||
|
const line = `<span style='color: ${color(status)};'>${status}</text><br>`;
|
||||||
g_htmlLogElement.innerHTML += line;
|
g_htmlLogElement.innerHTML += line;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user