diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2012-02-15 13:23:22 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-15 18:03:54 +0100 |
commit | 656dff47a6f2c5e53c1bb2e54bf21e053c82c32a (patch) | |
tree | 2ad498bc064e4b8ae291ac547c38d5beb054800e /tests/auto/widgets/dialogs | |
parent | 79e90762748865af9ed3d9260aceaaf69c34d252 (diff) |
Fix tst_QFileDialog2 for Windows 7.
There are no rights for typical user or even administrator to write
directly under c:\ root in windows without rights elevation, so
completionOnLevelAfterRoot() test case failed. Changed the test case
to use an existing directory.
Task-number: QTBUG-24289
Change-Id: I6a8dfc9d1d6ae798b3b9049c542b45fdbdbd9a8c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Diffstat (limited to 'tests/auto/widgets/dialogs')
-rw-r--r-- | tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp index 472469e797..7ab3100cab 100644 --- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp +++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp @@ -559,9 +559,39 @@ void tst_QFileDialog2::completionOnLevelAfterRoot() { QNonNativeFileDialog fd; #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) - fd.setDirectory("C:"); + fd.setDirectory("C:/"); QDir current = fd.directory(); - current.mkdir("completionOnLevelAfterRootTest"); + QStringList entryList = current.entryList(QStringList(), QDir::Dirs); + // Find a suitable test dir under c:-root: + // - At least 6 characters long + // - Ascii, letters only + // - No another dir with same start + QString testDir; + foreach (const QString &entry, entryList) { + if (entry.size() > 5 && QString(entry.toAscii()).compare(entry) == 0) { + bool invalid = false; + for (int i = 0; i < 5; i++) { + if (!entry.at(i).isLetter()) { + invalid = true; + break; + } + } + if (!invalid) { + foreach (const QString &check, entryList) { + if (check.startsWith(entry.left(5)) && check != entry) { + invalid = true; + break; + } + } + } + if (!invalid) { + testDir = entry; + break; + } + } + } + if (testDir.isEmpty()) + QSKIP("This test requires to have an unique directory of at least six ascii characters under c:/"); #else fd.setFilter(QDir::Hidden | QDir::AllDirs | QDir::Files | QDir::System); fd.setDirectory("/"); @@ -574,11 +604,8 @@ void tst_QFileDialog2::completionOnLevelAfterRoot() QTest::qWait(2000); #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) //I love testlib :D - QTest::keyClick(edit, Qt::Key_C); - QTest::keyClick(edit, Qt::Key_O); - QTest::keyClick(edit, Qt::Key_M); - QTest::keyClick(edit, Qt::Key_P); - QTest::keyClick(edit, Qt::Key_L); + for (int i = 0; i < 5; i++) + QTest::keyClick(edit, testDir.at(i).toLower().toAscii() - 'a' + Qt::Key_A); #else QTest::keyClick(edit, Qt::Key_E); QTest::keyClick(edit, Qt::Key_T); @@ -587,8 +614,7 @@ void tst_QFileDialog2::completionOnLevelAfterRoot() QTest::keyClick(edit->completer()->popup(), Qt::Key_Down); QTest::qWait(200); #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) - QCOMPARE(edit->text(), QString("completionOnLevelAfterRootTest")); - current.rmdir("completionOnLevelAfterRootTest"); + QCOMPARE(edit->text(), testDir); #else QTRY_COMPARE(edit->text(), QString("etc")); #endif |