diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-04-28 08:44:53 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-05-01 06:03:10 +0000 |
commit | 315b359bc199fcc9492fa33f573d6c43d22b3b6a (patch) | |
tree | f883e9a5d0477cd7f84475a66c55f86121aa3cfd /tests/auto/widgets/dialogs/qfiledialog2 | |
parent | 3ce2dd391e30bde9387ddf9e84b159dcd0ad3c07 (diff) |
QFileDialog: Stabilize tests.
The init()/cleanup() code in tst_qfiledialog and tst_qfiledialog2
currently differs and fails to clean up the settings file
since it only removes the legacy settings under the Qt group
and instantiates a new QFileDialog while the QSettings class
is still in scope. Also, it has no means of clearing the
setLastVisitedDirectory(), which causes the
tst_QFiledialog::completer() and tst_QFiledialog::history() tests
to interfere, leaving the settings in an invalid state.
tst_qfiledialog2 does not use QStandardPaths::setTestModeEnabled(().
- Ensure the last visited URL is always clean by
making QFileDialogPrivate::setLastVisitedDirectory()
static and calling it from init().
- Introduce a cleanupSettingsFile() function to the tests that
cleans both groups and call it from initTestCase() and cleanup()
to ensure a clean state.
- Add QStandardPaths::setTestModeEnabled() to tst_qfiledialog2.
Fixes sporadic test fails when executing
tst_QFiledialog::completer() and tst_QFiledialog::history()
in a sequence.
Task-number: QTBUG-45764
Change-Id: I24de3caabf77be067b385d64ff11b7a07fe12b72
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'tests/auto/widgets/dialogs/qfiledialog2')
-rw-r--r-- | tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp index 7af62cb2a1..ed34c67aad 100644 --- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp +++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp @@ -88,6 +88,7 @@ public: virtual ~tst_QFileDialog2(); public slots: + void initTestCase(); void init(); void cleanup(); @@ -135,13 +136,13 @@ private slots: void dontShowCompleterOnRoot(); private: - QByteArray userSettings; + void cleanupSettingsFile(); + QTemporaryDir tempDir; }; tst_QFileDialog2::tst_QFileDialog2() - : userSettings() - , tempDir(QDir::tempPath() + "/tst_qfiledialog2.XXXXXX") + : tempDir(QDir::tempPath() + "/tst_qfiledialog2.XXXXXX") { #if defined(Q_OS_WINCE) qApp->setAutoMaximizeThreshold(-1); @@ -152,17 +153,29 @@ tst_QFileDialog2::~tst_QFileDialog2() { } -void tst_QFileDialog2::init() +void tst_QFileDialog2::cleanupSettingsFile() { - QVERIFY(tempDir.isValid()); - - // Save the developers settings so they don't get mad when their sidebar folders are gone. + // clean up the sidebar between each test QSettings settings(QSettings::UserScope, QLatin1String("QtProject")); - settings.beginGroup(QLatin1String("Qt")); - userSettings = settings.value(QLatin1String("filedialog")).toByteArray(); + settings.beginGroup(QLatin1String("FileDialog")); + settings.remove(QString()); + settings.endGroup(); + settings.beginGroup(QLatin1String("Qt")); // Compatibility settings settings.remove(QLatin1String("filedialog")); + settings.endGroup(); +} + +void tst_QFileDialog2::initTestCase() +{ + QVERIFY(tempDir.isValid()); + QStandardPaths::setTestModeEnabled(true); + cleanupSettingsFile(); +} - // populate it with some default settings +void tst_QFileDialog2::init() +{ + QFileDialogPrivate::setLastVisitedDirectory(QUrl()); + // populate the sidebar with some default settings QNonNativeFileDialog fd; #if defined(Q_OS_WINCE) QTest::qWait(1000); @@ -171,9 +184,7 @@ void tst_QFileDialog2::init() void tst_QFileDialog2::cleanup() { - QSettings settings(QSettings::UserScope, QLatin1String("QtProject")); - settings.beginGroup(QLatin1String("Qt")); - settings.setValue(QLatin1String("filedialog"), userSettings); + cleanupSettingsFile(); } #ifdef QT_BUILD_INTERNAL |