[Libreoffice-commits] core.git: sw/CppunitTest_sw_apiterminate.mk sw/Module_sw.mk sw/qa

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Fri Mar 20 11:07:49 UTC 2020


 sw/CppunitTest_sw_apiterminate.mk |   44 ++++++++++++++++++++++
 sw/Module_sw.mk                   |    1 
 sw/qa/api/SwXTextTable.cxx        |    9 ----
 sw/qa/api/terminate.cxx           |   76 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 122 insertions(+), 8 deletions(-)

New commits:
commit d833ab988bab6ca1a239c045eb236cafddda0e73
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Fri Mar 20 10:48:44 2020 +0100
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Fri Mar 20 12:07:16 2020 +0100

    Extract testDisposedByDesktopTerminate from CppunitTest_sw_apitests
    
    It is not guaranteed that SwXTextTable runs last during CppunitTest_sw_apitests,
    and e.g. building with --enable-lto on Linux caused SwXTextField to be run after
    SwXTextTable.  But then testDisposedByDesktopTerminate had already shut down all
    the relevant global state, so the SwXTextField tests would fail.
    
    TerminateTest is a faithful copy of the original SwXTextTable
    testDisposedByDesktopTerminate behavior, but I do not know how much of that (if
    anything at all) is actually test-worthy.  (For example, parts of
    TerminateTest::init may not be relevant, or the original SwXTextTable
    testDisposedByDesktopTerminate may even only have been there to clean up after
    other tests and not to actually test anything by itself, cf.
    20ed81fd42cf8079c11c2b18973b9504a679e49c "Make individual tests clean up after
    themselves".)
    
    Change-Id: Ib95b7fa6888f55a27236a779c453a6d04122a527
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90774
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/sw/CppunitTest_sw_apiterminate.mk b/sw/CppunitTest_sw_apiterminate.mk
new file mode 100644
index 000000000000..c6228cf72d88
--- /dev/null
+++ b/sw/CppunitTest_sw_apiterminate.mk
@@ -0,0 +1,44 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,sw_apiterminate))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_apiterminate, \
+    sw/qa/api/terminate \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sw_apiterminate, \
+    offapi \
+    udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_apiterminate))
+
+$(eval $(call gb_CppunitTest_use_configuration,sw_apiterminate))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_apiterminate, \
+    comphelper \
+    cppu \
+    sal \
+    subsequenttest \
+    test \
+    unotest \
+))
+
+$(eval $(call gb_CppunitTest_use_rdb,sw_apiterminate,services))
+
+$(eval $(call gb_CppunitTest_use_vcl,sw_apiterminate))
+
+$(eval $(call gb_CppunitTest_use_uiconfigs,sw_apiterminate, \
+    svx \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_apiterminate))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index 139dee1be4a1..88c14c2fa51b 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -102,6 +102,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
     CppunitTest_sw_mailmerge \
     CppunitTest_sw_globalfilter \
     CppunitTest_sw_accessible_relation_set \
+    CppunitTest_sw_apiterminate \
     CppunitTest_sw_apitests \
     CppunitTest_sw_unowriter \
     CppunitTest_sw_core_text \
diff --git a/sw/qa/api/SwXTextTable.cxx b/sw/qa/api/SwXTextTable.cxx
index ed1bc0670251..37c8600653a4 100644
--- a/sw/qa/api/SwXTextTable.cxx
+++ b/sw/qa/api/SwXTextTable.cxx
@@ -44,7 +44,6 @@ struct SwXTextTable final : public test::BootstrapFixture,
     CPPUNIT_TEST_SUITE(SwXTextTable);
     CPPUNIT_TEST(testAddEventListener);
     CPPUNIT_TEST(testRemoveEventListener);
-    CPPUNIT_TEST(testDisposedByDesktopTerminate);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -62,13 +61,7 @@ void SwXTextTable::tearDown()
 {
     if (component_.is())
     {
-        try
-        {
-            component_->dispose();
-        }
-        catch (css::lang::DisposedException&) // thrown by testDisposedByDesktopTerminate
-        {
-        }
+        component_->dispose();
     }
 }
 
diff --git a/sw/qa/api/terminate.cxx b/sw/qa/api/terminate.cxx
new file mode 100644
index 000000000000..5f077d0aa1f8
--- /dev/null
+++ b/sw/qa/api/terminate.cxx
@@ -0,0 +1,76 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <sal/config.h>
+
+#include <cppunit/TestAssert.h>
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/plugin/TestPlugIn.h>
+
+#include <com/sun/star/frame/Desktop.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/text/XTextCursor.hpp>
+#include <com/sun/star/text/XTextDocument.hpp>
+#include <com/sun/star/text/XTextTable.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <comphelper/processfactory.hxx>
+#include <test/bootstrapfixture.hxx>
+#include <test/lang/xcomponent.hxx>
+#include <unotest/macros_test.hxx>
+
+class TerminateTest final : public test::BootstrapFixture,
+                            public unotest::MacrosTest,
+                            public apitest::XComponent
+{
+public:
+    void setUp() override;
+
+    css::uno::Reference<css::uno::XInterface> init() override;
+
+    void triggerDesktopTerminate() override;
+
+    CPPUNIT_TEST_SUITE(TerminateTest);
+    CPPUNIT_TEST(testDisposedByDesktopTerminate);
+    CPPUNIT_TEST_SUITE_END();
+};
+
+void TerminateTest::setUp()
+{
+    test::BootstrapFixture::setUp();
+    mxDesktop.set(
+        css::frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory())));
+}
+
+css::uno::Reference<css::uno::XInterface> TerminateTest::init()
+{
+    auto const component
+        = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument");
+    CPPUNIT_ASSERT(component.is());
+    css::uno::Reference<css::text::XTextDocument> xTextDocument(component,
+                                                                css::uno::UNO_QUERY_THROW);
+    css::uno::Reference<css::lang::XMultiServiceFactory> xMSF(component, css::uno::UNO_QUERY_THROW);
+    css::uno::Reference<css::text::XText> xText = xTextDocument->getText();
+    css::uno::Reference<css::text::XTextCursor> xCursor = xText->createTextCursor();
+    css::uno::Reference<css::text::XTextTable> xTable(
+        xMSF->createInstance("com.sun.star.text.TextTable"), css::uno::UNO_QUERY_THROW);
+    xTable->initialize(4, 3);
+    xText->insertTextContent(xCursor, xTable, false);
+    CPPUNIT_ASSERT(xCursor.is());
+    return css::uno::Reference<css::uno::XInterface>(xTable, css::uno::UNO_QUERY_THROW);
+}
+
+void TerminateTest::triggerDesktopTerminate() { mxDesktop->terminate(); }
+
+CPPUNIT_TEST_SUITE_REGISTRATION(TerminateTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */


More information about the Libreoffice-commits mailing list