diff options
Diffstat (limited to 'tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp')
-rw-r--r-- | tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp index 8caccb6da9..78f229a740 100644 --- a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp +++ b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp @@ -84,6 +84,9 @@ private slots: void destroyAfterQCoreApplication(); + void QTBUG2331(); + void QTBUG2331_data() { basicTest_data(); } + private: QString m_tempDirPattern; }; @@ -556,5 +559,29 @@ void tst_QFileSystemWatcher::destroyAfterQCoreApplication() QTest::qWait(30); } +// regression test for QTBUG2331. +// essentially, on windows, directories were not unwatched after being deleted +// from the disk, causing all sorts of interesting problems. +void tst_QFileSystemWatcher::QTBUG2331() +{ + QFETCH(QString, backend); + + QTemporaryDir temporaryDirectory(m_tempDirPattern); + QVERIFY(temporaryDirectory.isValid()); + QFileSystemWatcher watcher; + watcher.setObjectName(QLatin1String("_qt_autotest_force_engine_") + backend); + QVERIFY(watcher.addPath(temporaryDirectory.path())); + + // watch signal + QSignalSpy changedSpy(&watcher, SIGNAL(directoryChanged(QString))); + QVERIFY(changedSpy.isValid()); + + // remove directory, we should get one change signal, and we should no longer + // be watching the directory. + QVERIFY(temporaryDirectory.remove()); + QTRY_COMPARE(changedSpy.count(), 1); + QCOMPARE(watcher.directories(), QStringList()); +} + QTEST_MAIN(tst_QFileSystemWatcher) #include "tst_qfilesystemwatcher.moc" |