summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp')
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
index 28cf7a904a..6eb6f83d2a 100644
--- a/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
+++ b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
@@ -92,6 +92,7 @@ private slots:
void createNativeFile();
void QTBUG_4796_data();
void QTBUG_4796();
+ void guaranteeUnique();
};
void tst_QTemporaryFile::initTestCase()
@@ -782,5 +783,39 @@ void tst_QTemporaryFile::QTBUG_4796()
cleaner.reset();
}
+void tst_QTemporaryFile::guaranteeUnique()
+{
+ QDir dir(QDir::tempPath());
+ QString takenFileName;
+
+ // First pass. See which filename QTemporaryFile will try first.
+ {
+ // Fix the random seed.
+ qsrand(1135);
+ QTemporaryFile tmpFile("testFile1.XXXXXX");
+ tmpFile.open();
+ takenFileName = tmpFile.fileName();
+ QVERIFY(QFile::exists(takenFileName));
+ }
+
+ QVERIFY(!QFile::exists(takenFileName));
+
+ // Create a directory with same name.
+ QVERIFY(dir.mkdir(takenFileName));
+
+ // Second pass, now we have blocked its first attempt with a directory.
+ {
+ // Fix the random seed.
+ qsrand(1135);
+ QTemporaryFile tmpFile("testFile1.XXXXXX");
+ QVERIFY(tmpFile.open());
+ QString uniqueFileName = tmpFile.fileName();
+ QVERIFY(QFileInfo(uniqueFileName).isFile());
+ QVERIFY(uniqueFileName != takenFileName);
+ }
+
+ QVERIFY(dir.rmdir(takenFileName));
+}
+
QTEST_MAIN(tst_QTemporaryFile)
#include "tst_qtemporaryfile.moc"