Commit Graph

19 Commits

Author SHA1 Message Date
139dcea46b loplugin:unreffun
Change-Id: Ia7b5ac5ca28d80c353f1ccdce4b69838e584d811
2014-04-22 22:07:21 +02:00
775bf23fc6 Prevent SolarMutex deadlock in unit test
Seen once a deadlock between

d 12 (Thread 0x2af5a4c8a700 (LWP 7618)):
> #0  0x00002af58ac97ddd in __lll_lock_wait () from /lib64/libpthread.so.0
> #1  0x00002af58ac93bbc in _L_lock_839 () from /lib64/libpthread.so.0
> #2  0x00002af58ac93ad9 in pthread_mutex_lock () from /lib64/libpthread.so.0
> #3  0x00002af589e2383a in osl_acquireMutex (pMutex=0x9329b0) at sal/osl/unx/mutex.c:104
> #4  0x00002af598d577ec in vcl::SolarMutexObject::acquire (this=0x8dd120) at vcl/source/app/solarmutex.cxx:35
> #5  0x00002af599305c82 in SalYieldMutex::acquire (this=0x8dd120) at vcl/generic/app/geninst.cxx:49
> #6  0x00002af59e9bfb7b in framework::LockHelper::acquireReadAccess (this=0x2af5a2406088) at framework/source/fwi/threadhelp/lockhelper.cxx:150
> #7  0x00002af59ca29ccf in framework::ReadGuard::lock (this=0x2af5a4c894c0) at framework/inc/threadhelp/readguard.hxx:113
> #8  0x00002af59ca29c81 in framework::ReadGuard::ReadGuard (this=0x2af5a4c894c0, rLock=...) at framework/inc/threadhelp/readguard.hxx:79
> #9  0x00002af59cb52fce in (anonymous namespace)::Frame::getContainerWindow (this=0x2af5a2406010) at framework/source/services/frame.cxx:985
> #10 0x00002af5a32582d2 in tdoc_ucp::OfficeDocumentsManager::isWithoutOrInTopLevelFrame (this=0x2af5a24a1f18, xModel=uno::Reference to (dbaccess::ODatabaseDocument *) 0x2af5a4edc5a8) at ucb/source/ucp/tdoc/tdoc_docmgr.cxx:626
> #11 0x00002af5a325870f in tdoc_ucp::OfficeDocumentsManager::isOfficeDocument (this=0x2af5a24a1f18, xDoc=uno::Reference to (dbaccess::ODatabaseDocument *) 0x2af5a4edc558) at ucb/source/ucp/tdoc/tdoc_docmgr.cxx:697
> #12 0x00002af5a325651e in tdoc_ucp::OfficeDocumentsManager::notifyEvent (this=0x2af5a24a1f18, Event=...) at ucb/source/ucp/tdoc/tdoc_docmgr.cxx:305
> #13 0x00002af594251195 in cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::document::XEventListener, com::sun::document::EventObject>::operator() (this=0x2af5a4c89b20, listener=uno::Reference to (tdoc_ucp::OfficeDocumentsManager *) 0x2af5a24a1f40) at include/cppuhelper/interfacecontainer.h:262
> #14 0x00002af59425023e in cppu::OInterfaceContainerHelper::forEach<com::sun::document::XEventListener, cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::document::XEventListener, com::sun::document::EventObject> > (this=0x2af5a24a36a0, func=...) at include/cppuhelper/interfacecontainer.h:276
> #15 0x00002af59424f4da in cppu::OInterfaceContainerHelper::notifyEach<com::sun::document::XEventListener, com::sun::document::EventObject> (this=0x2af5a24a36a0, NotificationMethod=&virtual com::sun::document::XEventListener::notifyEvent(com::sun::document::EventObject const&), Event=...) at include/cppuhelper/interfacecontainer.h:289
> #16 0x00002af59424d864 in (anonymous namespace)::SfxGlobalEvents_Impl::implts_notifyListener (this=0x2af5a24a3628, aEvent=...) at sfx2/source/notify/globalevents.cxx:505
> #17 0x00002af59424c543 in (anonymous namespace)::SfxGlobalEvents_Impl::documentEventOccured (this=0x2af5a24a3628, _Event=...) at sfx2/source/notify/globalevents.cxx:315
> #18 0x00002af59016a5a5 in cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::document::XDocumentEventListener, com::sun::document::DocumentEvent>::operator() (this=0x2af5a4c89c90, listener=uno::Reference to ((anonymous namespace)::SfxGlobalEvents_Impl *) 0x2af5a24a3678) at include/cppuhelper/interfacecontainer.h:262
> #19 0x00002af59016a35e in cppu::OInterfaceContainerHelper::forEach<com::sun::document::XDocumentEventListener, cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::document::XDocumentEventListener, com::sun::document::DocumentEvent> > (this=0x11c0378, func=...) at include/cppuhelper/interfacecontainer.h:276
> #20 0x00002af590169ed6 in cppu::OInterfaceContainerHelper::notifyEach<com::sun::document::XDocumentEventListener, com::sun::document::DocumentEvent> (this=0x11c0378, NotificationMethod=&virtual com::sun::document::XDocumentEventListener::documentEventOccured(com::sun::document::DocumentEvent const&), Event=...) at include/cppuhelper/interfacecontainer.h:289
> #21 0x00002af5901690ed in dbaccess::DocumentEventNotifier_Impl::impl_notifyEvent_nothrow (this=0x11c0330, _rEvent=...) at dbaccess/source/core/dataaccess/documenteventnotifier.cxx:200
> #22 0x00002af5901693fa in dbaccess::DocumentEventNotifier_Impl::processEvent (this=0x11c0330, _rEvent=...) at dbaccess/source/core/dataaccess/documenteventnotifier.cxx:231
> #23 0x00002af58cba5de9 in comphelper::AsyncEventNotifier::execute (this=0x128c4e0) at comphelper/source/misc/asyncnotification.cxx:221
> #24 0x00002af58bcfe9c4 in salhelper::Thread::run (this=0x128c4e0) at salhelper/source/thread.cxx:40
> #25 0x00002af58bcfed8d in osl::threadFunc (param=0x128c4f0) at include/osl/thread.hxx:187
> #26 0x00002af589e2e2e7 in osl_thread_start_Impl (pData=0x128db40) at sal/osl/unx/thread.c:236
> #27 0x00002af58ac91c53 in start_thread () from /lib64/libpthread.so.0
> #28 0x00002af58a9bedbd in clone () from /lib64/libc.so.6

