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:
Morten Sørvig 2022-08-15 10:07:37 +02:00
parent 83cf2985e9
commit ad0cb1f32d
3 changed files with 28 additions and 4 deletions

View File

@ -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.
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
runOnMainThread([resultString = result == TestResult::Pass ? "PASS" : "FAIL", message](){
runOnMainThread([resultString = resultString(result), message](){
EM_ASM({
completeTestFunction(UTF8ToString($0), UTF8ToString($1), UTF8ToString($2));
}, g_currentTestName.c_str(), resultString, message.c_str());
@ -97,7 +111,6 @@ std::string getTestFunctions()
void runTestFunction(std::string name)
{
g_currentTestName = name;
QMetaObject::invokeMethod(g_testObject, "init");
QMetaObject::invokeMethod(g_testObject, name.c_str());
}

View File

@ -13,6 +13,7 @@ namespace QtWasmTest {
enum TestResult {
Pass,
Fail,
Skip,
};
std::string formatMessage(std::string_view file,

View File

@ -156,8 +156,18 @@ function testFunctionStarted(name) {
}
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;
}