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
This commit is contained in:
@@ -45,6 +45,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \
|
||||
gsicheck \
|
||||
helpex \
|
||||
idxdict \
|
||||
libtest \
|
||||
lngconvex \
|
||||
localize \
|
||||
makedepend \
|
||||
|
@@ -17,6 +17,7 @@ $(eval $(call gb_Library_set_include,libreoffice,\
|
||||
$(eval $(call gb_Library_add_libs,libreoffice,\
|
||||
$(if $(filter $(OS),LINUX), \
|
||||
-ldl \
|
||||
-lpthread \
|
||||
) \
|
||||
))
|
||||
|
||||
|
@@ -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 \
|
||||
|
@@ -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",
|
||||
|
@@ -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:
|
47
smoketest/Executable_libtest.mk
Normal file
47
smoketest/Executable_libtest.mk
Normal file
@@ -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:
|
@@ -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 \
|
||||
|
@@ -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()
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
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;
|
||||
}
|
||||
void Test::tearDown()
|
||||
{
|
||||
}
|
||||
|
||||
void Test::test()
|
||||
{
|
||||
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() );
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
|
||||
|
||||
CPPUNIT_PLUGIN_IMPLEMENT();
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
@@ -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 ,
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user