summaryrefslogtreecommitdiff
path: root/sw/qa/api
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2020-03-20 10:48:44 +0100
committerStephan Bergmann <sbergman@redhat.com>2020-03-20 12:07:16 +0100
commitd833ab988bab6ca1a239c045eb236cafddda0e73 (patch)
treedd47d9e90ddaebd0b5cfb1c493881220d70e1a57 /sw/qa/api
parentf7efe5a7fe8ade48fe376eb817017b26892f95b3 (diff)
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@redhat.com>
Diffstat (limited to 'sw/qa/api')
-rw-r--r--sw/qa/api/SwXTextTable.cxx9
-rw-r--r--sw/qa/api/terminate.cxx76
2 files changed, 77 insertions, 8 deletions
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: */