QSaveFile: test the case of an existing, but readonly, target file.

Change-Id: I296d9c2598b8c72e2fd3e6ec80a615364b7eddeb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
David Faure 2013-01-14 23:39:41 +01:00 committed by The Qt Project
parent e993df8771
commit 2d5fe45379
1 changed files with 23 additions and 2 deletions

View File

@ -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;