summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/auto/guiapplauncher/tst_guiapplauncher.cpp137
-rw-r--r--tests/auto/guiapplauncher/windowmanager.cpp2
2 files changed, 80 insertions, 59 deletions
diff --git a/tests/auto/guiapplauncher/tst_guiapplauncher.cpp b/tests/auto/guiapplauncher/tst_guiapplauncher.cpp
index f066f66..c7146ae 100644
--- a/tests/auto/guiapplauncher/tst_guiapplauncher.cpp
+++ b/tests/auto/guiapplauncher/tst_guiapplauncher.cpp
@@ -74,6 +74,10 @@ struct Example {
int upTimeMS;
};
+static const char designerC[] = "Designer";
+static const char linguistC[] = "Linguist";
+static const char qtDemoC[] = "qtdemo";
+
const struct Example examples[] = {
{"animation/animatedtiles Example", "animation/animatedtiles", "animatedtiles", 0, -1},
{"animation/appchooser Example", "animation/appchooser", "appchooser", 10, -1},
@@ -244,8 +248,8 @@ public:
typedef QPair<const char*, AppLaunchData> TestDataEntry;
typedef QList<TestDataEntry> TestDataEntries;
- enum { TestTools = 0x1, TestDemo = 0x2, TestExamples = 0x4,
- TestAll = TestTools|TestDemo|TestExamples };
+ enum { TestTools = 0x1, TestQtDemo = 0x2, TestDemos = 0x4, TestExamples = 0x8,
+ TestAll = TestTools|TestQtDemo|TestDemos|TestExamples };
tst_GuiAppLauncher();
@@ -261,26 +265,48 @@ private:
QString workingDir() const;
private:
+ static QString guiBinary(QString in);
+ inline QString toolsBinary(const QString &tool) const
+ { return m_binPath + tst_GuiAppLauncher::guiBinary(tool); }
+ QString sampleBinary(const QString &root, const Example &e) const;
+ TestDataEntries exampleData(unsigned priority, const QString &path,
+ const Example *exArray, unsigned n) const;
+
bool runApp(const AppLaunchData &data, QString *errorMessage) const;
TestDataEntries testData() const;
- const unsigned m_testMask;
+ unsigned m_testMask;
+ const bool m_debugBuild;
const unsigned m_examplePriority;
const QString m_dir;
+ const QString m_binPath;
+ const QString m_examplesPath;
+ const QString m_demosPath;
const QSharedPointer<WindowManager> m_wm;
};
-// Test mask from environment as test lib does not allow options.
-static inline unsigned testMask()
+// Cross platform galore!
+QString tst_GuiAppLauncher::guiBinary(QString in)
+{
+#ifdef Q_OS_MAC
+ return in + QLatin1String(".app/Contents/MacOS/") + in;
+#endif
+ in[0] = in.at(0).toLower();
+#ifdef Q_OS_WIN
+ in += QLatin1String(".exe");
+#endif
+ return in;
+}
+
+QString tst_GuiAppLauncher::sampleBinary(const QString &root, const Example &e) const
{
- unsigned testMask = tst_GuiAppLauncher::TestAll;
- if (!qgetenv("QT_TEST_NOTOOLS").isEmpty())
- testMask &= ~ tst_GuiAppLauncher::TestTools;
- if (!qgetenv("QT_TEST_NOEXAMPLES").isEmpty())
- testMask &= ~tst_GuiAppLauncher::TestExamples;
- if (!qgetenv("QT_TEST_NODEMOS").isEmpty())
- testMask &= ~tst_GuiAppLauncher::TestDemo;
- return testMask;
+
+ QString binary = root + QLatin1String(e.directory) + '/';
+#ifdef Q_OS_WIN
+ binary += m_debugBuild ? QLatin1String("debug/") : QLatin1String("release/");
+#endif
+ binary += guiBinary(QLatin1String(e.binary));
+ return binary;
}
static inline unsigned testExamplePriority()
@@ -296,9 +322,13 @@ static inline unsigned testExamplePriority()
}
tst_GuiAppLauncher::tst_GuiAppLauncher() :
- m_testMask(testMask()),
+ m_testMask(tst_GuiAppLauncher::TestAll),
+ m_debugBuild(QLibraryInfo::buildKey().contains(QLatin1String("debug"))),
m_examplePriority(testExamplePriority()),
m_dir(QLatin1String(SRCDIR)),
+ m_binPath(QLibraryInfo::location(QLibraryInfo::BinariesPath) + QLatin1Char('/')),
+ m_examplesPath(QLibraryInfo::location(QLibraryInfo::ExamplesPath) + QLatin1Char('/')),
+ m_demosPath(QLibraryInfo::location(QLibraryInfo::DemosPath) + QLatin1Char('/')),
m_wm(WindowManager::create())
{
}
@@ -322,6 +352,26 @@ void tst_GuiAppLauncher::initTestCase()
message = QString::fromLatin1("Invalid working directory %1").arg(m_dir);
QFAIL(message.toLocal8Bit().constData());
}
+ if (!QFileInfo(toolsBinary(QLatin1String(designerC))).exists()) {
+ m_testMask &= ~TestTools;
+ qWarning("Not testing tools.");
+ }
+ if (!QFileInfo(toolsBinary(QLatin1String(qtDemoC))).exists()) {
+ m_testMask &= ~TestQtDemo;
+ qWarning("Not testing qtdemo.");
+ }
+ const QString firstExampleBinary = sampleBinary(m_examplesPath, examples[0]);
+ if (!QFileInfo(firstExampleBinary).exists()) {
+ m_testMask &= ~TestExamples;
+ qWarning("Not testing examples, '%s' cannot be found.",
+ qPrintable(QDir::toNativeSeparators(firstExampleBinary)));
+ }
+ const QString firstDemoBinary = sampleBinary(m_demosPath, demos[0]);
+ if (!QFileInfo(firstDemoBinary).exists()) {
+ m_testMask &= ~TestDemos;
+ qWarning("Not testing demos, '%s' cannot be found.",
+ qPrintable(QDir::toNativeSeparators(firstDemoBinary)));
+ }
}
void tst_GuiAppLauncher::run()
@@ -334,19 +384,6 @@ void tst_GuiAppLauncher::run()
QVERIFY2(rc, qPrintable(errorMessage));
}
-// Cross platform galore!
-static inline QString guiBinary(QString in)
-{
-#ifdef Q_OS_MAC
- return in + QLatin1String(".app/Contents/MacOS/") + in;
-#endif
- in[0] = in.at(0).toLower();
-#ifdef Q_OS_WIN
- in += QLatin1String(".exe");
-#endif
- return in;
-}
-
void tst_GuiAppLauncher::run_data()
{
QTest::addColumn<AppLaunchData>("data");
@@ -355,13 +392,12 @@ void tst_GuiAppLauncher::run_data()
}
// Read out the examples array structures and convert to test data.
-static tst_GuiAppLauncher::TestDataEntries exampleData(unsigned priority,
- const QString &path,
- bool debug,
- const Example *exArray,
- unsigned n)
+tst_GuiAppLauncher::TestDataEntries
+ tst_GuiAppLauncher::exampleData(unsigned priority,
+ const QString &path,
+ const Example *exArray,
+ unsigned n) const
{
- Q_UNUSED(debug)
tst_GuiAppLauncher::TestDataEntries rc;
const QChar slash = QLatin1Char('/');
AppLaunchData data;
@@ -369,13 +405,8 @@ static tst_GuiAppLauncher::TestDataEntries exampleData(unsigned priority,
const Example &example = exArray[e];
if (example.priority <= priority) {
data.clear();
- const QString examplePath = path + slash + QLatin1String(example.directory);
- data.binary = examplePath + slash;
-#ifdef Q_OS_WIN
- data.binary += debug? QLatin1String("debug/") : QLatin1String("release/");
-#endif
- data.binary += guiBinary(QLatin1String(example.binary));
- data.workingDirectory = examplePath;
+ data.binary = sampleBinary(path, example);
+ data.workingDirectory = path + slash + QLatin1String(example.directory);
if (example.upTimeMS > 0)
data.upTimeMS = example.upTimeMS;
rc.append(tst_GuiAppLauncher::TestDataEntry(example.name, data));
@@ -387,42 +418,32 @@ static tst_GuiAppLauncher::TestDataEntries exampleData(unsigned priority,
tst_GuiAppLauncher::TestDataEntries tst_GuiAppLauncher::testData() const
{
TestDataEntries rc;
- const QChar slash = QLatin1Char('/');
- const QString binPath = QLibraryInfo::location(QLibraryInfo::BinariesPath) + slash;
- const bool debug = QLibraryInfo::buildKey().contains(QLatin1String("debug"));
- Q_UNUSED(debug)
-
AppLaunchData data;
if (m_testMask & TestTools) {
- data.binary = binPath + guiBinary(QLatin1String("Designer"));
+ data.binary = toolsBinary(QLatin1String(designerC));
data.args.append(m_dir + QLatin1String("test.ui"));
rc.append(TestDataEntry("Qt Designer", data));
data.clear();
- data.binary = binPath + guiBinary(QLatin1String("Linguist"));
+ data.binary = toolsBinary(QLatin1String(linguistC));
data.splashScreen = true;
data.upTimeMS = 5000; // Slow loading
data.args.append(m_dir + QLatin1String("test.ts"));
rc.append(TestDataEntry("Qt Linguist", data));
}
- if (m_testMask & TestDemo) {
+ if (m_testMask & TestQtDemo) {
data.clear();
data.upTimeMS = 5000; // Startup animation
- data.binary = binPath + guiBinary(QLatin1String("qtdemo"));
+ data.binary = toolsBinary(QLatin1String(qtDemoC));
rc.append(TestDataEntry("Qt Demo", data));
-
- const QString demosPath = QLibraryInfo::location(QLibraryInfo::DemosPath);
- if (!demosPath.isEmpty())
- rc += exampleData(m_examplePriority, demosPath, debug, demos, sizeof(demos)/sizeof(Example));
}
- if (m_testMask & TestExamples) {
- const QString examplesPath = QLibraryInfo::location(QLibraryInfo::ExamplesPath);
- if (!examplesPath.isEmpty())
- rc += exampleData(m_examplePriority, examplesPath, debug, examples, sizeof(examples)/sizeof(Example));
- }
+ if (m_testMask & TestDemos)
+ rc += exampleData(m_examplePriority, m_demosPath, demos, sizeof(demos)/sizeof(Example));
+ if (m_testMask & TestExamples)
+ rc += exampleData(m_examplePriority, m_examplesPath, examples, sizeof(examples)/sizeof(Example));
qDebug("Running %d tests...", rc.size());
return rc;
}
diff --git a/tests/auto/guiapplauncher/windowmanager.cpp b/tests/auto/guiapplauncher/windowmanager.cpp
index 79d2dd8..72d2f2a 100644
--- a/tests/auto/guiapplauncher/windowmanager.cpp
+++ b/tests/auto/guiapplauncher/windowmanager.cpp
@@ -360,7 +360,7 @@ static inline bool isQtMainWindow(HWND hwnd)
if (!(windowInfo.dwWindowStatus & WS_ACTIVECAPTION))
return false;
// Check the style for a real mainwindow
- const DWORD excluded = WS_DISABLED | WS_POPUP;
+ const DWORD excluded = WS_DISABLED;
const DWORD required = WS_CAPTION | WS_SYSMENU | WS_VISIBLE;
return (windowInfo.dwStyle & excluded) == 0
&& (windowInfo.dwStyle & required) == required;