Re: Struggling with unit test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 14/05/2019 02:32, Regina Henschel wrote:
I need help again. I try to write a unit test https://gerrit.libreoffice.org/#/c/72229/
It works with Windows10. But Jenkins fails on Mac with message
https://ci.libreoffice.org/job/gerrit_mac/32803/

Undefined symbols for architecture x86_64:
  "SdrObjCustomShape::DragMoveCustomShapeHdl(Point const&, unsigned short, bool)", referenced from:       (anonymous namespace)::testTdf115813_OOXML_XY_handle::TestBody() in customshapes.o
   "SdrObjCustomShape::GetInteractionHandles() const", referenced from:
      (anonymous namespace)::testTdf115813_OOXML_XY_handle::TestBody() in customshapes.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I have now build it in a VM with Ubuntu 16.0 LTS. There too I get an error. Here the message is
cd /home/vmregina/lo/core/svx && make -j 4 -rs check
[build DEP] LNK:CppunitTest/libtest_svx_unit.so
[build LNK] CppunitTest/libtest_svx_unit.so
/usr/bin/ld.gold: error: /home/vmregina/lo/core/workdir/CxxObject/svx/qa/unit/customshapes.o: requires dynamic R_X86_64_PC32 reloc against '_ZNK17SdrObjCustomShape21GetInteractionHandlesEv' which may overflow at runtime; recompile with -fPIC /home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:361: error: undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const' /home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:365: error: undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const' /home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:369: error: undefined reference to 'SdrObjCustomShape::DragMoveCustomShapeHdl(Point const&, unsigned short, bool)' /home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:371: error: undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const'
collect2: error: ld returned 1 exit status
/home/vmregina/lo/core/solenv/gbuild/LinkTarget.mk:635: recipe for target '/home/vmregina/lo/core/workdir/LinkTarget/CppunitTest/libtest_svx_unit.so' failed make[1]: *** [/home/vmregina/lo/core/workdir/LinkTarget/CppunitTest/libtest_svx_unit.so] Error 1
Makefile:120: recipe for target 'svx.check' failed
make: *** [svx.check] Error 2

What is needed for these systems? Does it make a difference whether it is a debug build or not? My current Windows setting is a non-debug build, in the Linux VM it is a debug-build.

In include/svx/svdoashp.hxx, the SdrObjCustomShape member functions GetInteractionHandles and DragMoveCustomShapeHdl are marked as SVX_DLLPRIVATE (i.e., SAL_DLLPRIVATE). On Windows, that happens to have no effect, but on other platforms it prevents those symbols from being exported from the svxcore library, so you can't actually access those functions from test code.

The technically preferred solution would be if you can somehow avoid calling those functions directly from the test code. Less appealing hacks to get it working are either to not mark those functions as SVX_DLLPRIVATE in include/svx/svdoashp.hxx, or to make svx/CppunitTest_svx_unit.mk use gb_CppunitTest_use_library_objects to directly include (copies of) the svxcore objects, instead of using gb_CppunitTest_use_libraries to link against the svxcore library.
_______________________________________________
LibreOffice mailing list
LibreOffice@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/libreoffice




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux