uonedb-qt team mailing list archive
-
uonedb-qt team
-
Mailing list archive
-
Message #00324
[Merge] lp:~kalikiana/u1db-qt/parentPaths into lp:u1db-qt
Christian Dywan has proposed merging lp:~kalikiana/u1db-qt/parentPaths into lp:u1db-qt.
Commit message:
Create parent folder for full database path
Requested reviews:
PS Jenkins bot (ps-jenkins): continuous-integration
U1DB Qt developers (uonedb-qt)
Related bugs:
Bug #1390166 in U1DB Qt/ QML: "out of memory when creating db in non existent directory"
https://bugs.launchpad.net/u1db-qt/+bug/1390166
For more details, see:
https://code.launchpad.net/~kalikiana/u1db-qt/parentPaths/+merge/241085
--
https://code.launchpad.net/~kalikiana/u1db-qt/parentPaths/+merge/241085
Your team U1DB Qt developers is requested to review the proposed merge of lp:~kalikiana/u1db-qt/parentPaths into lp:u1db-qt.
=== modified file 'src/database.cpp'
--- src/database.cpp 2014-07-09 22:39:59 +0000
+++ src/database.cpp 2014-11-07 14:33:31 +0000
@@ -145,11 +145,16 @@
QString absolutePath(QDir(dataPath).absoluteFilePath(path));
QString parent(QFileInfo(absolutePath).dir().path());
if (!QDir().mkpath(parent))
- qWarning() << "Failed to make data folder" << parent;
+ setError(QString("Failed to make data folder %1").arg(parent));
m_db.setDatabaseName(absolutePath);
}
else
- m_db.setDatabaseName(path);
+ {
+ QDir parent(QFileInfo(path).dir());
+ if (!parent.mkpath(parent.path()))
+ setError(QString("Failed to make parent folder %1").arg(parent.path()));
+ m_db.setDatabaseName(path);
+ }
if (!m_db.open())
return setError(QString("Failed to open %1: %2").arg(path).arg(m_db.lastError().text()));
=== modified file 'tests/CMakeLists.txt'
--- tests/CMakeLists.txt 2014-01-24 14:00:15 +0000
+++ tests/CMakeLists.txt 2014-11-07 14:33:31 +0000
@@ -20,7 +20,7 @@
${U1DB_QT_LIBNAME}
)
set_target_properties(test-database PROPERTIES COMPILE_FLAGS -fPIC)
-add_test(NAME test-database COMMAND "dbus-test-runner" "--task" "${CMAKE_CURRENT_BINARY_DIR}/test-database" "-p" "-xunitxml" "-p" "-o" "-p" "test-database-xunit.xml")
+add_test(NAME test-database COMMAND "dbus-test-runner" "--task" "${CMAKE_CURRENT_BINARY_DIR}/test-database" "-p" "-xunitxml" "-p" "-o" "-p" "test-database-xunit.xml" "-p" "-o" "-p" "-,txt")
set_property(TEST test-database PROPERTY ENVIRONMENT "LD_LIBRARY_PATH=.")
set_property(TEST test-database PROPERTY ENVIRONMENT "QT_QPA_PLATFORM=minimal")
add_dependencies(check test-database)
=== modified file 'tests/test-database.cpp'
--- tests/test-database.cpp 2013-04-22 13:29:20 +0000
+++ tests/test-database.cpp 2014-11-07 14:33:31 +0000
@@ -33,29 +33,54 @@
private Q_SLOTS:
void initTestCase()
{
- }
-
- void synchronizedTest()
- {
while(false)
qApp->processEvents();
+ }
+ void testCanSetPath()
+ {
Database db;
QCOMPARE(db.getPath(), QString(""));
QSignalSpy modelReset(&db, SIGNAL(pathChanged(const QString&)));
QTemporaryFile file;
db.setPath(file.fileName());
QCOMPARE(db.getPath(), file.fileName());
-
- Index index;
- index.setDatabase(&db);
- index.setName("py-phone-number");
- index.setExpression(QStringList("managers.phone_number"));
+ }
+
+ void testNonExistingParentFolder()
+ {
+ Database db;
+ QTemporaryFile file("spamXXXXXX");
+ file.setAutoRemove(false);
+ QCOMPARE(file.open(), true);
+ QString subfolder(file.fileName() + "/eggs");
+ QFile::remove(file.fileName());
+ db.setPath(subfolder);
+ QCOMPARE(db.getPath(), subfolder);
+ QVERIFY(db.lastError().isEmpty());
+ }
+
+ void testCanSetIndex()
+ {
+ Database db;
+ Index index;
+ index.setDatabase(&db);
+ index.setName("py-name-phone");
+ index.setExpression(QStringList() << "gents.name" << "gents.phone");
+ }
+
+ void testCanSetQuery()
+ {
+ Database db;
+ Index index;
+ index.setDatabase(&db);
+ index.setName("by-date");
+ index.setExpression(QStringList() << "date" << "sports" << "software");
Query query;
query.setIndex(&index);
- query.setQuery("*");
- }
+ query.setQuery(QStringList() << "2014*" << "basketball" << "linux");
+ }
void cleanupTestCase()
{