summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2013-03-05 22:21:57 +0000
committerMichael Meeks <michael.meeks@suse.com>2013-03-12 15:35:35 +0000
commitddaf31f183fe3f2fbf76c1b87eb5a943dc6d833f (patch)
treeb01578b77ea9725ad409aac76dacb54a01dba3c2
parentliblibo: test documentLoad method (diff)
downloadcore-ddaf31f183fe3f2fbf76c1b87eb5a943dc6d833f.tar.gz
core-ddaf31f183fe3f2fbf76c1b87eb5a943dc6d833f.zip
liblibo: install test library by itself and install it.
Also fix debugging with threads, find fundamentalrc correctly, make it headless, finally loads a document then exits. Change-Id: I2017075bf3b3c7198bde53b9fe85585089e5ab6c
-rw-r--r--Repository.mk1
-rw-r--r--desktop/Library_libreoffice.mk1
-rw-r--r--desktop/Module_desktop.mk7
-rw-r--r--desktop/source/lib/init.cxx29
-rw-r--r--smoketest/CppunitTest_liblibreoffice.mk33
-rw-r--r--smoketest/Executable_libtest.mk47
-rw-r--r--smoketest/Module_smoketest.mk4
-rw-r--r--smoketest/libtest.cxx74
-rw-r--r--vcl/inc/vcl/svapp.hxx5
-rw-r--r--vcl/source/app/svapp.cxx2
-rw-r--r--vcl/unx/generic/plugadapt/salplug.cxx30
11 files changed, 117 insertions, 116 deletions
diff --git a/Repository.mk b/Repository.mk
index e3ea69b0d7fc..ffcf18c129d8 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -45,6 +45,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \
gsicheck \
helpex \
idxdict \
+ libtest \
lngconvex \
localize \
makedepend \
diff --git a/desktop/Library_libreoffice.mk b/desktop/Library_libreoffice.mk
index 96b18a1bee7e..dbe3e81313a4 100644
--- a/desktop/Library_libreoffice.mk
+++ b/desktop/Library_libreoffice.mk
@@ -17,6 +17,7 @@ $(eval $(call gb_Library_set_include,libreoffice,\
$(eval $(call gb_Library_add_libs,libreoffice,\
$(if $(filter $(OS),LINUX), \
-ldl \
+ -lpthread \
) \
))
diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk
index d97bff3f1b1c..a05cceba6c76 100644
--- a/desktop/Module_desktop.mk
+++ b/desktop/Module_desktop.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Module_add_targets,desktop,\
AllLangResTarget_dkt \
Library_deployment \
Library_deploymentmisc \
- Library_libreoffice \
Library_offacc \
Library_sofficeapp \
Library_spl \
@@ -43,6 +42,12 @@ $(eval $(call gb_Module_add_targets,desktop,\
Zip_brand_dev \
))
+ifeq ($(OS),LINUX)
+$(eval $(call gb_Module_add_targets,desktop,\
+ Library_libreoffice \
+))
+endif
+
ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
$(eval $(call gb_Module_add_targets,desktop,\
Executable_unopkg.bin \
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index de5788dd0420..06f5eac909d0 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -87,8 +87,20 @@ aBasicErrorFunc( const OUString &rErr, const OUString &rAction )
}
static void
-initialize_uno( const rtl::OUString &aUserProfileURL )
+initialize_uno( const rtl::OUString &aAppURL )
{
+ rtl::Bootstrap::setIniFilename( aAppURL + "/fundamentalrc" );
+
+ OUString aValue;
+ rtl::Bootstrap::set( "CONFIGURATION_LAYERS",
+ "xcsxcu:${BRAND_BASE_DIR}/share/registry "
+ "res:${BRAND_BASE_DIR}/share/registry "
+// "bundledext:${${BRAND_BASE_DIR}/program/unorc:BUNDLED_EXTENSIONS_USER}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini " );
+// "sharedext:${${BRAND_BASE_DIR}/program/unorc:SHARED_EXTENSIONS_USER}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini "
+// "userext:${${BRAND_BASE_DIR}/program/unorc:UNO_USER_PACKAGES_CACHE}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini "
+// "user:${$BRAND_BASE_DIR/program/bootstraprc:UserInstallation}/user/registrymodifications.xcu"
+ );
+
xContext = cppu::defaultBootstrap_InitialComponentContext();
fprintf( stderr, "Uno initialized %d\n", xContext.is() );
xFactory = xContext->getServiceManager();
@@ -96,8 +108,9 @@ initialize_uno( const rtl::OUString &aUserProfileURL )
comphelper::setProcessServiceFactory(xSFactory);
// set UserInstallation to user profile dir in test/user-template
- rtl::Bootstrap aDefaultVars;
- aDefaultVars.set(rtl::OUString("UserInstallation"), aUserProfileURL );
+// rtl::Bootstrap aDefaultVars;
+// aDefaultVars.set(rtl::OUString("UserInstallation"), aAppURL + "../registry" );
+ // configmgr setup ?
}
bool
@@ -117,15 +130,17 @@ LibLibreOffice_Impl::initialize( const char *app_path )
return false;
try {
- initialize_uno( aAppURL + "../registry" );
+ initialize_uno( aAppURL );
force_c_locale();
+
+ // Force headless
+ rtl::Bootstrap::set( "SAL_USE_VCLPLUGIN", "svp" );
InitVCL();
- if (Application::IsHeadlessModeRequested())
- Application::EnableHeadlessMode(true);
+ Application::EnableHeadlessMode(true);
ErrorHandler::RegisterDisplay( aBasicErrorFunc );
- fprintf (stderr, "do nothing yet");
+ fprintf( stderr, "initialized\n" );
bInitialized = true;
} catch (css::uno::Exception & e) {
fprintf( stderr, "bootstrapping exception '%s'\n",
diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk
deleted file mode 100644
index e784a3ab2b6d..000000000000
--- a/smoketest/CppunitTest_liblibreoffice.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# 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,liblibreoffice))
-
-$(eval $(call gb_CppunitTest_abort_on_assertion,liblibreoffice))
-
-$(eval $(call gb_CppunitTest_add_exception_objects,liblibreoffice,\
- smoketest/libtest \
-))
-
-$(eval $(call gb_CppunitTest_use_libraries,liblibreoffice,\
- libreoffice \
-))
-
-ifeq ($(OS),MACOSX)
-liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS
-else
-liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/program
-endif
-
-$(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\
- -env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \
- -env:arg-testarg.smoketest.doc=$(OUTDIR)/bin/smoketestdoc.sxw \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/smoketest/Executable_libtest.mk b/smoketest/Executable_libtest.mk
new file mode 100644
index 000000000000..59ba80be4910
--- /dev/null
+++ b/smoketest/Executable_libtest.mk
@@ -0,0 +1,47 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# 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_Executable_Executable,libtest))
+
+$(eval $(call gb_Executable_set_include,libtest,\
+ $$(INCLUDE) \
+ -I$(SRCDIR)/desktop/inc \
+))
+
+$(eval $(call gb_Executable_use_libraries,libtest,\
+ libreoffice \
+ $(gb_UWINAPI) \
+))
+
+$(eval $(call gb_Executable_add_libs,libtest,\
+ -pthread \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,libtest,\
+ smoketest/libtest \
+))
+
+ifeq ($(OS),MACOSX)
+liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS
+else
+liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/program
+endif
+liblibreoffice_OWN_LD_PATH_DIR := $(liblibreoffice_SOFFICE_INST)/libolib
+liblibreoffice_OWN_LD_SO := $(liblibreoffice_OWN_LD_PATH_DIR)/$(call gb_Library_get_linktargetname,libreoffice)
+
+$(liblibreoffice_OWN_LD_SO) : $(call gb_Library_get_target,libreoffice)
+ mkdir -p $(liblibreoffice_OWN_LD_PATH_DIR)/Library
+ cp -a $(call gb_Library_get_target,libreoffice) $(liblibreoffice_OWN_LD_SO)
+
+run_libtest: $(liblibreoffice_OWN_LD_SO)
+ $(gb_Helper_LIBRARY_PATH_VAR)=$${$(gb_Helper_LIBRARY_PATH_VAR):+$$$(gb_Helper_LIBRARY_PATH_VAR):}":$(liblibreoffice_OWN_LD_PATH_DIR)/Library" \
+ $(call gb_LinkTarget_get_target,Executable/libtest) \
+ $(liblibreoffice_SOFFICE_INST) $(OUTDIR)/bin/smoketestdoc.sxw \
+
+# vim: set noet sw=4 ts=4:
diff --git a/smoketest/Module_smoketest.mk b/smoketest/Module_smoketest.mk
index 9a2aa72f9fc3..31efcce58af5 100644
--- a/smoketest/Module_smoketest.mk
+++ b/smoketest/Module_smoketest.mk
@@ -42,9 +42,11 @@ $(eval $(call gb_Module_add_targets,smoketest,\
))
endif
+ifeq ($(OS),LINUX)
$(eval $(call gb_Module_add_check_targets,smoketest,\
- CppunitTest_liblibreoffice \
+ Executable_libtest \
))
+endif
$(eval $(call gb_Module_add_subsequentcheck_targets,smoketest,\
CppunitTest_smoketest \
diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx
index 4e452a704a43..f3d207fef39b 100644
--- a/smoketest/libtest.cxx
+++ b/smoketest/libtest.cxx
@@ -7,60 +7,32 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-// yuck / FIXME ...
-#include "../desktop/inc/liblibreoffice.hxx"
-
+#include <stdio.h>
#include <assert.h>
+#include <liblibreoffice.hxx>
-#include <sal/types.h>
-#include <rtl/ustring.hxx>
-#include <rtl/bootstrap.hxx>
-#include "cppunit/TestAssert.h"
-#include "cppunit/TestFixture.h"
-#include "cppunit/extensions/HelperMacros.h"
-#include "cppunit/plugin/TestPlugIn.h"
-
-class Test: public CppUnit::TestFixture {
-public:
- virtual void setUp();
- virtual void tearDown();
-
-private:
- CPPUNIT_TEST_SUITE(Test);
- CPPUNIT_TEST(test);
- CPPUNIT_TEST_SUITE_END();
-
- void test();
-};
-
-void Test::setUp()
-{
-}
-void Test::tearDown()
-{
-}
-
-void Test::test()
+int main (int argc, char **argv)
{
- rtl::OUString aArgSoffice;
- rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice );
- OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 );
- fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() );
- LibLibreOffice *pOffice = lo_init( aInstall.getStr() );
- CPPUNIT_ASSERT( pOffice != NULL );
-
- bool bInited = pOffice->initialize( aInstall.getStr() );
- CPPUNIT_ASSERT( bInited );
-
- rtl::OUString aArgDoc;
- rtl::Bootstrap::get( rtl::OUString( "arg-testarg.smoketest.doc" ), aArgDoc );
- OString aDoc = OUStringToOString ( aArgDoc, RTL_TEXTENCODING_UTF8 );
- fprintf ( stderr, "liblibreoffice doc arg: '%s'\n", aDoc.getStr() );
- pOffice->documentLoad ( aDoc.getStr() );
+ if( argc < 2 )
+ return -1;
+ LibLibreOffice *pOffice = lo_init( argv[1] );
+ if( !pOffice )
+ return -1;
+ // This separate init is lame I think.
+ if( !pOffice->initialize( argv[1] ) )
+ {
+ fprintf( stderr, "failed to initialize\n" );
+ return -1;
+ }
+ fprintf( stderr, "start to load document '%s'\n", argv[2] );
+ LODocument *pDocument = pOffice->documentLoad( argv[2] );
+ if( !pDocument )
+ {
+ fprintf( stderr, "failed to load document '%s'\n", argv[2] );
+ return -1;
+ }
+ fprintf( stderr, "all tests passed." );
+ return 0;
}
-CPPUNIT_TEST_SUITE_REGISTRATION(Test);
-
-CPPUNIT_PLUGIN_IMPLEMENT();
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/vcl/svapp.hxx b/vcl/inc/vcl/svapp.hxx
index 9b4510e5c5dd..b2c52ec41c1c 100644
--- a/vcl/inc/vcl/svapp.hxx
+++ b/vcl/inc/vcl/svapp.hxx
@@ -330,9 +330,8 @@ public:
static const Link& GetFilterHdl();
static void EnableHeadlessMode( bool dialogsAreFatal );
- static sal_Bool IsHeadlessModeEnabled();
-
- static bool IsHeadlessModeRequested();
+ static sal_Bool IsHeadlessModeEnabled();
+ static bool IsHeadlessModeRequested();
///< check command line arguments for --headless
static void ShowNativeErrorBox(const String& sTitle ,
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index cba609dbb688..14b33eab496a 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1760,7 +1760,7 @@ bool Application::IsHeadlessModeRequested()
for (sal_uInt32 i = 0; i < n; ++i) {
rtl::OUString arg;
rtl_getAppCommandArg(i, &arg.pData);
- if ( arg == "--headless" ) {
+ if ( arg == "--headless" || arg == "-headless" ) {
return true;
}
}
diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx
index 3d87977d3a58..2dbd37f3c93d 100644
--- a/vcl/unx/generic/plugadapt/salplug.cxx
+++ b/vcl/unx/generic/plugadapt/salplug.cxx
@@ -21,6 +21,7 @@
#include "osl/process.h"
#include "rtl/ustrbuf.hxx"
+#include "rtl/bootstrap.hxx"
#include "salinst.hxx"
#include "generic/gensys.h"
@@ -198,31 +199,22 @@ static SalInstance* autodetect_plugin()
return pInst;
}
-static SalInstance* check_headless_plugin()
-{
- int nParams = osl_getCommandArgCount();
- OUString aParam;
- for( int i = 0; i < nParams; i++ )
- {
- osl_getCommandArg( i, &aParam.pData );
- if( aParam == "-headless" || aParam == "--headless" )
- {
- return tryInstance("svp");
- }
- }
- return NULL;
-}
-
SalInstance *CreateSalInstance()
{
- SalInstance* pInst = NULL;
+ SalInstance *pInst = NULL;
+ OUString aUsePlugin;
static const char* pUsePlugin = getenv( "SAL_USE_VCLPLUGIN" );
+ if( pUsePlugin )
+ aUsePlugin = OUString::createFromAscii( pUsePlugin );
+ else
+ rtl::Bootstrap::get( "SAL_USE_VCLPLUGIN", aUsePlugin );
- pInst = check_headless_plugin();
+ if( Application::IsHeadlessModeRequested() )
+ aUsePlugin = "svp";
- if( !pInst && pUsePlugin && *pUsePlugin )
- pInst = tryInstance( OUString::createFromAscii( pUsePlugin ), true );
+ if( !aUsePlugin.isEmpty() )
+ pInst = tryInstance( aUsePlugin );
if( ! pInst )
pInst = autodetect_plugin();