diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2020-03-20 10:48:44 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2020-03-20 12:07:16 +0100 |
commit | d833ab988bab6ca1a239c045eb236cafddda0e73 (patch) | |
tree | dd47d9e90ddaebd0b5cfb1c493881220d70e1a57 /sw/qa/api | |
parent | f7efe5a7fe8ade48fe376eb817017b26892f95b3 (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.cxx | 9 | ||||
-rw-r--r-- | sw/qa/api/terminate.cxx | 76 |
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: */ |