diff options
author | Leander Beernaert <leander.beernaert@qt.io> | 2019-11-14 13:03:46 +0100 |
---|---|---|
committer | Leander Beernaert <leander.beernaert@qt.io> | 2019-11-19 13:53:21 +0100 |
commit | 26e876912435bdafbca2b425af43824d7ec5b876 (patch) | |
tree | b7ee83cdd9de18ce5970bab0bb217a972d3d2445 /tests/auto/sql | |
parent | 7a6c6da2ebbfef33f7284ce5c96aa0c3acabc6bc (diff) | |
parent | bac999f38ca10147832846f6d7df1e4a051d3760 (diff) |
Merge remote-tracking branch 'origin/dev' into wip/cmake
Change-Id: Ifecc2d9db396d783124df8567553ba5f846f30bb
Diffstat (limited to 'tests/auto/sql')
-rw-r--r-- | tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 115 |
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 ); |