Kaydet (Commit) 2ec76e5d authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Make sure swui's pSwResMgr is initialized in CppunitTest_sw_dialogs_test

...to avoid -fsanitize=null at

> sw/source/ui/misc/glossary.cxx:840:17: runtime error: reference binding to null pointer of type 'ResMgr'
>     #0 0x7f980fc6b73f in SwGlTreeListBox::SwGlTreeListBox(vcl::Window*, long) sw/source/ui/misc/glossary.cxx:840:17
>     #1 0x7f980fc80d56 in VclPtr<SwGlTreeListBox> VclPtr<SwGlTreeListBox>::Create<VclPtr<vcl::Window>&, long>(VclPtr<vcl::Window>&, long&&) include/vcl/vclptr.hxx:138:46
>     #2 0x7f980fc6c5d2 in makeSwGlTreeListBox sw/source/ui/misc/glossary.cxx:851:1
>     #3 0x7f985da4c3c4 in VclBuilder::makeObject(vcl::Window*, rtl::OString const&, rtl::OString const&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&) vcl/source/window/builder.cxx:1793:17

Change-Id: Ieb0d0f6b561e93acbee8208e1ba445879e99adc1
üst fd222a8b
......@@ -20,6 +20,7 @@ $(eval $(call gb_CppunitTest_use_sdk_api,sw_dialogs_test))
$(eval $(call gb_CppunitTest_set_include,sw_dialogs_test,\
-I$(SRCDIR)/sw/source/ui/inc \
-I$(SRCDIR)/sw/inc \
-I$(SRCDIR)/sw/source/uibase/inc \
$$(INCLUDE) \
))
......
......@@ -9,17 +9,25 @@
#include <sal/config.h>
#include <test/screenshot_test.hxx>
#include <rtl/bootstrap.hxx>
#include <rtl/strbuf.hxx>
#include <osl/file.hxx>
#include <sfx2/app.hxx>
#include <vcl/abstdlg.hxx>
#include <swabstdlg.hxx>
using namespace ::com::sun::star;
extern "C" { using Fn = SwAbstractDialogFactory * (*)(); }
// sw/source/ui/dialog/swuiexp.cxx
/// Test opening a dialog in sw
class SwDialogsTest : public ScreenshotTest
{
private:
osl::Module libSwui_;
/// helper method to populate KnownDialogs, called in setUp(). Needs to be
/// written and has to add entries to KnownDialogs
virtual void registerKnownDialogsByID(mapType& rKnownDialogs) override;
......@@ -32,6 +40,8 @@ public:
SwDialogsTest();
virtual ~SwDialogsTest() override;
void setUp() override;
// try to open a dialog
void openAnyDialog();
......@@ -48,6 +58,22 @@ SwDialogsTest::~SwDialogsTest()
{
}
void SwDialogsTest::setUp()
{
ScreenshotTest::setUp();
// Make sure the swui library's global pSwResMgr is initialized
// (alternatively to dynamically loading the library, SwCreateDialogFactory
// could be declared in an include file and this CppunitTest link against
// the swui library):
OUString url("${LO_LIB_DIR}/" SVLIBRARY("swui"));
rtl::Bootstrap::expandMacros(url); //TODO: detect failure
CPPUNIT_ASSERT(libSwui_.load(url, SAL_LOADMODULE_GLOBAL));
auto fn = reinterpret_cast<Fn>(
libSwui_.getFunctionSymbol("SwCreateDialogFactory"));
CPPUNIT_ASSERT(fn != nullptr);
(*fn)();
}
void SwDialogsTest::registerKnownDialogsByID(mapType& /*rKnownDialogs*/)
{
// fill map of known dialogs
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment