Skip QResourceEngine cleanupTestCase on VxWorks

COIN is using patched std::optional header for VxWorks, which is based
on 23.09 version of this system, and fixes few compilation and runtime
issues, unfortunately it introduced runtime error as well. This error
causes std::optional to not destroy contained object in destructor,
which is a source of fail in tst_QResourceEngine::cleanupTestCase().
This fail was quieted down using QEXPECT_FAIL for VxWorks, due to exact
reason being unknown at the time.

It was found out that unpatched version of std::optional header in
VxWorks 24.03 fixes most of issues found in 23.09, so there is no need
to use old header. Additionally it cleans contained object in destructor
properly, so this is the one that should be used. In order to use it,
COIN will need to refresh VxWorks images, but this in turn will fail
this test with XFAIL.

Replace QEXPECT_FAIL with QSKIP in tst_QResourceEngine::cleanupTestCase
for VxWorks, update comment accordngly.

Once unpatched optional version from VxWorks 24.03 will be used on COIN,
skip will be removed entirely.

Task-number: QTBUG-130069
Change-Id: Ib446d04b2fabb027dad7af909ac00b7b30e76b53
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit a10acaca0887541207ad5607680d7864d317cf4b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Michał Łoś 2025-01-14 16:34:34 +01:00 committed by Qt Cherry-pick Bot
parent c465681a86
commit 1a98e24d0c

View File

@ -92,11 +92,9 @@ void tst_QResourceEngine::initTestCase()
void tst_QResourceEngine::cleanupTestCase()
{
#if defined(Q_OS_VXWORKS)
// This fails for not yet known reason: resource `m_runtimeResourceRcc` exists, but its failed
// to be removed due to refernce count of QDynamicFileResourceRoot instance equals to 46
// (regardless of how many test cases were executed), which causes
// `QResource::unregisterResource` to remove false.
QEXPECT_FAIL("", "QTBUG-130069: reference count of resource isn't getting down to 0", Abort);
// Due to bug in patched std::optional on VxWorks, which is not running destructor for contained object, this tests leaks memory.
// Once unpatched optional version from VxWorks 24.03 will be used on CI, below skip will be removed.
QSKIP("QTBUG-130069: reference count of resource isn't getting down to 0");
#endif
// make sure we don't leak memory
QVERIFY(QResource::unregisterResource(m_runtimeResourceRcc));