[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.0' - desktop/qa

Ashod Nakashian ashod.nakashian at collabora.co.uk
Sat Apr 23 13:26:34 UTC 2016


 desktop/qa/desktop_lib/test_desktop_lib.cxx |   19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

New commits:
commit 548faf728cf097d93c3f6478ceea5f8747e789c6
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sat Apr 23 08:42:30 2016 -0400

    Fixed desktop unit-tests
    
    Since desktop now queues up callback notifications
    and flushes them to the client on idle, the
    unit-tests must yield and process all tasks
    before they validate post-conditions.
    
    Change-Id: I78307db29a9ce647ffaed3539f953227c605968e
    Reviewed-on: https://gerrit.libreoffice.org/24313
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 3a0e67b..89b1ebb 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -71,6 +71,16 @@ public:
     void closeDoc();
     static void callback(int nType, const char* pPayload, void* pData);
     void callbackImpl(int nType, const char* pPayload);
+    void flushTimers()
+    {
+        // Need these to make sure idle tasks are also invoked.
+        // Yielding once is not enough since there are higher
+        // priority timers that take precedence over idle.
+        for (auto i = 0; i < 10; ++i)
+        {
+            Application::Reschedule(true);
+        }
+    }
 
     void testGetStyles();
     void testGetFonts();
@@ -315,7 +325,9 @@ void DesktopLOKTest::testSearchCalc()
         {"SearchItem.Backward", uno::makeAny(false)},
         {"SearchItem.Command", uno::makeAny(static_cast<sal_uInt16>(SvxSearchCmd::FIND_ALL))},
     }));
+
     comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues);
+    flushTimers();
 
     std::vector<OString> aSelections;
     sal_Int32 nIndex = 0;
@@ -349,8 +361,7 @@ void DesktopLOKTest::testSearchAllNotificationsCalc()
         {"SearchItem.Command", uno::makeAny(static_cast<sal_uInt16>(SvxSearchCmd::FIND_ALL))},
     }));
     comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues);
-    Application::Reschedule(true);
-    Scheduler::ProcessTaskScheduling(false);
+    flushTimers();
 
     // This was 1, make sure that we get no notifications about selection changes during search.
     CPPUNIT_ASSERT_EQUAL(0, m_nSelectionBeforeSearchResult);
@@ -569,6 +580,7 @@ void DesktopLOKTest::testCommandResult()
     // the condition var.
     m_aCommandResultCondition.reset();
     pDocument->pClass->postUnoCommand(pDocument, ".uno:Bold", 0, true);
+    flushTimers();
     m_aCommandResultCondition.wait(&aTimeValue);
 
     CPPUNIT_ASSERT(m_aCommandResult.isEmpty());
@@ -578,6 +590,7 @@ void DesktopLOKTest::testCommandResult()
 
     m_aCommandResultCondition.reset();
     pDocument->pClass->postUnoCommand(pDocument, ".uno:Bold", 0, true);
+    flushTimers();
     m_aCommandResultCondition.wait(&aTimeValue);
 
     boost::property_tree::ptree aTree;
@@ -600,6 +613,8 @@ void DesktopLOKTest::testWriterComments()
     TimeValue aTimeValue = {2 , 0}; // 2 seconds max
     m_aCommandResultCondition.reset();
     pDocument->pClass->postUnoCommand(pDocument, ".uno:InsertAnnotation", nullptr, true);
+    flushTimers();
+
     m_aCommandResultCondition.wait(&aTimeValue);
     CPPUNIT_ASSERT(!m_aCommandResult.isEmpty());
     xToolkit->reschedule();


More information about the Libreoffice-commits mailing list