Kaydet (Commit) ddaf31f1 authored tarafından Michael Meeks's avatar Michael Meeks

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
üst 08b6643e
......@@ -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",
......
......@@ -7,16 +7,24 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
$(eval $(call gb_CppunitTest_CppunitTest,liblibreoffice))
$(eval $(call gb_Executable_Executable,libtest))
$(eval $(call gb_CppunitTest_abort_on_assertion,liblibreoffice))
$(eval $(call gb_CppunitTest_add_exception_objects,liblibreoffice,\
smoketest/libtest \
$(eval $(call gb_Executable_set_include,libtest,\
$$(INCLUDE) \
-I$(SRCDIR)/desktop/inc \
))
$(eval $(call gb_CppunitTest_use_libraries,liblibreoffice,\
$(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)
......@@ -24,10 +32,16 @@ liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/Mac
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)
$(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\
-env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \
-env:arg-testarg.smoketest.doc=$(OUTDIR)/bin/smoketestdoc.sxw \
))
$(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()
{
}
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: */
......@@ -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();
......
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