diff options
author | Tor Lillqvist <tml@iki.fi> | 2011-08-01 18:18:33 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@iki.fi> | 2011-08-01 18:18:33 +0300 |
commit | df1d4b7c85aebd69ba7192cb9e8b2cc1cf2f32a4 (patch) | |
tree | fada0adafa19bd5c15f75adf5b6378a0c5c81f19 | |
parent | 464365365c2fcf7ab8868d9dc412122e068b6fd2 (diff) |
Add statically linked cpphelper unit test for iOS
-rw-r--r-- | cppuhelper/prj/build.lst | 1 | ||||
-rw-r--r-- | cppuhelper/qa/ifcontainer/makefile.mk | 9 | ||||
-rw-r--r-- | cppuhelper/qa/propertysetmixin/makefile.mk | 9 | ||||
-rw-r--r-- | cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx | 4 | ||||
-rw-r--r-- | cppuhelper/qa/static/cppuhelper_cppunittester_all.cxx | 138 | ||||
-rw-r--r-- | cppuhelper/qa/static/makefile.mk | 59 | ||||
-rw-r--r-- | cppuhelper/qa/unourl/makefile.mk | 5 | ||||
-rw-r--r-- | cppuhelper/qa/weak/makefile.mk | 5 |
8 files changed, 209 insertions, 21 deletions
diff --git a/cppuhelper/prj/build.lst b/cppuhelper/prj/build.lst index 570a34560..53c704e21 100644 --- a/cppuhelper/prj/build.lst +++ b/cppuhelper/prj/build.lst @@ -6,3 +6,4 @@ ch cppuhelper\unotypes nmake - all ch_unotypes NULL ch cppuhelper\qa\propertysetmixin nmake - all ch_qa_propertysetmixin ch_source NULL ch cppuhelper\qa\ifcontainer nmake - all ch_qa_ifcontainer ch_source NULL ch cppuhelper\qa\unourl nmake - all ch_qa_unourl ch_source NULL +ch cppuhelper\qa\static nmake - all ch_qa_static ch_qa_propertysetmixin ch_qa_ifcontainer ch_qa_unourl NULL diff --git a/cppuhelper/qa/ifcontainer/makefile.mk b/cppuhelper/qa/ifcontainer/makefile.mk index 5284f4b08..f20fc5604 100644 --- a/cppuhelper/qa/ifcontainer/makefile.mk +++ b/cppuhelper/qa/ifcontainer/makefile.mk @@ -35,13 +35,12 @@ ENABLE_EXCEPTIONS=TRUE .INCLUDE : settings.mk -.IF "$(CROSS_COMPILING)"=="YES" -all: - @echo Nothing done when cross-compiling -.ENDIF - CFLAGSCXX += $(CPPUNIT_CFLAGS) +.IF "$(OS)" == "IOS" +CFLAGSCXX += -DCPPUNIT_PLUGIN_EXPORTED_NAME=cppunitTest_$(TARGET) +.ENDIF + # BEGIN ---------------------------------------------------------------- # auto generated Target:joblist by codegen.pl SHL1OBJS= \ diff --git a/cppuhelper/qa/propertysetmixin/makefile.mk b/cppuhelper/qa/propertysetmixin/makefile.mk index 384e2b047..6f43fc740 100644 --- a/cppuhelper/qa/propertysetmixin/makefile.mk +++ b/cppuhelper/qa/propertysetmixin/makefile.mk @@ -25,7 +25,7 @@ # #************************************************************************* -.IF "$(OOO_SUBSEQUENT_TESTS)" == "" +.IF "$(OOO_SUBSEQUENT_TESTS)" == "" && "$(OS)" != "IOS" nothing .PHONY: .ELSE @@ -41,11 +41,6 @@ my_components = $(TARGET).cpp $(TARGET).java .INCLUDE: settings.mk -.IF "$(CROSS_COMPILING)"=="YES" -all: - @echo Nothing done when cross-compiling -.ENDIF - .IF "$(OS)" == "WNT" my_file = file:/// .ELSE @@ -99,7 +94,9 @@ $(MISC)/$(TARGET)/javamaker.flag: $(MISC)/$(TARGET)/types.rdb $(JAVAMAKER) -O$(CLASSDIR) -BUCR -nD -Gc -X$(SOLARBINDIR)/udkapi.rdb $< $(TOUCH) $@ +.IF "$(SOLAR_JAVA)"!="" $(JAVATARGET): $(MISC)/$(TARGET)/javamaker.flag +.ENDIF $(MISC)/$(TARGET)/services.rdb .ERRREMOVE: $(SOLARENV)/bin/packcomponents.xslt \ $(MISC)/$(TARGET)/services.input \ diff --git a/cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx b/cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx index 403b3f1f4..b88efab8e 100644 --- a/cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx +++ b/cppuhelper/qa/propertysetmixin/test_propertysetmixin.cxx @@ -29,6 +29,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_cppuhelper.hxx" +#ifdef IOS +#define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTest_cppuhelper_propertysetmixin +#endif + #include "sal/config.h" #include "test/cppuhelper/propertysetmixin/CppSupplier.hpp" diff --git a/cppuhelper/qa/static/cppuhelper_cppunittester_all.cxx b/cppuhelper/qa/static/cppuhelper_cppunittester_all.cxx new file mode 100644 index 000000000..90d7f8b54 --- /dev/null +++ b/cppuhelper/qa/static/cppuhelper_cppunittester_all.cxx @@ -0,0 +1,138 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +************************************************************************/ + +#include "sal/config.h" + +#include <cstdlib> +#include <iostream> +#include <limits> +#include <string> +#include "protectorfactory.hxx" +#include "osl/module.h" +#include "osl/module.hxx" +#include "osl/thread.h" +#include "rtl/process.h" +#include "rtl/string.h" +#include "rtl/string.hxx" +#include "rtl/textcvt.h" +#include "rtl/ustring.hxx" +#include "sal/main.h" +#include "sal/types.h" + +#include "cppunit/CompilerOutputter.h" +#include "cppunit/TestResult.h" +#include "cppunit/TestResultCollector.h" +#include "cppunit/TestRunner.h" +#include "cppunit/plugin/TestPlugIn.h" +#include "cppunit/plugin/PlugInParameters.h" +#include "cppunit/extensions/TestFactoryRegistry.h" +#include "cppunit/portability/Stream.h" + +#include "boost/noncopyable.hpp" + +namespace { + +void usageFailure() { + std::cerr + << ("Usage: cppunittester (--protector <shared-library-path>" + " <function-symbol>)* <shared-library-path>") + << std::endl; + std::exit(EXIT_FAILURE); +} + +rtl::OUString getArgument(sal_Int32 index) { + rtl::OUString arg; + rtl_getAppCommandArg(index, &arg.pData); + return arg; +} + +std::string convertLazy(rtl::OUString const & s16) { + rtl::OString s8(rtl::OUStringToOString(s16, osl_getThreadTextEncoding())); + return std::string( + s8.getStr(), + ((static_cast< sal_uInt32 >(s8.getLength()) + > (std::numeric_limits< std::string::size_type >::max)()) + ? (std::numeric_limits< std::string::size_type >::max)() + : static_cast< std::string::size_type >(s8.getLength()))); +} + +//Allow the whole uniting testing framework to be run inside a "Protector" +//which knows about uno exceptions, so it can print the content of the +//exception before falling over and dying +class CPPUNIT_API ProtectedFixtureFunctor : public CppUnit::Functor, private boost::noncopyable +{ +private: + const std::string &args; + CppUnit::TestResult &result; +public: + ProtectedFixtureFunctor(const std::string &args_, CppUnit::TestResult &result_) + : args(args_) + , result(result_) + { + } + bool run() const + { + CppUnit::TestRunner runner; + runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); + CppUnit::TestResultCollector collector; + result.addListener(&collector); + runner.run(result); + CppUnit::CompilerOutputter(&collector, CppUnit::stdCErr()).write(); + return collector.wasSuccessful(); + } + virtual bool operator()() const + { + return run(); + } +}; +} + +extern "C" CppUnitTestPlugIn + *cppunitTest_cppuhelper_propertysetmixin(void); + + +SAL_IMPLEMENT_MAIN() { + TestPlugInSignature plugs[] = { + cppunitTest_cppuhelper_propertysetmixin, + NULL + }; + CppUnit::TestResult result; + std::string args; + bool ok = false; + for (TestPlugInSignature *plug = plugs; *plug != NULL; plug++) { + CppUnitTestPlugIn *iface; + iface = (*plug)(); + iface->initialize(&CppUnit::TestFactoryRegistry::getRegistry(), CppUnit::PlugInParameters()); + } + ProtectedFixtureFunctor tests(args, result); + ok = tests.run(); + + return ok ? EXIT_SUCCESS : EXIT_FAILURE; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppuhelper/qa/static/makefile.mk b/cppuhelper/qa/static/makefile.mk new file mode 100644 index 000000000..b9c5e2d9a --- /dev/null +++ b/cppuhelper/qa/static/makefile.mk @@ -0,0 +1,59 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#***********************************************************************/ + +PRJ = ../.. +PRJNAME = cppuhelper +TARGET = cppuhelper_cppunittester_all + +ENABLE_EXCEPTIONS = TRUE +LIBTARGET = NO + +.INCLUDE: settings.mk + +CFLAGSCXX += $(CPPUNIT_CFLAGS) + +.IF "$(OS)" != "IOS" + +ALL : + @echo This is only for iOS + +.ENDIF + +CFLAGSCXX += $(OBJCXXFLAGS) + +OBJFILES = $(APP1OBJS) + +APP1OBJS = $(OBJ)/cppuhelper_cppunittester_all.obj +APP1RPATH = NONE +APP1LIBS += \ + $(SLB)/qa_propertysetmixin.lib \ + $(SLB)/cppuhelper.lib + +APP1STDLIBS = $(CPPUNITLIB) $(CPPULIB) $(SALLIB) $(SALHELPERLIB) +APP1TARGET = $(TARGET) + +.INCLUDE: target.mk diff --git a/cppuhelper/qa/unourl/makefile.mk b/cppuhelper/qa/unourl/makefile.mk index f48b724ee..4e46dd088 100644 --- a/cppuhelper/qa/unourl/makefile.mk +++ b/cppuhelper/qa/unourl/makefile.mk @@ -35,11 +35,6 @@ ENABLE_EXCEPTIONS=TRUE .INCLUDE : settings.mk -.IF "$(CROSS_COMPILING)"=="YES" -all: - @echo Nothing done when cross-compiling -.ENDIF - CFLAGSCXX += $(CPPUNIT_CFLAGS) # BEGIN ---------------------------------------------------------------- diff --git a/cppuhelper/qa/weak/makefile.mk b/cppuhelper/qa/weak/makefile.mk index 789550497..5116886b6 100644 --- a/cppuhelper/qa/weak/makefile.mk +++ b/cppuhelper/qa/weak/makefile.mk @@ -33,11 +33,6 @@ ENABLE_EXCEPTIONS := TRUE .INCLUDE: settings.mk -.IF "$(CROSS_COMPILING)"=="YES" -all: - @echo Nothing done when cross-compiling -.ENDIF - CFLAGSCXX += $(CPPUNIT_CFLAGS) DLLPRE = # no leading "lib" on .so files |