summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp')
-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;