┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tests/viewpropertiestest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/viewpropertiestest.cpp')
-rw-r--r--src/tests/viewpropertiestest.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/tests/viewpropertiestest.cpp b/src/tests/viewpropertiestest.cpp
index f90d57b88..1d9e886e1 100644
--- a/src/tests/viewpropertiestest.cpp
+++ b/src/tests/viewpropertiestest.cpp
@@ -109,30 +109,45 @@ void ViewPropertiesTest::testReadOnlyDirectory()
QVERIFY(QFile(localFolder).setPermissions(QFileDevice::ReadOwner));
QScopedPointer<ViewProperties> props(new ViewProperties(testDirUrl));
- const QString destinationDir = props->destinationDir(QStringLiteral("local")) + localFolder;
-
QVERIFY(props->isAutoSaveEnabled());
props->setSortRole("someNewSortRole");
props.reset();
+#ifdef Q_OS_WIN
+ // On Windows the read-only attribute is not honored on directories: files and
+ // Alternate Data Streams can still be created inside them. The properties are
+ // therefore stored locally rather than redirected to the destination directory.
+ KFileMetaData::UserMetaData metadata(localFolder);
+ if (metadata.isSupported()) {
+ QVERIFY(metadata.hasAttribute("kde.fm.viewproperties#1"));
+ } else {
+ QVERIFY(QFile::exists(dotDirectoryFile));
+ }
+#else
+ // On a directory without write permission the properties are redirected to the
+ // destination directory, leaving the local directory untouched.
+ const QString destinationDir = props->destinationDir(QStringLiteral("local")) + localFolder;
QVERIFY(QDir(destinationDir).exists());
QVERIFY(!QFile::exists(dotDirectoryFile));
KFileMetaData::UserMetaData metadata(localFolder);
- const QString viewProperties = metadata.attribute(QStringLiteral("kde.fm.viewproperties#1"));
- QVERIFY(viewProperties.isEmpty());
+ QVERIFY(metadata.attribute(QStringLiteral("kde.fm.viewproperties#1")).isEmpty());
+#endif
+ // The stored value round-trips regardless of where it was written.
props.reset(new ViewProperties(testDirUrl));
QVERIFY(props->isAutoSaveEnabled());
QCOMPARE(props->sortRole(), "someNewSortRole");
props.reset();
- metadata = KFileMetaData::UserMetaData(destinationDir);
- if (metadata.isSupported()) {
- QVERIFY(metadata.hasAttribute("kde.fm.viewproperties#1"));
+#ifndef Q_OS_WIN
+ KFileMetaData::UserMetaData destMetadata(destinationDir);
+ if (destMetadata.isSupported()) {
+ QVERIFY(destMetadata.hasAttribute("kde.fm.viewproperties#1"));
} else {
QVERIFY(QFile::exists(destinationDir + "/.directory"));
}
+#endif
// un-restrict write permissions
QFile(localFolder).setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner);