tst_QLibrary: add a cleanup() method to unload left-overs
QLibrary intentionally does not unload on destruction, so failing tests may leave libraries already loaded and cause further tests to fail because of that. So add a cleanup() method to unload everything we may have loaded. Note that QLibrary::unload() sets its state to NotLoaded after one successful call, so we must recreate the object in case it had been load()ed multiple times. Change-Id: I12a088d1ae424825abd3fffd171d133c678f910a Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit 636dbe604596b2860e4f6d9b159fc017dcd2f66b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
c7c360cd51
commit
4866cac6f1
@ -81,6 +81,7 @@ enum QLibraryOperation {
|
||||
QString directory;
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void cleanup();
|
||||
|
||||
void load();
|
||||
void load_data();
|
||||
@ -124,6 +125,38 @@ void tst_QLibrary::initTestCase()
|
||||
#endif
|
||||
}
|
||||
|
||||
void tst_QLibrary::cleanup()
|
||||
{
|
||||
// unload the libraries, if they are still loaded after the test ended
|
||||
// (probably in a failure)
|
||||
|
||||
static struct {
|
||||
QString name;
|
||||
int version = -1;
|
||||
} libs[] = {
|
||||
{ directory + "/mylib" },
|
||||
{ directory + "/mylib", 1 },
|
||||
{ directory + "/mylib", 2 },
|
||||
{ sys_qualifiedLibraryName("mylib") },
|
||||
|
||||
// stuff that load_data() succeeds with
|
||||
{ directory + "/" PREFIX "mylib" },
|
||||
{ directory + "/" PREFIX "mylib" SUFFIX },
|
||||
#if defined(Q_OS_WIN32)
|
||||
{ directory + "/mylib.dl2" },
|
||||
{ directory + "/system.qt.test.mylib.dll" },
|
||||
#elif !defined(Q_OS_ANDROID)
|
||||
// .so even on macOS
|
||||
{ directory + "/libmylib.so2" },
|
||||
{ directory + "/system.qt.test.mylib.so" },
|
||||
#endif
|
||||
|
||||
};
|
||||
for (const auto &entry : libs) {
|
||||
do {} while (QLibrary(entry.name, entry.version).unload());
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QLibrary::version_data()
|
||||
{
|
||||
#ifdef Q_OS_ANDROID
|
||||
|
Loading…
x
Reference in New Issue
Block a user