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.
20ed81fd42
"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>
This commit is contained in:
parent
f7efe5a7fe
commit
d833ab988b
4 changed files with 122 additions and 8 deletions
44
sw/CppunitTest_sw_apiterminate.mk
Normal file
44
sw/CppunitTest_sw_apiterminate.mk
Normal file
|
@ -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:
|
|
@ -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 \
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
76
sw/qa/api/terminate.cxx
Normal file
76
sw/qa/api/terminate.cxx
Normal file
|
@ -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: */
|
Loading…
Reference in a new issue