and

> Thread 1 (Thread 0x2af589931980 (LWP 7598)):
> #0  0x00002af58ac95565 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
> #1  0x00002af589e67146 in osl_waitCondition (Condition=0x11a22a0, pTimeout=0x0) at sal/osl/unx/conditn.cxx:275
> #2  0x00002af59e9c0866 in osl::Condition::wait (this=0x2af5a24060d0, pTimeout=0x0) at include/osl/conditn.hxx:82
> #3  0x00002af59e9c0bf5 in framework::Gate::wait (this=0x2af5a24060c0, pTimeOut=0x0) at framework/inc/threadhelp/gate.hxx:197
> #4  0x00002af59e9c0041 in framework::TransactionManager::setWorkingMode (this=0x2af5a24060b0, eMode=framework::E_BEFORECLOSE) at framework/source/fwi/threadhelp/transactionmanager.cxx:119
> #5  0x00002af59cb56c8f in (anonymous namespace)::Frame::dispose (this=0x2af5a2406010) at framework/source/services/frame.cxx:2229
> #6  0x00002af59cb55bec in (anonymous namespace)::Frame::close (this=0x2af5a2406010, bDeliverOwnership=0 '\000') at framework/source/services/frame.cxx:2002
> #7  0x00002af59010f9cc in dbaccess::ODatabaseDocument::impl_closeControllerFrames_nolck_throw (this=0x2af5a4edc538, _bDeliverOwnership=0 '\000') at dbaccess/source/core/dataaccess/databasedocument.cxx:1441
> #8  0x00002af59010fe24 in dbaccess::ODatabaseDocument::close (this=0x2af5a4edc538, _bDeliverOwnership=0 '\000') at dbaccess/source/core/dataaccess/databasedocument.cxx:1498
> #9  0x00002af58f6c59c6 in DialogSaveTest::test (this=0x922c10) at dbaccess/qa/extras/dialog-save.cxx:104
> #10 0x00002af58f6cc8d4 in CppUnit::TestCaller<DialogSaveTest>::runTest (this=0x879cc0) at workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:166
> #11 0x00002af589bb41b4 in CppUnit::TestCaseMethodFunctor::operator() (this=0x7fff58142f30) at TestCase.cpp:32
> #12 0x00002af58c8ab9e3 in (anonymous namespace)::Prot::protect (this=0x879da0, functor=...) at unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:88
> #13 0x00002af589bac2ef in CppUnit::ProtectorChain::ProtectFunctor::operator() (this=0x922aa0) at ProtectorChain.cpp:20
> #14 0x00002af58b4b5536 in (anonymous namespace)::Prot::protect (this=0x879dc0, functor=..., context=...) at unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:64
> #15 0x00002af589bac2ef in CppUnit::ProtectorChain::ProtectFunctor::operator() (this=0x922ca0) at ProtectorChain.cpp:20
> #16 0x00002af589b9dc64 in CppUnit::DefaultProtector::protect (this=0x8756a0, functor=..., context=...) at DefaultProtector.cpp:15
> #17 0x00002af589bac2ef in CppUnit::ProtectorChain::ProtectFunctor::operator() (this=0x922c70) at ProtectorChain.cpp:20
> #18 0x00002af589bac184 in CppUnit::ProtectorChain::protect (this=0x8753c0, functor=..., context=...) at ProtectorChain.cpp:77
> #19 0x00002af589bc339a in CppUnit::TestResult::protect (this=0x7fff58143450, functor=..., test=0x879cc0, shortDescription="") at TestResult.cpp:181
> #20 0x00002af589bb3c84 in CppUnit::TestCase::run (this=0x879cc0, result=0x7fff58143450) at TestCase.cpp:92
> #21 0x00002af589bb4a20 in CppUnit::TestComposite::doRunChildTests (this=0x922b50, controller=0x7fff58143450) at TestComposite.cpp:64
> #22 0x00002af589bb48aa in CppUnit::TestComposite::run (this=0x922b50, result=0x7fff58143450) at TestComposite.cpp:23
> #23 0x00002af589bb4a20 in CppUnit::TestComposite::doRunChildTests (this=0x922ad0, controller=0x7fff58143450) at TestComposite.cpp:64
> #24 0x00002af589bb48aa in CppUnit::TestComposite::run (this=0x922ad0, result=0x7fff58143450) at TestComposite.cpp:23
> #25 0x00002af589bca586 in CppUnit::TestRunner::WrappingSuite::run (this=0x879d30, result=0x7fff58143450) at TestRunner.cpp:47
> #26 0x00002af589bc30a4 in CppUnit::TestResult::runTest (this=0x7fff58143450, test=0x879d30) at TestResult.cpp:148
> #27 0x00002af589bca7e4 in CppUnit::TestRunner::run (this=0x7fff581432e0, controller=..., testPath="") at TestRunner.cpp:96
> #28 0x0000000000403ecf in (anonymous namespace)::ProtectedFixtureFunctor::run (this=0x7fff581433a0) at sal/cppunittester/cppunittester.cxx:150
> #29 0x0000000000404561 in sal_main () at sal/cppunittester/cppunittester.cxx:242
> #30 0x00000000004041a9 in main (argc=18, argv=0x7fff581436a8) at sal/cppunittester/cppunittester.cxx:166

