summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp')
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp27
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"