summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDavid Faure <faure+bluesystems@kde.org>2013-01-14 23:39:41 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-01-17 17:39:16 +0100
commit2d5fe453793182283e88c1d07d775ff1fed668c3 (patch)
tree6b32b6c833edc7ca6d84a5c3ce583f5e40163b51 /tests
parente993df877131cfafbf1a3578dbef233a3041a82f (diff)
QSaveFile: test the case of an existing, but readonly, target file.
Change-Id: I296d9c2598b8c72e2fd3e6ec80a615364b7eddeb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp25
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;