summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTimur Pocheptsov <Timur.Pocheptsov@digia.com>2015-05-27 14:08:04 +0200
committerTimur Pocheptsov <Timur.Pocheptsov@digia.com>2015-05-27 15:26:27 +0000
commit5449589b7c45a5ce1374c358bbcb1eba130d390d (patch)
tree419d8bc9c9e3cc522ee0b6b150fbdc5ff91480c6 /tests
parent970241a11ad03f33fd2f8c3dcc8bf7e54a7d274f (diff)
tst_QApplication - quitOnLastWindowClosed (fix for OS X)
Two (?) tests can fail: what they actually try to test is that our application quits on the second single shot timer (2 s. timeout) and not on the first one (timeout 1 s.) - on the first timeout we either ignore event, or we still have another window and should not quit yet, on the second timeout we actually do quit the app. The test checks this in a quite fragile way, counting the number of timeouts for the third 100 ms timer. It looks like on OS X (VM-only) there is some delay (~500-600 ms) before we receive the first timeout so the count is always 14 or less, making the test to fail. Change-Id: I9e8728e6c956025d91528f4195982767a5d3d320 Task-number: QTBUG-46164 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp34
1 files changed, 20 insertions, 14 deletions
diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
index c9a1a64135..c33fd5a951 100644
--- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
@@ -178,6 +178,12 @@ private slots:
void settableStyleHints_data();
void settableStyleHints(); // Needs to run last as it changes style hints.
+
+protected slots:
+ void quitApplication();
+
+private:
+ bool quitApplicationTriggered;
};
class EventSpy : public QObject
@@ -235,6 +241,7 @@ public:
static char *argv0;
tst_QApplication::tst_QApplication()
+ : quitApplicationTriggered(false)
{
#ifdef Q_OS_WINCE
// Clean up environment previously to launching test
@@ -719,11 +726,8 @@ void tst_QApplication::quitOnLastWindowClosed()
{
int argc = 0;
QApplication app(argc, 0);
- QTimer timer;
- timer.setInterval(100);
QSignalSpy spy(&app, SIGNAL(aboutToQuit()));
- QSignalSpy spy2(&timer, SIGNAL(timeout()));
CloseEventTestWindow mainWindow;
@@ -733,14 +737,14 @@ void tst_QApplication::quitOnLastWindowClosed()
mainWindow.show();
QVERIFY(QTest::qWaitForWindowExposed(&mainWindow));
- timer.start();
- QTimer::singleShot(1000, &mainWindow, SLOT(close())); // This should quit the application
- QTimer::singleShot(2000, &app, SLOT(quit())); // This makes sure we quit even if it didn't
+ QTimer::singleShot(1000, &mainWindow, SLOT(close())); // This should NOT quit the application (see CloseEventTestWindow)
+ quitApplicationTriggered = false;
+ QTimer::singleShot(2000, this, SLOT(quitApplication())); // This actually quits the application.
app.exec();
QCOMPARE(spy.count(), 1);
- QVERIFY(spy2.count() > 15); // Should be around 20 if closing did not caused the quit
+ QVERIFY(quitApplicationTriggered);
}
{
int argc = 0;
@@ -768,24 +772,20 @@ void tst_QApplication::quitOnLastWindowClosed()
QApplication app(argc, 0);
QVERIFY(app.quitOnLastWindowClosed());
- QTimer timer;
- timer.setInterval(100);
- QSignalSpy timerSpy(&timer, SIGNAL(timeout()));
-
QWindow w;
w.show();
QWidget wid;
wid.show();
- timer.start();
QTimer::singleShot(1000, &wid, SLOT(close())); // This should NOT quit the application because the
// QWindow is still there.
- QTimer::singleShot(2000, &app, SLOT(quit())); // This causes the quit.
+ quitApplicationTriggered = false;
+ QTimer::singleShot(2000, this, SLOT(quitApplication())); // This causes the quit.
app.exec();
- QVERIFY(timerSpy.count() > 15); // Should be around 20 if closing did not caused the quit
+ QVERIFY(quitApplicationTriggered); // Should be around 20 if closing did not caused the quit
}
{ // QTBUG-31569: If the last widget with Qt::WA_QuitOnClose set is closed, other
// widgets that don't have the attribute set should be closed automatically.
@@ -2406,6 +2406,12 @@ void tst_QApplication::globalStaticObjectDestruction()
#endif
}
+void tst_QApplication::quitApplication()
+{
+ quitApplicationTriggered = true;
+ qApp->quit();
+}
+
//QTEST_APPLESS_MAIN(tst_QApplication)
int main(int argc, char *argv[])
{