diff options
Diffstat (limited to 'tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp')
-rw-r--r-- | tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp b/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp index 61fef80af7..4d62168473 100644 --- a/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp +++ b/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp @@ -66,7 +66,8 @@ private slots: void textStreamManualFlush(); void textStreamAutoFlush(); void saveTwice(); - void transactionalWriteNoPermissions(); + void transactionalWriteNoPermissionsOnDir(); + void transactionalWriteNoPermissionsOnFile(); void transactionalWriteCanceled(); void transactionalWriteErrorRenaming(); }; @@ -152,7 +153,7 @@ void tst_QSaveFile::textStreamAutoFlush() QFile::remove(targetFile); } -void tst_QSaveFile::transactionalWriteNoPermissions() +void tst_QSaveFile::transactionalWriteNoPermissionsOnDir() { #ifdef Q_OS_UNIX if (::geteuid() == 0) @@ -169,6 +170,26 @@ void tst_QSaveFile::transactionalWriteNoPermissions() #endif } +void tst_QSaveFile::transactionalWriteNoPermissionsOnFile() +{ + // Setup an existing but readonly file + QTemporaryDir dir; + const QString targetFile = dir.path() + QString::fromLatin1("/outfile"); + QFile file(targetFile); + QVERIFY(file.open(QIODevice::WriteOnly)); + QCOMPARE(file.write("Hello"), Q_INT64_C(5)); + file.close(); + file.setPermissions(QFile::ReadOwner); + QVERIFY(!file.open(QIODevice::WriteOnly)); + + // Try saving into it + { + QSaveFile saveFile(targetFile); + QVERIFY(!saveFile.open(QIODevice::WriteOnly)); // just like QFile + } + QVERIFY(file.exists()); +} + void tst_QSaveFile::transactionalWriteCanceled() { QTemporaryDir dir; |