postprocess/CppunitTest_services.mk | 1 + postprocess/Module_postprocess.mk | 3 +-- postprocess/qa/services.cxx | 27 +++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-)
New commits: commit 0b5568b9ddc2f89a58a76daef0b52bbfadcd6280 Author: Stephan Bergmann <[email protected]> Date: Thu Jun 12 12:28:51 2014 +0200 Fix CppunitTest_services on Windows ...by blacklisting the problematic service Change-Id: I524a7c7af2cb374911db7b204021c3d2bcd1fdd6 diff --git a/postprocess/Module_postprocess.mk b/postprocess/Module_postprocess.mk index cf42913..5775cfa 100644 --- a/postprocess/Module_postprocess.mk +++ b/postprocess/Module_postprocess.mk @@ -28,9 +28,8 @@ $(eval $(call gb_Module_add_targets,postprocess,\ )) endif -$(if $(filter-out $(OS),WNT), \ $(eval $(call gb_Module_add_check_targets,postprocess,\ CppunitTest_services \ -))) +)) # vim: set noet sw=4 ts=4: diff --git a/postprocess/qa/services.cxx b/postprocess/qa/services.cxx index a7052c1..706010d 100644 --- a/postprocess/qa/services.cxx +++ b/postprocess/qa/services.cxx @@ -9,6 +9,7 @@ #include <sal/config.h> +#include <algorithm> #include <vector> #include <com/sun/star/container/XHierarchicalNameAccess.hpp> @@ -36,6 +37,25 @@ public: void ServicesTest::test() { + std::vector<OUString> blacklist; +#if defined WNT + // On Windows, blacklist the com.sun.star.report.ReportDefinition service, + // as its reportdesign::OReportDefinition implementation (in + // reportdesign/source/core/api/ReportDefinition.cxx) spawns a thread that + // forever blocks in SendMessageW when no VCL event loop is running + // (reportdesign::<anon>::FactoryLoader::execute -> + // framework::Desktop::findFrame -> framework::TaskCreator::createTask -> + // <anon>::TaskCreatorService::createInstanceWithArguments -> + // <anon>::TaskCreatorService::impls_createContainerWindow -> + // <anon>::VCLXToolkit::createWindow -> + // <anon>::VCLXToolkit::ImplCreateWindow -> + // <anon>::VCLXToolkit::ImplCreateWindow -> WorkWindow::WorkWindow -> + // WorkWindow::ImplInit -> ImplBorderWindow::ImplBorderWindow -> + // ImplBorderWindow::ImplInit -> Window::ImplInit -> + // WinSalInstance::CreateFrame -> ImplSendMessage -> SendMessageW): + blacklist.push_back("com.sun.star.report.ReportDefinition"); +#endif + Reference< XHierarchicalNameAccess > xTypeManager( m_xContext->getValueByName( "/singletons/com.sun.star.reflection.theTypeDescriptionManager"), @@ -44,6 +64,11 @@ void ServicesTest::test() std::vector< css::uno::Reference<css::lang::XComponent> > comps; for (sal_Int32 i = 0; i < s.getLength(); i++) { + if (std::find(blacklist.begin(), blacklist.end(), s[i]) + != blacklist.end()) + { + continue; + } if (!xTypeManager->hasByHierarchicalName(s[i])) { SAL_WARN( commit c4444ea0c412d580a9ff0423bd9fa4d8b535490b Author: Stephan Bergmann <[email protected]> Date: Thu Jun 12 12:18:59 2014 +0200 Avoid Solar Mutex deadlocks when disposing services ...as test code using gb_CppunitTest_use_vcl is implicitly run with Solar Mutex locked Change-Id: I480b4bcce7c6a94922019679099b0883b3ee1030 diff --git a/postprocess/CppunitTest_services.mk b/postprocess/CppunitTest_services.mk index bdcae7b..08c860e 100644 --- a/postprocess/CppunitTest_services.mk +++ b/postprocess/CppunitTest_services.mk @@ -21,6 +21,7 @@ $(eval $(call gb_CppunitTest_use_libraries,services, \ cppu \ sal \ test \ + vcl \ $(gb_UWINAPI) \ )) diff --git a/postprocess/qa/services.cxx b/postprocess/qa/services.cxx index 2d29e91..a7052c1 100644 --- a/postprocess/qa/services.cxx +++ b/postprocess/qa/services.cxx @@ -16,6 +16,7 @@ #include <com/sun/star/reflection/XServiceConstructorDescription.hpp> #include <com/sun/star/reflection/XServiceTypeDescription2.hpp> #include <test/bootstrapfixture.hxx> +#include <vcl/svapp.hxx> using namespace css::container; using namespace css::reflection; @@ -87,6 +88,7 @@ void ServicesTest::test() } } } + SolarMutexReleaser rel; for (std::vector< css::uno::Reference<css::lang::XComponent> >::iterator i( comps.begin()); i != comps.end(); ++i) _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
