From 2d5fe453793182283e88c1d07d775ff1fed668c3 Mon Sep 17 00:00:00 2001 From: David Faure Date: Mon, 14 Jan 2013 23:39:41 +0100 Subject: QSaveFile: test the case of an existing, but readonly, target file. Change-Id: I296d9c2598b8c72e2fd3e6ec80a615364b7eddeb Reviewed-by: Thiago Macieira --- tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp | 25 +++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'tests') 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; -- cgit v1.2.3