diff options
author | David Faure <faure+bluesystems@kde.org> | 2013-01-14 23:39:41 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-01-17 17:39:16 +0100 |
commit | 2d5fe453793182283e88c1d07d775ff1fed668c3 (patch) | |
tree | 6b32b6c833edc7ca6d84a5c3ce583f5e40163b51 | |
parent | e993df877131cfafbf1a3578dbef233a3041a82f (diff) |
QSaveFile: test the case of an existing, but readonly, target file.
Change-Id: I296d9c2598b8c72e2fd3e6ec80a615364b7eddeb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-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; |