and indeed UnoApiTest::setUp -> test::BootstrapFixture::setUp -> test_init_impl
-> InitVCL -> CreateSalInstance -> SalGenericInstance::AcquireYieldMutex causes
all such UnoApiTests to be run with the SolarMutex locked.

This reverts acdfb2593564ea23d4bbb999856922568d7ab2c3 "dbaccess: disable hanging
close() for now."

Change-Id: Ifac49da2c55b0b27b780a348074f69de86967aa1
2014-02-03 16:05:09 +01:00
acdfb25935 dbaccess: disable hanging close() for now
I don't know why it hangs, but seems even without closing, the test
still fails after reverting fc9080a0c60f263d00eb71111fcda72b3c0a2ebb
(fdo#67685 open xSourceLibrariesStor only when needed, 2013-08-02).

Once the test no longer hangs, of course feel free to add this back.

Change-Id: If124b7f57a8fa2d522ebdb448366aec6f1ff4987
2014-01-24 22:47:59 +01:00
f630c021ed nitpicks
Change-Id: I190a629a8c76f98b54295eebcf712b4c5b26ecff
2013-11-09 06:36:51 +01:00
a071a29d4f UnoApiTest don't require Calc
There is no reason for the generic UnoApiTest to require Calc
specifically. Calc tests can/should instantiate a Calc instance.
We can create a CalcUnoApiTest for that that inherits from
UnoApiTest; however this does not seem necessary, "make sc.clean"
succeeds.

Anyway, the ScGlobals::ensure mentioned in the comment does not
seem to exist.

This allows us to eliminate some code duplication in tests
that were reimplementing UnoApiTest minus the Calc instantiation.

Change-Id: I37bea9df41e3960df0458fe689cf6c046a243617
2013-11-09 06:36:45 +01:00
e937995ca3 dbaccess DialogSaveTest not a UnoApiTest
It overrides everything that UnoApiTest does anyway.

Change-Id: I531b2245626cbfd8d13a48a710d409e30ba2d20a
2013-11-09 06:35:56 +01:00
5063e39261 getURLFromWorkdir should actually return a URL
Change-Id: Id6d67f820226da15d90b95aa047767926583cc2e
2013-09-27 14:26:51 +02:00
a9a0933ec6 raah... getURLFromWorkdir does not put the URL scheme
Change-Id: I62162230b313c66872ef1b3e8b18070126169aa1
2013-09-27 13:07:44 +02:00
c24161acd6 get workdir URL directly
as opposed to buggily trying to build it ourselves from the path

Change-Id: Ibf44fac809a9cf12bc654a5a2f8ac8f00866b1a3
2013-09-27 12:52:42 +02:00
92c53b9d94 unittest for fdo#67685
Change-Id: I44500717109a026d7c71e6494daacbea1f224263
2013-09-27 11:38:08 +02:00
9a1aca007f fdo#57950: Remove some chained appends in dbaccess
Change-Id: If93b4a11ac15ede2b08ef42bb2fa4670f0d4cd24
Reviewed-on: https://gerrit.libreoffice.org/5481
Reviewed-by: Andrzej J.R. Hunt <andrzej@ahunt.org>
Tested-by: Andrzej J.R. Hunt <andrzej@ahunt.org>
2013-08-19 06:04:40 +00:00
6357299275 minor tweaks to existing unittests
Change-Id: I64769fee917c5d8c6450a19ad53fdf795e280c98
2013-08-03 21:00:41 +02:00
62badf3828 Move to MPLv2 license headers, with ESC decision and author's permission. 2013-04-22 09:37:38 +01:00
1946794ae0 mass removal of rtl:: prefixes for O(U)String*
Modules sal, salhelper, cppu, cppuhelper, codemaker (selectively) and odk
have kept them, in order not to break external API (the automatic using declaration
is LO-internal).

Change-Id: I588fc9e0c45b914f824f91c0376980621d730f09
2013-04-07 14:23:11 +02:00
39d45390f4 removal of RTL_CONSTASCII_USTRINGPARAM for quoted OUStrings declarations
s/(OUString\s+[a-zA-Z_][A-Za-z0-9_]*\s*)\(\s*RTL_CONSTASCII_USTRINGPARAM\s*\((\s*"[^")]*?"\s*)\)\s*\)/$1\($2\)/gms

Change-Id: Iad20f242c80c4bdc69df17e2d7a69d58ea53654b
Reviewed-on: https://gerrit.libreoffice.org/2835
Reviewed-by: Thomas Arnhold <thomas@arnhold.org>
Tested-by: Thomas Arnhold <thomas@arnhold.org>
2013-03-19 10:48:30 +00:00
bb121c864c fdo#46808, Convert frame::Desktop to new style service.
I had to drop XEventBroadcaster from the merged interface
because it introduced method name conflicts (addEventListener).

Shouldn't be an issue since it was scheduled to be dropped anyhow,
and the service implementation still implements it, so existing clients
will be fine.

I dropped the interface XPropertySet from the combined IDL because nobody
seems to be using it, and it's primary purpose appears to be to set weird
flags.

I dropped the optional interfaces
   XStatusIndicatorFactory
   XDispatchInformationProvider
from the combined IDL because the service does not implement them, and
nobody seems to be using them. I suspect they were mistakenly copied
from XFrame.

I also did not convert the Title, UserDefinedAttributes and LayoutManager
properties to attributes, again because no-one is using them.

Change-Id: I678a00006ed2cca2d6c37c4e39465811442c33af
2012-12-21 10:57:09 +02:00
699eae5bd3 disable new test on win and mac since it is a test with UI 2012-02-12 20:14:56 +01:00
75b4d17f96 use better assertion macros 2012-02-12 02:47:37 +01:00
0f4451c0b3 first part of a c++ based test for base 2012-02-11 17:21:59 +01:00