[Libreoffice-commits] core.git: dbaccess/CppunitTest_dbaccess_firebird_test.mk dbaccess/qa include/unotools unotools/source
Stephan Bergmann
sbergman at redhat.com
Fri Dec 15 22:03:39 UTC 2017
dbaccess/CppunitTest_dbaccess_firebird_test.mk | 1
dbaccess/qa/unit/dbtest_base.cxx | 29 +++++++++++++++++++++++--
dbaccess/qa/unit/firebird.cxx | 3 +-
include/unotools/tempfile.hxx | 5 +---
unotools/source/ucbhelper/tempfile.cxx | 9 +++++++
5 files changed, 41 insertions(+), 6 deletions(-)
New commits:
commit 15d134b4f57e66faa8bcf538a08db98dc9204c54
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Dec 15 15:26:27 2017 +0100
Make temp copy of dbaccess/qa/unit/data/firebird_empty.odb for testing
...in CppunitTest_dbaccess_firebird_test. Otherwise, the test would fail with
> Test name: FirebirdTest::testEmptyDBConnection
> An uncaught exception of type com.sun.star.sdbc.SQLException
> - The connection can not be established. No storage or URL was given.
if dbaccess/qa/unit/data/firebird_empty.odb is read-only, as
DocumentStorageAccess::impl_openSubStorage_nothrow
(dbaccess/source/core/dataaccess/ModelImpl.cxx) takes
m_pModelImplementation->m_bDocumentReadOnly into account and returns a null
xStorage.
Adds a move ctor to utl::TempFile (thus causing copy ctor and copy assignment op
to be implicitly deleted), but leaves any move assignment op undeclared for now,
as none happens to be needed (yet).
Change-Id: I6f9eff07eb54f1364a0560ffa4cf1f676a319d16
Reviewed-on: https://gerrit.libreoffice.org/46561
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
diff --git a/dbaccess/CppunitTest_dbaccess_firebird_test.mk b/dbaccess/CppunitTest_dbaccess_firebird_test.mk
index 5652e6622d76..5065520993e2 100644
--- a/dbaccess/CppunitTest_dbaccess_firebird_test.mk
+++ b/dbaccess/CppunitTest_dbaccess_firebird_test.mk
@@ -25,6 +25,7 @@ $(eval $(call gb_CppunitTest_use_libraries,dbaccess_firebird_test, \
svt \
test \
unotest \
+ utl \
xo \
))
diff --git a/dbaccess/qa/unit/dbtest_base.cxx b/dbaccess/qa/unit/dbtest_base.cxx
index 86914faee5c2..3541715f6b49 100644
--- a/dbaccess/qa/unit/dbtest_base.cxx
+++ b/dbaccess/qa/unit/dbtest_base.cxx
@@ -7,9 +7,13 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+#include <sal/config.h>
+
+#include <cppunit/TestAssert.h>
+
#include <comphelper/processfactory.hxx>
#include <test/unoapi_test.hxx>
-
+#include <unotools/tempfile.hxx>
#include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp>
#include <com/sun/star/sdbc/XConnection.hpp>
#include <com/sun/star/sdbc/XDataSource.hpp>
@@ -25,20 +29,41 @@ class DBTestBase
public:
DBTestBase() : UnoApiTest("dbaccess/qa/unit/data") {};
+ utl::TempFile createTempCopy(OUString const & pathname);
+
uno::Reference< XOfficeDatabaseDocument >
getDocumentForFileName(const OUString &sFileName);
+ uno::Reference<XOfficeDatabaseDocument> getDocumentForUrl(OUString const & url);
+
uno::Reference< XConnection >
getConnectionForDocument(
uno::Reference< XOfficeDatabaseDocument > const & xDocument);
};
+utl::TempFile DBTestBase::createTempCopy(OUString const & pathname) {
+ OUString url;
+ createFileURL(pathname, url);
+ utl::TempFile tmp;
+ tmp.EnableKillingFile();
+ auto const e = osl::File::copy(url, tmp.GetURL());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ (OUStringToOString("<" + url + "> -> <" + tmp.GetURL() + ">", RTL_TEXTENCODING_UTF8)
+ .getStr()),
+ osl::FileBase::E_None, e);
+ return tmp;
+}
+
uno::Reference< XOfficeDatabaseDocument >
DBTestBase::getDocumentForFileName(const OUString &sFileName)
{
OUString sFilePath;
createFileURL(sFileName, sFilePath);
- uno::Reference< lang::XComponent > xComponent (loadFromDesktop(sFilePath));
+ return getDocumentForUrl(sFilePath);
+}
+
+uno::Reference<XOfficeDatabaseDocument> DBTestBase::getDocumentForUrl(OUString const & url) {
+ uno::Reference< lang::XComponent > xComponent (loadFromDesktop(url));
CPPUNIT_ASSERT(xComponent.is());
uno::Reference< XOfficeDatabaseDocument > xDocument(xComponent, UNO_QUERY);
diff --git a/dbaccess/qa/unit/firebird.cxx b/dbaccess/qa/unit/firebird.cxx
index 16a4fb60e800..f7361ac76548 100644
--- a/dbaccess/qa/unit/firebird.cxx
+++ b/dbaccess/qa/unit/firebird.cxx
@@ -51,8 +51,9 @@ void FirebirdTest::setUp()
*/
void FirebirdTest::testEmptyDBConnection()
{
+ auto const tmp = createTempCopy("firebird_empty.odb");
uno::Reference< XOfficeDatabaseDocument > xDocument =
- getDocumentForFileName("firebird_empty.odb");
+ getDocumentForUrl(tmp.GetURL());
getConnectionForDocument(xDocument);
diff --git a/include/unotools/tempfile.hxx b/include/unotools/tempfile.hxx
index 9f5ac4c45dab..791b51573f29 100644
--- a/include/unotools/tempfile.hxx
+++ b/include/unotools/tempfile.hxx
@@ -49,9 +49,6 @@ class UNOTOOLS_DLLPUBLIC TempFile
bool bIsDirectory;
bool bKillingFileEnabled;
- TempFile( const TempFile& ) = delete;
- TempFile& operator=(const TempFile&) = delete;
-
public:
/**
Create a temporary file or directory, in the default tempfile folder or if possible in a given folder.
@@ -72,6 +69,8 @@ public:
TempFile( const OUString& rLeadingChars, bool _bStartWithZero=true, const OUString* pExtension=nullptr,
const OUString* pParent=nullptr, bool bCreateParentDirs=false );
+ TempFile(TempFile && other);
+
/**
TempFile will be removed from disk in dtor if EnableKillingFile(true) was called before.
Temporary directories will be removed recursively in that case.
diff --git a/unotools/source/ucbhelper/tempfile.cxx b/unotools/source/ucbhelper/tempfile.cxx
index 4df84af0cb6a..eb099a43dca9 100644
--- a/unotools/source/ucbhelper/tempfile.cxx
+++ b/unotools/source/ucbhelper/tempfile.cxx
@@ -20,6 +20,7 @@
#include <sal/config.h>
#include <cassert>
+#include <utility>
#include <com/sun/star/ucb/UniversalContentBroker.hpp>
#include <comphelper/processfactory.hxx>
@@ -366,6 +367,14 @@ TempFile::TempFile( const OUString& rLeadingChars, bool _bStartWithZero,
true, true, bCreateParentDirs );
}
+TempFile::TempFile(TempFile && other):
+ aName(std::move(other.aName)), pStream(other.pStream), bIsDirectory(other.bIsDirectory),
+ bKillingFileEnabled(other.bKillingFileEnabled)
+{
+ other.pStream = nullptr;
+ other.bKillingFileEnabled = false;
+}
+
TempFile::~TempFile()
{
delete pStream;
More information about the Libreoffice-commits
mailing list