summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/dialogs/qfilesystemmodel
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/dialogs/qfilesystemmodel')
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index b426024ad9..e0256d207c 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -127,6 +127,9 @@ private slots:
void roleNames_data();
void roleNames();
+ void permissions_data();
+ void permissions();
+
protected:
bool createFiles(const QString &test_path, const QStringList &initial_files, int existingFileCount = 0, const QStringList &intial_dirs = QStringList());
@@ -1022,6 +1025,52 @@ void tst_QFileSystemModel::roleNames()
QVERIFY(values.contains(roleName));
}
+void tst_QFileSystemModel::permissions_data()
+{
+ QTest::addColumn<int>("permissions");
+ QTest::addColumn<bool>("readOnly");
+
+ static const int permissions[] = {
+ QFile::WriteOwner,
+ QFile::ReadOwner,
+ QFile::WriteOwner|QFile::ReadOwner,
+ };
+#define ROW_NAME(i) qPrintable(QString().sprintf("%s-0%04x", readOnly ? "ro" : "rw", permissions[i]))
+ for (int readOnly = false ; readOnly <= true; ++readOnly)
+ for (size_t i = 0; i < sizeof permissions / sizeof *permissions; ++i)
+ QTest::newRow(ROW_NAME(i)) << permissions[i] << bool(readOnly);
+#undef ROW_NAME
+}
+
+void tst_QFileSystemModel::permissions() // checks QTBUG-20503
+{
+ QFETCH(int, permissions);
+ QFETCH(bool, readOnly);
+
+ const QString tmp = flatDirTestPath;
+ const QString file = tmp + '/' + "f";
+ QVERIFY(createFiles(tmp, QStringList() << "f"));
+
+ QVERIFY(QFile::setPermissions(file, QFile::Permissions(permissions)));
+
+ const QModelIndex root = model->setRootPath(tmp);
+
+ model->setReadOnly(readOnly);
+
+ QCOMPARE(model->isReadOnly(), readOnly);
+
+ QTRY_COMPARE(model->rowCount(root), 1);
+
+ const QFile::Permissions modelPermissions = model->permissions(model->index(0, 0, root));
+ const QFile::Permissions modelFileInfoPermissions = model->fileInfo(model->index(0, 0, root)).permissions();
+ const QFile::Permissions fileInfoPermissions = QFileInfo(file).permissions();
+
+ QCOMPARE(modelPermissions, modelFileInfoPermissions);
+ QCOMPARE(modelFileInfoPermissions, fileInfoPermissions);
+ QCOMPARE(fileInfoPermissions, modelPermissions);
+}
+
+
QTEST_MAIN(tst_QFileSystemModel)
#include "tst_qfilesystemmodel.moc"