diff options
author | Michael Meeks <michael.meeks@suse.com> | 2013-03-05 22:21:57 +0000 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2013-03-12 15:35:35 +0000 |
commit | ddaf31f183fe3f2fbf76c1b87eb5a943dc6d833f (patch) | |
tree | b01578b77ea9725ad409aac76dacb54a01dba3c2 | |
parent | liblibo: test documentLoad method (diff) | |
download | core-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.mk | 1 | ||||
-rw-r--r-- | desktop/Library_libreoffice.mk | 1 | ||||
-rw-r--r-- | desktop/Module_desktop.mk | 7 | ||||
-rw-r--r-- | desktop/source/lib/init.cxx | 29 | ||||
-rw-r--r-- | smoketest/CppunitTest_liblibreoffice.mk | 33 | ||||
-rw-r--r-- | smoketest/Executable_libtest.mk | 47 | ||||
-rw-r--r-- | smoketest/Module_smoketest.mk | 4 | ||||
-rw-r--r-- | smoketest/libtest.cxx | 74 | ||||
-rw-r--r-- | vcl/inc/vcl/svapp.hxx | 5 | ||||
-rw-r--r-- | vcl/source/app/svapp.cxx | 2 | ||||
-rw-r--r-- | vcl/unx/generic/plugadapt/salplug.cxx | 30 |
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(); |