summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/postbuild/bic/tst_bic.cpp7
-rw-r--r--tests/postbuild/global.h77
-rw-r--r--tests/postbuild/symbols/tst_symbols.cpp6
3 files changed, 71 insertions, 19 deletions
diff --git a/tests/postbuild/bic/tst_bic.cpp b/tests/postbuild/bic/tst_bic.cpp
index 59f30c79..cde23efb 100644
--- a/tests/postbuild/bic/tst_bic.cpp
+++ b/tests/postbuild/bic/tst_bic.cpp
@@ -363,11 +363,12 @@ void tst_Bic::initTestCase()
);
}
- modules = qt_tests_shared_global_get_modules(configFile);
+ QString workDir = qtModuleDir + QStringLiteral("/tests/global");
+ modules = qt_tests_shared_global_get_modules(workDir, configFile);
- QVERIFY2(modules.size() > 0, "Something is wrong in the global config file.");
+ if (!modules.size())
+ QSKIP("No modules found.");
- QString workDir = qtModuleDir + "/tests/global";
incPaths = qt_tests_shared_global_get_include_paths(workDir, modules);
QVERIFY2(incPaths.size() > 0, "Parse INCPATH failed.");
diff --git a/tests/postbuild/global.h b/tests/postbuild/global.h
index 86c6666d..fd5fd2e6 100644
--- a/tests/postbuild/global.h
+++ b/tests/postbuild/global.h
@@ -34,10 +34,17 @@
#include <QtTest/QtTest>
QStringList qt_tests_shared_global_get_include_path(const QString &makeFile);
-QHash<QString, QString> qt_tests_shared_global_get_modules(const QString &configFile);
+QHash<QString, QString> qt_tests_shared_global_get_modules(const QString &workDir,
+ const QString &configFile);
QStringList qt_tests_shared_global_get_include_paths();
-QHash<QString, QString> qt_tests_shared_global_get_modules(const QString &configFile)
+QStringList qt_tests_shared_run_qmake(const QString &workDir,
+ const QByteArray &proFileConent,
+ QStringList(*makeFileParser)(const QString&));
+QStringList qt_tests_shared_global_get_export_modules(const QString &makeFile);
+void qt_tests_shared_filter_module_list(const QString &workDir, QHash<QString, QString> &modules);
+
+QHash<QString, QString> qt_tests_shared_global_get_modules(const QString &workDir, const QString &configFile)
{
QHash<QString, QString> modules;
@@ -72,6 +79,8 @@ QHash<QString, QString> qt_tests_shared_global_get_modules(const QString &config
file.close();
+ qt_tests_shared_filter_module_list(workDir, modules);
+
qDebug() << "modules keys:" << modules.keys();
qDebug() << "modules values:" << modules.values();
@@ -85,33 +94,56 @@ QByteArray qt_tests_shared_global_get_modules_pro_lines(const QHash<QString, QSt
QByteArray module = moduleName.toLatin1();
result += "qtHaveModule(" + module + ") {\n" +
" QT += " + module + "\n" +
+ " MODULES += " + module + "\n" +
"}\n";
}
+ result += "QMAKE_EXTRA_VARIABLES += MODULES\n";
return result;
}
-QStringList qt_tests_shared_global_get_include_paths(const QString &workDir, QHash<QString, QString> &modules)
+QStringList qt_tests_shared_global_get_include_paths(const QString &workDir,
+ QHash<QString, QString> &modules)
+{
+ return qt_tests_shared_run_qmake(workDir,
+ qt_tests_shared_global_get_modules_pro_lines(modules),
+ &qt_tests_shared_global_get_include_path);
+}
+
+void qt_tests_shared_filter_module_list(const QString &workDir, QHash<QString, QString> &modules)
+{
+ const QStringList result = qt_tests_shared_run_qmake(workDir,
+ qt_tests_shared_global_get_modules_pro_lines(modules),
+ &qt_tests_shared_global_get_export_modules);
+ const QStringList keys = modules.keys();
+ for (const QString &key : keys) {
+ if (!result.contains(modules[key]))
+ modules.remove(key);
+ }
+}
+
+QStringList qt_tests_shared_run_qmake(const QString &workDir,
+ const QByteArray &proFileContent,
+ QStringList(*makeFileParser)(const QString&))
{
QString proFile = workDir + "/global.pro";
QString makeFile = workDir + "/Makefile";
- QStringList incPaths;
+ QStringList result;
#ifndef QT_NO_PROCESS
QFile file(proFile);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QWARN("Can't open the pro file for global.");
- return incPaths;
+ return result;
}
- QByteArray proLines = qt_tests_shared_global_get_modules_pro_lines(modules);
- file.write(proLines);
+ file.write(proFileContent);
file.flush();
file.close();
if (!QDir::setCurrent(workDir)) {
QWARN("Change working dir failed.");
- return incPaths;
+ return result;
}
QString qmakeApp = "qmake";
@@ -124,20 +156,20 @@ QStringList qt_tests_shared_global_get_include_paths(const QString &workDir, QHa
proc.start(qmakeApp, qmakeArgs, QIODevice::ReadOnly);
if (!proc.waitForFinished(6000000)) {
qWarning() << qmakeApp << qmakeArgs << "in" << workDir << "didn't finish" << proc.errorString();
- return incPaths;
+ return result;
}
if (proc.exitCode() != 0) {
qWarning() << qmakeApp << qmakeArgs << "in" << workDir << "returned with" << proc.exitCode();
qDebug() << proc.readAllStandardError();
- return incPaths;
+ return result;
}
QFile::remove(proFile);
- incPaths = qt_tests_shared_global_get_include_path(makeFile);
+ result = makeFileParser(makeFile);
#ifdef Q_OS_WIN
- if (incPaths.isEmpty())
- incPaths = qt_tests_shared_global_get_include_path(makeFile + QLatin1String(".Release"));
+ if (result.isEmpty())
+ result = makeFileParser(makeFile + QLatin1String(".Release"));
#endif
QFile::remove(makeFile);
@@ -145,7 +177,7 @@ QStringList qt_tests_shared_global_get_include_paths(const QString &workDir, QHa
Q_UNUSED(modules);
#endif // QT_NO_PROCESS
- return incPaths;
+ return result;
}
QStringList qt_tests_shared_global_get_include_path(const QString &makeFile)
@@ -178,4 +210,21 @@ QStringList qt_tests_shared_global_get_include_path(const QString &makeFile)
return QStringList();
}
+QStringList qt_tests_shared_global_get_export_modules(const QString &makeFile)
+{
+ QFile file(makeFile);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ return QStringList();
+ QTextStream in(&file);
+ while (!in.atEnd()) {
+ QString line = in.readLine();
+ int index = line.indexOf('=');
+ if (index > 13 && line.startsWith(QLatin1String("EXPORT_MODULES"))) {
+ QString relatives = line.mid(index + 1);
+ return relatives.split(QChar(' '), QString::SkipEmptyParts);
+ }
+ }
+ return QStringList();
+}
+
#endif // QT_TESTS_SHARED_GLOBAL_H_INCLUDED
diff --git a/tests/postbuild/symbols/tst_symbols.cpp b/tests/postbuild/symbols/tst_symbols.cpp
index 7816254f..98766654 100644
--- a/tests/postbuild/symbols/tst_symbols.cpp
+++ b/tests/postbuild/symbols/tst_symbols.cpp
@@ -75,9 +75,11 @@ void tst_Symbols::initTestCase()
);
}
- modules = qt_tests_shared_global_get_modules(configFile);
+ QString workDir = qtModuleDir + QStringLiteral("/tests/global");
+ modules = qt_tests_shared_global_get_modules(workDir, configFile);
- QVERIFY2(modules.size() > 0, "Something is wrong in the global config file.");
+ if (!modules.size())
+ QSKIP("No modules found.");
qtLibDir = QLibraryInfo::location( QLibraryInfo::LibrariesPath );
QFileInfo qtLibDirInfo(qtLibDir);