Run application main run loop in color/font dialog test
authorTeemu Katajisto <teemu.katajisto@digia.com>
Thu, 13 Sep 2012 06:24:09 +0000 (09:24 +0300)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 27 Sep 2012 21:51:30 +0000 (23:51 +0200)
In cocoa the timers are associated with main run loop but
the way font and color dialog tests are executed the modal
dialog run loop is only run in cocoa. This causes timers to
not to fire and test cases to hang.

Unfortunately this does not completely fix the test failure
because the QTest::keyClick is not working with cocoa
native dialog helpers and therefore the tests are marked
with QEXPECT_FAIL.

Task-number: QTBUG-24320
Task-number: QTBUG-24321

Change-Id: I88740a20ad2b794b6ca15e1b6455f436ffd39335
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp
tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp

index 3b36f4e..c488510 100644 (file)
@@ -53,12 +53,10 @@ public:
     tst_QColorDialog();
     virtual ~tst_QColorDialog();
 
-#ifndef Q_OS_MAC
 public slots:
     void postKeyReturn();
-private slots:
-    void defaultOkButton();
-#endif
+    void testGetRgba();
+    void testNativeActiveModalWidget();
 
 public slots:
     void initTestCase();
@@ -67,6 +65,7 @@ public slots:
     void cleanup();
 
 private slots:
+    void defaultOkButton();
     void native_activeModalWidget();
     void task247349_alpha();
 };
@@ -98,11 +97,8 @@ tst_QColorDialog::~tst_QColorDialog()
 {
 }
 
-void tst_QColorDialog::native_activeModalWidget()
+void tst_QColorDialog::testNativeActiveModalWidget()
 {
-#ifdef Q_OS_MAC
-    QSKIP("Test hangs on Mac OS X, see QTBUG-24320");
-#endif
     // Check that QApplication::activeModalWidget retruns the
     // color dialog when it is executing, even when using a native
     // dialog:
@@ -112,6 +108,13 @@ void tst_QColorDialog::native_activeModalWidget()
     QVERIFY(&d == d.m_activeModalWidget);
 }
 
+void tst_QColorDialog::native_activeModalWidget()
+{
+    QTimer::singleShot(3000, qApp, SLOT(quit()));
+    QTimer::singleShot(0, this, SLOT(testNativeActiveModalWidget()));
+    qApp->exec();
+}
+
 void tst_QColorDialog::initTestCase()
 {
 }
@@ -128,8 +131,6 @@ void tst_QColorDialog::cleanup()
 {
 }
 
-#ifndef Q_OS_MAC
-//copied from QFontDialogTest
 void tst_QColorDialog::postKeyReturn() {
     QWidgetList list = QApplication::topLevelWidgets();
     for (int i=0; i<list.count(); ++i) {
@@ -141,14 +142,23 @@ void tst_QColorDialog::postKeyReturn() {
     }
 }
 
-void tst_QColorDialog::defaultOkButton()
+void tst_QColorDialog::testGetRgba()
 {
+#ifdef Q_OS_MAC
+    QEXPECT_FAIL("", "Sending QTest::keyClick to OSX color dialog helper fails, see QTBUG-24320", Continue);
+#endif
     bool ok = false;
     QTimer::singleShot(500, this, SLOT(postKeyReturn()));
     QColorDialog::getRgba(0xffffffff, &ok);
     QVERIFY(ok);
 }
-#endif
+
+void tst_QColorDialog::defaultOkButton()
+{
+    QTimer::singleShot(4000, qApp, SLOT(quit()));
+    QTimer::singleShot(0, this, SLOT(testGetRgba()));
+    qApp->exec();
+}
 
 void tst_QColorDialog::task247349_alpha()
 {
index b75ab41..2d39dda 100644 (file)
@@ -64,6 +64,8 @@ public:
 
 public slots:
     void postKeyReturn();
+    void testGetFont();
+    void testSetFont();
 
 public slots:
     void initTestCase();
@@ -100,7 +102,6 @@ void tst_QFontDialog::cleanup()
 {
 }
 
-
 void tst_QFontDialog::postKeyReturn() {
     QWidgetList list = QApplication::topLevelWidgets();
     for (int i=0; i<list.count(); ++i) {
@@ -112,10 +113,10 @@ void tst_QFontDialog::postKeyReturn() {
     }
 }
 
-void tst_QFontDialog::defaultOkButton()
+void tst_QFontDialog::testGetFont()
 {
 #ifdef Q_OS_MAC
-    QSKIP("Test hangs on Mac OS X, see QTBUG-24321");
+    QEXPECT_FAIL("", "Sending QTest::keyClick to OSX font dialog helper fails, see QTBUG-24321", Continue);
 #endif
     bool ok = false;
     QTimer::singleShot(2000, this, SLOT(postKeyReturn()));
@@ -124,15 +125,15 @@ void tst_QFontDialog::defaultOkButton()
 }
 
 
-void tst_QFontDialog::setFont()
+void tst_QFontDialog::defaultOkButton()
+{
+    QTimer::singleShot(4000, qApp, SLOT(quit()));
+    QTimer::singleShot(0, this, SLOT(testGetFont()));
+    qApp->exec();
+}
+
+void tst_QFontDialog::testSetFont()
 {
-#ifdef Q_OS_MAC
-    QSKIP("Test hangs on Mac OS X, see QTBUG-24321");
-#endif
-    /* The font should be the same before as it is after if nothing changed
-              while the font dialog was open.
-             Task #27662
-    */
     bool ok = false;
 #if defined Q_OS_HPUX
     QString fontName = "Courier";
@@ -151,11 +152,22 @@ void tst_QFontDialog::setFont()
     QCOMPARE(QFontInfo(f2).pointSize(), QFontInfo(f1).pointSize());
 }
 
+void tst_QFontDialog::setFont()
+{
+    /* The font should be the same before as it is after if nothing changed
+              while the font dialog was open.
+              Task #27662
+    */
+    QTimer::singleShot(4000, qApp, SLOT(quit()));
+    QTimer::singleShot(0, this, SLOT(testSetFont()));
+    qApp->exec();
+}
+
 
 class FriendlyFontDialog : public QFontDialog
 {
     friend class tst_QFontDialog;
-    Q_DECLARE_PRIVATE(QFontDialog);
+    Q_DECLARE_PRIVATE(QFontDialog)
 };
 
 void tst_QFontDialog::task256466_wrongStyle()