summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-09-30 11:39:49 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-30 13:37:58 +0200
commit99b3e68f2070f1d0c0796356d681db528edee688 (patch)
tree5fba7225cea1aa43254585c2420718d0717ca71c /tests
parente5ae6d896bd55e7c80083982fe2243a49c2c80f8 (diff)
tst_qsavefile: Check temporary dir and output open errors.
Change-Id: Id28306ad414050a37b7779525f36edc3e15281b5 Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp39
1 files changed, 27 insertions, 12 deletions
diff --git a/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp b/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp
index d9292b8460..44b1e0ec2a 100644
--- a/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp
+++ b/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp
@@ -73,13 +73,21 @@ private slots:
void transactionalWriteErrorRenaming();
};
+static inline QByteArray msgCannotOpen(const QFileDevice &f)
+{
+ QString result = QStringLiteral("Cannot open ") + QDir::toNativeSeparators(f.fileName())
+ + QStringLiteral(": ") + f.errorString();
+ return result.toLocal8Bit();
+}
+
void tst_QSaveFile::transactionalWrite()
{
QTemporaryDir dir;
+ QVERIFY(dir.isValid());
const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
QFile::remove(targetFile);
QSaveFile file(targetFile);
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QVERIFY(file.isOpen());
QCOMPARE(file.fileName(), targetFile);
QVERIFY(!QFile::exists(targetFile));
@@ -102,27 +110,29 @@ void tst_QSaveFile::saveTwice()
// Check that we can reuse a QSaveFile object
// (and test the case of an existing target file)
QTemporaryDir dir;
+ QVERIFY(dir.isValid());
const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
QSaveFile file(targetFile);
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QCOMPARE(file.write("Hello"), Q_INT64_C(5));
QVERIFY2(file.commit(), qPrintable(file.errorString()));
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QCOMPARE(file.write("World"), Q_INT64_C(5));
QVERIFY2(file.commit(), qPrintable(file.errorString()));
QFile reader(targetFile);
- QVERIFY(reader.open(QIODevice::ReadOnly));
+ QVERIFY2(reader.open(QIODevice::ReadOnly), msgCannotOpen(reader).constData());
QCOMPARE(QString::fromLatin1(reader.readAll()), QString::fromLatin1("World"));
}
void tst_QSaveFile::textStreamManualFlush()
{
QTemporaryDir dir;
+ QVERIFY(dir.isValid());
const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
QSaveFile file(targetFile);
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QTextStream ts(&file);
ts << "Manual flush";
@@ -140,9 +150,10 @@ void tst_QSaveFile::textStreamManualFlush()
void tst_QSaveFile::textStreamAutoFlush()
{
QTemporaryDir dir;
+ QVERIFY(dir.isValid());
const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
QSaveFile file(targetFile);
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QTextStream ts(&file);
ts << "Auto-flush.";
@@ -188,6 +199,7 @@ void tst_QSaveFile::transactionalWriteNoPermissionsOnDir()
QTemporaryDir dir;
+ QVERIFY(dir.isValid());
QVERIFY(QFile(dir.path()).setPermissions(QFile::ReadOwner | QFile::ExeOwner));
PermissionRestorer permissionRestorer(dir.path());
@@ -212,7 +224,7 @@ void tst_QSaveFile::transactionalWriteNoPermissionsOnDir()
file.setDirectWriteFallback(directWriteFallback);
QCOMPARE(file.directWriteFallback(), directWriteFallback);
if (directWriteFallback) {
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QCOMPARE((int)file.error(), (int)QFile::NoError);
QCOMPARE(file.write("World"), Q_INT64_C(5));
QVERIFY(file.commit());
@@ -222,7 +234,7 @@ void tst_QSaveFile::transactionalWriteNoPermissionsOnDir()
QCOMPARE(QString::fromLatin1(reader.readAll()), QString::fromLatin1("World"));
reader.close();
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QCOMPARE((int)file.error(), (int)QFile::NoError);
QCOMPARE(file.write("W"), Q_INT64_C(1));
file.cancelWriting(); // no effect, as per the documentation
@@ -241,9 +253,10 @@ void tst_QSaveFile::transactionalWriteNoPermissionsOnFile()
{
// Setup an existing but readonly file
QTemporaryDir dir;
+ QVERIFY(dir.isValid());
const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
QFile file(targetFile);
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QCOMPARE(file.write("Hello"), Q_INT64_C(5));
file.close();
file.setPermissions(QFile::ReadOwner);
@@ -260,10 +273,11 @@ void tst_QSaveFile::transactionalWriteNoPermissionsOnFile()
void tst_QSaveFile::transactionalWriteCanceled()
{
QTemporaryDir dir;
+ QVERIFY(dir.isValid());
const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
QFile::remove(targetFile);
QSaveFile file(targetFile);
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QTextStream ts(&file);
ts << "This writing operation will soon be canceled.\n";
@@ -283,9 +297,10 @@ void tst_QSaveFile::transactionalWriteCanceled()
void tst_QSaveFile::transactionalWriteErrorRenaming()
{
QTemporaryDir dir;
+ QVERIFY(dir.isValid());
const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
QSaveFile file(targetFile);
- QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY2(file.open(QIODevice::WriteOnly), msgCannotOpen(file).constData());
QCOMPARE(file.write("Hello"), qint64(5));
QVERIFY(!QFile::exists(targetFile));
@@ -320,7 +335,7 @@ void tst_QSaveFile::transactionalWriteErrorRenaming()
#else
// Windows: Make rename() fail for lack of permissions on an existing target file
QFile existingTargetFile(targetFile);
- QVERIFY(existingTargetFile.open(QIODevice::WriteOnly));
+ QVERIFY2(existingTargetFile.open(QIODevice::WriteOnly), msgCannotOpen(existingTargetFile).constData());
QCOMPARE(file.write("Target"), qint64(6));
existingTargetFile.close();
QVERIFY(existingTargetFile.setPermissions(QFile::ReadOwner));