summaryrefslogtreecommitdiffstats
path: root/tests/auto/sql
diff options
context:
space:
mode:
authorLeander Beernaert <leander.beernaert@qt.io>2019-11-14 13:03:46 +0100
committerLeander Beernaert <leander.beernaert@qt.io>2019-11-19 13:53:21 +0100
commit26e876912435bdafbca2b425af43824d7ec5b876 (patch)
treeb7ee83cdd9de18ce5970bab0bb217a972d3d2445 /tests/auto/sql
parent7a6c6da2ebbfef33f7284ce5c96aa0c3acabc6bc (diff)
parentbac999f38ca10147832846f6d7df1e4a051d3760 (diff)
Merge remote-tracking branch 'origin/dev' into wip/cmake
Diffstat (limited to 'tests/auto/sql')
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp115
1 files changed, 12 insertions, 103 deletions
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
index ef58d612c9..1a5aa63489 100644
--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
@@ -185,19 +185,12 @@ private slots:
void mysql_timeType_data() { generic_data("QMYSQL"); }
void mysql_timeType();
-#ifdef NOT_READY_YET
- void task_229811();
- void task_229811_data() { generic_data(); }
- void task_234422_data() { generic_data(); }
- void task_234422();
-#endif
void task_217003_data() { generic_data(); }
void task_217003();
void task_250026_data() { generic_data("QODBC"); }
void task_250026();
- void task_205701_data() { generic_data("QMYSQL"); }
- void task_205701();
+ void crashQueryOnCloseDatabase();
void task_233829_data() { generic_data("QPSQL"); }
void task_233829();
@@ -311,6 +304,8 @@ void tst_QSqlQuery::init()
void tst_QSqlQuery::cleanup()
{
+ if (QTest::currentTestFunction() == QLatin1String("crashQueryOnCloseDatabase"))
+ return;
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
@@ -3433,105 +3428,19 @@ void tst_QSqlQuery::task_250026()
QCOMPARE( q.value( 0 ).toString().length(), data1026.length() );
}
-void tst_QSqlQuery::task_205701()
+void tst_QSqlQuery::crashQueryOnCloseDatabase()
{
- QSqlDatabase qsdb = QSqlDatabase::addDatabase("QMYSQL", "atest");
- qsdb.setHostName("test");
- qsdb.setDatabaseName("test");
- qsdb.setUserName("test");
- qsdb.setPassword("test");
- qsdb.open();
-
-// {
- QSqlQuery query(qsdb);
-// }
- QSqlDatabase::removeDatabase("atest");
-}
-
-#ifdef NOT_READY_YET
-// For task: 229811
-void tst_QSqlQuery::task_229811()
-{
- QFETCH( QString, dbName );
- QSqlDatabase db = QSqlDatabase::database( dbName );
- CHECK_DATABASE( db );
-
- if (!db.driverName().startsWith( "QODBC" )) return;
-
- QSqlQuery q( db );
-
- const QString tableName(qTableName("task_229811", __FILE__, db));
-
- if ( !q.exec( "CREATE TABLE " + tableName + " (Word varchar(20))" ) ) {
- qDebug() << "Warning" << q.lastError();
- }
-
- QVERIFY_SQL( q, exec( "INSERT INTO " + tableName + " values ('Albert')" ) );
- QVERIFY_SQL( q, exec( "INSERT INTO " + tableName + " values ('Beehive')" ) );
- QVERIFY_SQL( q, exec( "INSERT INTO " + tableName + " values ('Alimony')" ) );
- QVERIFY_SQL( q, exec( "INSERT INTO " + tableName + " values ('Bohemian')" ) );
- QVERIFY_SQL( q, exec( "INSERT INTO " + tableName + " values ('AllStars')" ) );
-
-
- QString stmt = "SELECT * FROM " + tableName + " WHERE Word LIKE :name";
- QVERIFY_SQL(q,prepare(stmt));
- q.bindValue(":name", "A%");
- QVERIFY_SQL(q,exec());
-
- QVERIFY(q.isActive());
- QVERIFY(q.isSelect());
- QVERIFY(q.first());
-
- QSqlRecord rec = q.record();
- QCOMPARE(rec.field(0).value().toString(), QString("Albert"));
- QVERIFY(q.next());
- rec = q.record();
- QCOMPARE(rec.field(0).value().toString(), QString("Alimony"));
- QVERIFY(q.next());
- rec = q.record();
- QCOMPARE(rec.field(0).value().toString(),QString("AllStars"));
-
- q.exec("DROP TABLE " + tableName );
-}
-
-void tst_QSqlQuery::task_234422()
-{
- QFETCH( QString, dbName );
- QSqlDatabase db = QSqlDatabase::database( dbName );
- CHECK_DATABASE( db );
-
- QSqlQuery query(db);
- QStringList m_airlines;
- QStringList m_countries;
-
- m_airlines << "Lufthansa" << "SAS" << "United" << "KLM" << "Aeroflot";
- m_countries << "DE" << "SE" << "US" << "NL" << "RU";
-
- const QString tableName(qTableName("task_234422", __FILE__, db));
-
- QVERIFY_SQL(query,exec("CREATE TABLE " + tableName + " (id int primary key, "
- "name varchar(20), homecountry varchar(2))"));
- for (int i = 0; i < m_airlines.count(); ++i) {
- QVERIFY(query.exec(QString("INSERT INTO " + tableName + " values(%1, '%2', '%3')")
- .arg(i).arg(m_airlines[i], m_countries[i])));
+ for (const auto &dbName : qAsConst(dbs.dbNames)) {
+ QSqlDatabase clonedDb = QSqlDatabase::cloneDatabase(
+ QSqlDatabase::database(dbName), "crashTest");
+ qDebug() << "Testing crash in sqlquery dtor for driver" << clonedDb.driverName();
+ QVERIFY(clonedDb.open());
+ QSqlQuery q(clonedDb);
+ clonedDb.close();
+ QSqlDatabase::removeDatabase("crashTest");
}
-
- QVERIFY_SQL(query, exec("SELECT name FROM " + tableName));
- QVERIFY(query.isSelect());
- QVERIFY(query.first());
- QVERIFY(query.next());
- QCOMPARE(query.at(), 1);
-
- QSqlQuery query2(query);
-
- QVERIFY_SQL(query2,exec());
- QVERIFY(query2.first());
- QCOMPARE(query2.at(), 0);
- QCOMPARE(query.at(), 1);
}
-#endif
-
void tst_QSqlQuery::task_233829()
{
QFETCH( QString, dbName );