[Libreoffice-commits] core.git: 7 commits - connectivity/source desktop/source filter/qa include/unotools sd/qa starmath/qa unotools/source
Michael Stahl
mstahl at redhat.com
Fri Oct 10 15:35:19 PDT 2014
connectivity/source/drivers/firebird/Driver.cxx | 14 +++++-
connectivity/source/drivers/firebird/Driver.hxx | 1
desktop/source/app/app.cxx | 54 -----------------------
filter/qa/cppunit/xslt-test.cxx | 4 +
include/unotools/localfilehelper.hxx | 3 +
sd/qa/unit/export-tests.cxx | 31 ++++++-------
sd/qa/unit/import-tests.cxx | 56 ++++++++++++------------
starmath/qa/cppunit/test_starmath.cxx | 1
unotools/source/ucbhelper/localfilehelper.cxx | 51 +++++++++++++++++++++
unotools/source/ucbhelper/tempfile.cxx | 6 +-
10 files changed, 121 insertions(+), 100 deletions(-)
New commits:
commit 99b6fc7b72452660f59ebeec8596cba375c02f9d
Author: Michael Stahl <mstahl at redhat.com>
Date: Sat Oct 11 00:24:32 2014 +0200
sd: another temp-file leak
Change-Id: Idcd31ea07c460aaecff3ea56072cf65e26040bda
diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx
index df1db00..61aead3 100644
--- a/sd/qa/unit/export-tests.cxx
+++ b/sd/qa/unit/export-tests.cxx
@@ -474,6 +474,7 @@ void SdExportTest::testFdo83751()
OUString propValue;
xUDProps->getPropertyValue(OUString("Testing")) >>= propValue;
CPPUNIT_ASSERT_EQUAL(OUString("Document"), propValue);
+ xDocShRef->DoClose();
}
CPPUNIT_TEST_SUITE_REGISTRATION(SdExportTest);
commit 8a74ad7f242dda910abec22fb6106a70651c8b5e
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Oct 10 21:23:08 2014 +0200
sd: rename test classes to be unique
Change-Id: I18d4f6af97fcfb9341711751a8d550e421f7a381
diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx
index 7aa1e26..df1db00 100644
--- a/sd/qa/unit/export-tests.cxx
+++ b/sd/qa/unit/export-tests.cxx
@@ -56,7 +56,7 @@
using namespace ::com::sun::star;
-class SdFiltersTest : public SdModelTestBase
+class SdExportTest : public SdModelTestBase
{
public:
void testN821567();
@@ -72,7 +72,7 @@ public:
void testBnc822347_EmptyBullet();
void testFdo83751();
- CPPUNIT_TEST_SUITE(SdFiltersTest);
+ CPPUNIT_TEST_SUITE(SdExportTest);
CPPUNIT_TEST(testN821567);
CPPUNIT_TEST(testBnc870233_1);
CPPUNIT_TEST(testBnc870233_2);
@@ -88,7 +88,7 @@ public:
CPPUNIT_TEST_SUITE_END();
};
-void SdFiltersTest::testN821567()
+void SdExportTest::testN821567()
{
OUString bgImage;
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n821567.pptx"), PPTX );
@@ -154,7 +154,7 @@ void checkFontAttributes(const SdrTextObj* pObj, sal_uInt32 nColor,
}
-void SdFiltersTest::testBnc870233_1()
+void SdExportTest::testBnc870233_1()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc870233_1.pptx"), PPTX);
xDocShRef = saveAndReload( xDocShRef, PPTX );
@@ -183,7 +183,7 @@ void SdFiltersTest::testBnc870233_1()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc870233_2()
+void SdExportTest::testBnc870233_2()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc870233_2.pptx"), PPTX);
xDocShRef = saveAndReload( xDocShRef, PPTX );
@@ -219,7 +219,7 @@ void SdFiltersTest::testBnc870233_2()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN828390_4()
+void SdExportTest::testN828390_4()
{
bool bPassed = false;
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/n828390_4.odp"), ODP );
@@ -258,7 +258,7 @@ void SdFiltersTest::testN828390_4()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN828390_5()
+void SdExportTest::testN828390_5()
{
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/n828390_5.odp"), ODP );
@@ -281,7 +281,7 @@ void SdFiltersTest::testN828390_5()
xDocShRef->DoClose();
}
-void SdFiltersTest::testMediaEmbedding()
+void SdExportTest::testMediaEmbedding()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/media_embedding.odp"), ODP);
@@ -316,7 +316,7 @@ void SdFiltersTest::testMediaEmbedding()
xDocShRef->DoClose();
}
-void SdFiltersTest::testFdo71961()
+void SdExportTest::testFdo71961()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/fdo71961.odp"), ODP);
@@ -347,7 +347,7 @@ void SdFiltersTest::testFdo71961()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN828390()
+void SdExportTest::testN828390()
{
bool bPassed = false;
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n828390.pptx"), PPTX );
@@ -384,7 +384,7 @@ void SdFiltersTest::testN828390()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc880763()
+void SdExportTest::testBnc880763()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc880763.pptx"), PPTX);
xDocShRef = saveAndReload( xDocShRef, PPTX );
@@ -408,7 +408,7 @@ void SdFiltersTest::testBnc880763()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc862510_5()
+void SdExportTest::testBnc862510_5()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc862510_5.pptx"), PPTX);
xDocShRef = saveAndReload( xDocShRef, PPTX );
@@ -432,7 +432,7 @@ void SdFiltersTest::testBnc862510_5()
// In numbering a bullet could be defined as empty (no character).
// When exporting to OOXML make sure that the bullet is ignored and
// not written into the file.
-void SdFiltersTest::testBnc822347_EmptyBullet()
+void SdExportTest::testBnc822347_EmptyBullet()
{
sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/bnc822347_EmptyBullet.odp"), ODP);
xDocShRef = saveAndReload(xDocShRef, PPTX);
@@ -460,7 +460,7 @@ void SdFiltersTest::testBnc822347_EmptyBullet()
xDocShRef->DoClose();
}
-void SdFiltersTest::testFdo83751()
+void SdExportTest::testFdo83751()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/fdo83751.pptx"), PPTX);
xDocShRef = saveAndReload( xDocShRef, PPTX );
@@ -476,7 +476,7 @@ void SdFiltersTest::testFdo83751()
CPPUNIT_ASSERT_EQUAL(OUString("Document"), propValue);
}
-CPPUNIT_TEST_SUITE_REGISTRATION(SdFiltersTest);
+CPPUNIT_TEST_SUITE_REGISTRATION(SdExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index 4baad7a..2144825 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -56,7 +56,7 @@
using namespace ::com::sun::star;
/// Impress import filters tests.
-class SdFiltersTest : public SdModelTestBase
+class SdImportTest : public SdModelTestBase
{
public:
void testDocumentLayout();
@@ -85,7 +85,7 @@ public:
void testBnc584721_3();
void testBnc584721_4();
- CPPUNIT_TEST_SUITE(SdFiltersTest);
+ CPPUNIT_TEST_SUITE(SdImportTest);
CPPUNIT_TEST(testDocumentLayout);
CPPUNIT_TEST(testSmoketest);
CPPUNIT_TEST(testN759180);
@@ -145,7 +145,7 @@ NOTE: This approach is suitable only for tests of fixes that actually change
the layout - best to check by reverting your fix locally after having added
the test, and re-running; it should break.
*/
-void SdFiltersTest::testDocumentLayout()
+void SdImportTest::testDocumentLayout()
{
struct { const char *pInput, *pDump; sal_Int32 nFormat; sal_Int32 nExportType; } aFilesToCompare[] =
{
@@ -174,7 +174,7 @@ void SdFiltersTest::testDocumentLayout()
}
}
-void SdFiltersTest::testSmoketest()
+void SdImportTest::testSmoketest()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/smoketest.pptx"), PPTX);
@@ -202,7 +202,7 @@ void SdFiltersTest::testSmoketest()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN759180()
+void SdImportTest::testN759180()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/n759180.pptx"), PPTX);
@@ -240,7 +240,7 @@ void SdFiltersTest::testN759180()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN862510_1()
+void SdImportTest::testN862510_1()
{
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n862510_1.pptx"), PPTX );
@@ -265,7 +265,7 @@ void SdFiltersTest::testN862510_1()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN862510_2()
+void SdImportTest::testN862510_2()
{
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n862510_2.pptx"), PPTX );
@@ -284,7 +284,7 @@ void SdFiltersTest::testN862510_2()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN862510_4()
+void SdImportTest::testN862510_4()
{
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n862510_4.pptx"), PPTX );
@@ -309,7 +309,7 @@ void SdFiltersTest::testN862510_4()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN828390_2()
+void SdImportTest::testN828390_2()
{
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n828390_2.pptx"), PPTX );
@@ -328,7 +328,7 @@ void SdFiltersTest::testN828390_2()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN828390_3()
+void SdImportTest::testN828390_3()
{
bool bPassed = true;
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n828390_3.pptx"), PPTX );
@@ -361,7 +361,7 @@ void SdFiltersTest::testN828390_3()
xDocShRef->DoClose();
}
-void SdFiltersTest::testMasterPageStyleParent()
+void SdImportTest::testMasterPageStyleParent()
{
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/odp/masterpage_style_parent.odp"), ODP );
@@ -400,7 +400,7 @@ void SdFiltersTest::testMasterPageStyleParent()
xDocShRef->DoClose();
}
-void SdFiltersTest::testN778859()
+void SdImportTest::testN778859()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/n778859.pptx"), PPTX);
@@ -419,7 +419,7 @@ void SdFiltersTest::testN778859()
xDocShRef->DoClose();
}
-void SdFiltersTest::testFdo68594()
+void SdImportTest::testFdo68594()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/ppt/fdo68594.ppt"), PPT);
@@ -438,7 +438,7 @@ void SdFiltersTest::testFdo68594()
xDocShRef->DoClose();
}
-void SdFiltersTest::testFdo72998()
+void SdImportTest::testFdo72998()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/cshapes.pptx"), PPTX);
@@ -468,7 +468,7 @@ std::ostream& operator<<(std::ostream& rStrm, const Color& rColor)
return rStrm;
}
-void SdFiltersTest::testFdo77027()
+void SdImportTest::testFdo77027()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/odp/fdo77027.odp"), ODP);
@@ -492,7 +492,7 @@ void SdFiltersTest::testFdo77027()
xDocShRef->DoClose();
}
-void SdFiltersTest::testFdo64512()
+void SdImportTest::testFdo64512()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/fdo64512.odp"), ODP);
@@ -535,7 +535,7 @@ void SdFiltersTest::testFdo64512()
}
// Unit test for importing charts
-void SdFiltersTest::testFdo71075()
+void SdImportTest::testFdo71075()
{
double values[] = { 12.0, 13.0, 14.0 };
::com::sun::star::uno::Any aAny;
@@ -579,7 +579,7 @@ void SdFiltersTest::testFdo71075()
xDocShRef->DoClose();
}
-void SdFiltersTest::testStrictOOXML()
+void SdImportTest::testStrictOOXML()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/strict_ooxml.pptx"), PPTX);
@@ -593,7 +593,7 @@ void SdFiltersTest::testStrictOOXML()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc870237()
+void SdImportTest::testBnc870237()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc870237.pptx"), PPTX);
@@ -613,7 +613,7 @@ void SdFiltersTest::testBnc870237()
xDocShRef->DoClose();
}
-void SdFiltersTest::testCreationDate()
+void SdImportTest::testCreationDate()
{
sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/fdo71434.pptx"), PPTX);
uno::Reference<document::XDocumentPropertiesSupplier> xDocumentPropertiesSupplier(xDocShRef->GetModel(), uno::UNO_QUERY);
@@ -626,7 +626,7 @@ void SdFiltersTest::testCreationDate()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc887225()
+void SdImportTest::testBnc887225()
{
::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/bnc887225.pptx"), PPTX );
// In the document, lastRow and lastCol table properties are used.
@@ -674,7 +674,7 @@ void SdFiltersTest::testBnc887225()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc480256()
+void SdImportTest::testBnc480256()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc480256.pptx"), PPTX);
// In the document, there are two tables with table background properties.
@@ -731,7 +731,7 @@ void SdFiltersTest::testBnc480256()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc584721_1()
+void SdImportTest::testBnc584721_1()
{
// Title text shape on the master page contained wrong text.
@@ -749,7 +749,7 @@ void SdFiltersTest::testBnc584721_1()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc584721_2()
+void SdImportTest::testBnc584721_2()
{
// Import created an extra/unneeded outliner shape on the master slide next to the imported title shape.
@@ -764,7 +764,7 @@ void SdFiltersTest::testBnc584721_2()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc584721_3()
+void SdImportTest::testBnc584721_3()
{
// Subtitle was simply skipped on master slides.
// Check whether the second shape is a subtitle shape with the right text.
@@ -789,7 +789,7 @@ void SdFiltersTest::testBnc584721_3()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc591147()
+void SdImportTest::testBnc591147()
{
::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc591147.pptx"), PPTX);
@@ -824,7 +824,7 @@ void SdFiltersTest::testBnc591147()
xDocShRef->DoClose();
}
-void SdFiltersTest::testBnc584721_4()
+void SdImportTest::testBnc584721_4()
{
// Black text was imported as white because of wrong caching mechanism
@@ -863,7 +863,7 @@ void SdFiltersTest::testBnc584721_4()
xDocShRef->DoClose();
}
-CPPUNIT_TEST_SUITE_REGISTRATION(SdFiltersTest);
+CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
commit 66d18c1fd45c32a31e1683e8ccfede61f24c0845
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Oct 10 21:02:10 2014 +0200
starmath: close SfxObjectShell in unit test to stop temp file leakage
Change-Id: Iaf2df8a315b3e0c8cdd1f1a4a7d589682384ddaf
diff --git a/starmath/qa/cppunit/test_starmath.cxx b/starmath/qa/cppunit/test_starmath.cxx
index deeade8..3889c40 100644
--- a/starmath/qa/cppunit/test_starmath.cxx
+++ b/starmath/qa/cppunit/test_starmath.cxx
@@ -97,6 +97,7 @@ void Test::tearDown()
delete m_pEditWindow;
delete m_pSmCmdBoxWindow;
delete m_pDispatcher;
+ m_xDocShRef->DoClose();
m_xDocShRef.Clear();
BootstrapFixture::tearDown();
commit 6c2cffdfc634be8ef7ec37f7da4a4b16e5e2a04e
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Oct 10 17:57:15 2014 +0200
connectivity: firebird: recursively delete temp directories
TempFile itself will only remove empty directories.
Change-Id: Ibaf986856bde172de40686ae363821b19add8106
diff --git a/connectivity/source/drivers/firebird/Driver.cxx b/connectivity/source/drivers/firebird/Driver.cxx
index a6eacc6..5c9c88b 100644
--- a/connectivity/source/drivers/firebird/Driver.cxx
+++ b/connectivity/source/drivers/firebird/Driver.cxx
@@ -31,6 +31,7 @@
#include <osl/process.h>
#include <rtl/bootstrap.hxx>
#include <svtools/miscopt.hxx>
+#include <unotools/localfilehelper.hxx>
using namespace com::sun::star;
using namespace com::sun::star::uno;
@@ -67,8 +68,11 @@ FirebirdDriver::FirebirdDriver(const ::com::sun::star::uno::Reference< ::com::su
, m_firebirdTMPDirectory(NULL, true)
, m_firebirdLockDirectory(NULL, true)
{
- m_firebirdTMPDirectory.EnableKillingFile();
- m_firebirdLockDirectory.EnableKillingFile();
+ // Note: TempFile caches the URL on first access; call this here so that
+ // ~FirebirdDriver is not the first access, because that is called
+ // when the ServiceManager is disposing, so GetURL() would fail!
+ m_firebirdTMPDirectory.GetURL();
+ m_firebirdLockDirectory.GetURL();
// ::utl::TempFile uses a unique temporary directory (subdirectory of
// /tmp or other user specific tmp directory) per instance in which
@@ -91,6 +95,12 @@ FirebirdDriver::FirebirdDriver(const ::com::sun::star::uno::Reference< ::com::su
#endif
}
+FirebirdDriver::~FirebirdDriver()
+{
+ utl::removeTree(m_firebirdTMPDirectory.GetURL());
+ utl::removeTree(m_firebirdLockDirectory.GetURL());
+}
+
void FirebirdDriver::disposing()
{
MutexGuard aGuard(m_aMutex);
diff --git a/connectivity/source/drivers/firebird/Driver.hxx b/connectivity/source/drivers/firebird/Driver.hxx
index e7ff86c..2ed77a0 100644
--- a/connectivity/source/drivers/firebird/Driver.hxx
+++ b/connectivity/source/drivers/firebird/Driver.hxx
@@ -63,6 +63,7 @@ namespace connectivity
public:
FirebirdDriver(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext);
+ virtual ~FirebirdDriver();
const css::uno::Reference<css::uno::XComponentContext>& getContext() const { return m_aContext; }
// OComponentHelper
commit f0215dcc9e5ba47d4b7d5b9759f1bd774942d388
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Oct 10 17:54:58 2014 +0200
unotools: assert if TempFile::GetURL() fails due to missing file UCP
Change-Id: I3dd844c656766835079bc191b3b55d3fba2c2219
diff --git a/unotools/source/ucbhelper/tempfile.cxx b/unotools/source/ucbhelper/tempfile.cxx
index 8acc2e4..7665b3d 100644
--- a/unotools/source/ucbhelper/tempfile.cxx
+++ b/unotools/source/ucbhelper/tempfile.cxx
@@ -364,9 +364,9 @@ OUString TempFile::GetURL()
{
if ( aURL.isEmpty() )
{
- OUString aTmp;
- LocalFileHelper::ConvertPhysicalNameToURL( GetFileName(), aTmp );
- aURL = aTmp;
+ OUString const name(GetFileName());
+ LocalFileHelper::ConvertPhysicalNameToURL(name, aURL);
+ assert((name.isEmpty() || !aURL.isEmpty()) && "TempFile::GetURL failed: unit test is leaking temp files, add the ucpfile1 component!");
}
return aURL;
commit 124a29f0f8dd805ef1d67bd062e1978a8a88e759
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Oct 10 17:37:08 2014 +0200
move the removeTree function from desktop to unotools
Change-Id: I98d3f4a68abfee42dac987633878b850134671d3
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index b2c3433..5374704 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -81,6 +81,7 @@
#include <unotools/bootstrap.hxx>
#include <unotools/configmgr.hxx>
#include <unotools/moduleoptions.hxx>
+#include <unotools/localfilehelper.hxx>
#include <officecfg/Office/Common.hxx>
#include <officecfg/Office/Recovery.hxx>
#include <officecfg/Setup.hxx>
@@ -163,57 +164,6 @@ namespace {
#if HAVE_FEATURE_EXTENSIONS
-void removeTree(OUString const & url) {
- osl::Directory dir(url);
- osl::FileBase::RC rc = dir.open();
- switch (rc) {
- case osl::FileBase::E_None:
- break;
- case osl::FileBase::E_NOENT:
- return; //TODO: SAL_WARN if recursive
- default:
- SAL_WARN("desktop.app", "cannot open directory " << dir.getURL() << ": " << +rc);
- return;
- }
- for (;;) {
- osl::DirectoryItem i;
- rc = dir.getNextItem(i, SAL_MAX_UINT32);
- if (rc == osl::FileBase::E_NOENT) {
- break;
- }
- if (rc != osl::FileBase::E_None) {
- SAL_WARN( "desktop.app", "cannot iterate directory " << dir.getURL() << ": " << +rc);
- break;
- }
- osl::FileStatus stat(
- osl_FileStatus_Mask_Type | osl_FileStatus_Mask_FileName |
- osl_FileStatus_Mask_FileURL);
- rc = i.getFileStatus(stat);
- if (rc != osl::FileBase::E_None) {
- SAL_WARN( "desktop.app", "cannot stat in directory " << dir.getURL() << ": " << +rc);
- continue;
- }
- if (stat.getFileType() == osl::FileStatus::Directory) { //TODO: symlinks
- removeTree(stat.getFileURL());
- } else {
- rc = osl::File::remove(stat.getFileURL());
- SAL_WARN_IF(
- rc != osl::FileBase::E_None, "desktop.app",
- "cannot remove file " << stat.getFileURL() << ": " << +rc);
- }
- }
- if (dir.isOpen()) {
- rc = dir.close();
- SAL_WARN_IF(
- rc != osl::FileBase::E_None, "desktop.app",
- "cannot close directory " << dir.getURL() << ": " << +rc);
- }
- rc = osl::Directory::remove(url);
- SAL_WARN_IF(
- rc != osl::FileBase::E_None, "desktop.app",
- "cannot remove directory " << url << ": " << +rc);
-}
-
// Remove any existing UserInstallation's extensions cache data remaining from
// old installations. This addresses at least two problems:
//
@@ -285,7 +235,7 @@ bool cleanExtensionCache() {
SAL_WARN( "desktop.app", "cannot open " << fr.getURL() << " for reading: " << +rc);
break;
}
- removeTree(extDir);
+ utl::removeTree(extDir);
OUString userRcFile(
"$UNO_USER_PACKAGES_CACHE/registry/"
"com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc");
diff --git a/include/unotools/localfilehelper.hxx b/include/unotools/localfilehelper.hxx
index 6f69580..84d5a88 100644
--- a/include/unotools/localfilehelper.hxx
+++ b/include/unotools/localfilehelper.hxx
@@ -52,6 +52,9 @@ namespace utl
static ::com::sun::star::uno::Sequence< OUString >
GetFolderContents( const OUString& rFolder, bool bFolder );
};
+
+ /// recursively remove directory and all contents
+ UNOTOOLS_DLLPUBLIC void removeTree(OUString const & url);
}
#endif
diff --git a/unotools/source/ucbhelper/localfilehelper.cxx b/unotools/source/ucbhelper/localfilehelper.cxx
index 665f652..1d2dedb 100644
--- a/unotools/source/ucbhelper/localfilehelper.cxx
+++ b/unotools/source/ucbhelper/localfilehelper.cxx
@@ -193,6 +193,57 @@ typedef ::std::vector< OUString* > StringList_Impl;
return Sequence < OUString > ();
}
+void removeTree(OUString const & url) {
+ osl::Directory dir(url);
+ osl::FileBase::RC rc = dir.open();
+ switch (rc) {
+ case osl::FileBase::E_None:
+ break;
+ case osl::FileBase::E_NOENT:
+ return; //TODO: SAL_WARN if recursive
+ default:
+ SAL_WARN("desktop.app", "cannot open directory " << dir.getURL() << ": " << +rc);
+ return;
+ }
+ for (;;) {
+ osl::DirectoryItem i;
+ rc = dir.getNextItem(i, SAL_MAX_UINT32);
+ if (rc == osl::FileBase::E_NOENT) {
+ break;
+ }
+ if (rc != osl::FileBase::E_None) {
+ SAL_WARN( "desktop.app", "cannot iterate directory " << dir.getURL() << ": " << +rc);
+ break;
+ }
+ osl::FileStatus stat(
+ osl_FileStatus_Mask_Type | osl_FileStatus_Mask_FileName |
+ osl_FileStatus_Mask_FileURL);
+ rc = i.getFileStatus(stat);
+ if (rc != osl::FileBase::E_None) {
+ SAL_WARN( "desktop.app", "cannot stat in directory " << dir.getURL() << ": " << +rc);
+ continue;
+ }
+ if (stat.getFileType() == osl::FileStatus::Directory) { //TODO: symlinks
+ removeTree(stat.getFileURL());
+ } else {
+ rc = osl::File::remove(stat.getFileURL());
+ SAL_WARN_IF(
+ rc != osl::FileBase::E_None, "desktop.app",
+ "cannot remove file " << stat.getFileURL() << ": " << +rc);
+ }
+ }
+ if (dir.isOpen()) {
+ rc = dir.close();
+ SAL_WARN_IF(
+ rc != osl::FileBase::E_None, "desktop.app",
+ "cannot close directory " << dir.getURL() << ": " << +rc);
+ }
+ rc = osl::Directory::remove(url);
+ SAL_WARN_IF(
+ rc != osl::FileBase::E_None, "desktop.app",
+ "cannot remove directory " << url << ": " << +rc);
+}
+
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 3d85ec29ddd73ed996debdcf118f8c32774362ed
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Oct 10 15:23:33 2014 +0200
filter: stop leaking temp files in xsltfilter test
Change-Id: Icefec168910ba0b059f4b1887ec67cce8505ffd6
diff --git a/filter/qa/cppunit/xslt-test.cxx b/filter/qa/cppunit/xslt-test.cxx
index 1a580d0..f9945ea 100644
--- a/filter/qa/cppunit/xslt-test.cxx
+++ b/filter/qa/cppunit/xslt-test.cxx
@@ -122,6 +122,8 @@ void XsltFilterTest::testXsltCopyNew()
sal_uInt64 size(0);
foo.getSize(size);
CPPUNIT_ASSERT(size > 1000); // check that something happened
+ foo.close();
+ osl_removeFile(tempURL.pData);
}
void XsltFilterTest::testXsltCopyOld()
@@ -182,6 +184,8 @@ void XsltFilterTest::testXsltCopyOld()
sal_uInt64 size(0);
foo.getSize(size);
CPPUNIT_ASSERT(size > 1000); // check that something happened
+ foo.close();
+ osl_removeFile(tempURL.pData);
}
CPPUNIT_TEST_SUITE_REGISTRATION(XsltFilterTest);
More information about the Libreoffice-commits
mailing list