summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qfile/tst_qfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/io/qfile/tst_qfile.cpp')
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index 350bff0652..b8f0d29078 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -282,6 +282,8 @@ private slots:
void moveToTrash_data();
void moveToTrash();
+ void stdfilesystem();
+
private:
#ifdef BUILTIN_TESTDATA
QSharedPointer<QTemporaryDir> m_dataDir;
@@ -3812,5 +3814,54 @@ void tst_QFile::moveToTrash()
}
}
+void tst_QFile::stdfilesystem()
+{
+#if QT_CONFIG(cxx17_filesystem)
+ namespace fs = std::filesystem;
+ auto toFSPath = [](const QFile &file) { return fs::path(file.fileName().toStdU16String()); };
+ fs::path path { "./path" };
+ QFile file(path);
+ QCOMPARE(toFSPath(file), path);
+
+ QCOMPARE(path, file.filesystemFileName());
+
+ {
+ QFile parentedFile(path, this);
+ QCOMPARE(file.fileName(), parentedFile.fileName());
+ QCOMPARE(parentedFile.parent(), this);
+ }
+
+ path = path / "filename";
+ file.setFileName(path);
+ QCOMPARE(toFSPath(file), path);
+
+ path = "test-file";
+ file.setFileName(path);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.close();
+
+ path = "tile-fest";
+ QVERIFY(file.rename(path));
+ QVERIFY(fs::exists(path));
+ fs::path linkfile { "test-link" };
+ QVERIFY(file.link(linkfile));
+ QVERIFY(fs::exists(linkfile));
+
+ fs::path copyfile { "copy-file" };
+ QVERIFY(file.copy(copyfile));
+ QVERIFY(fs::exists(copyfile));
+
+ QFileDevice::Permissions p = QFile::permissions(path);
+ QVERIFY(p.testFlag(QFile::WriteUser) || p.testFlag(QFile::WriteOwner)); // some we know for sure
+ if (p.testFlag(QFile::ReadUser))
+ p.setFlag(QFile::ReadUser, false);
+ else if (p.testFlag(QFile::ReadOwner))
+ p.setFlag(QFile::ReadOwner, false);
+ QVERIFY(QFile::setPermissions(path, p));
+#else
+ QSKIP("Not supported");
+#endif
+}
+
QTEST_MAIN(tst_QFile)
#include "tst_qfile.moc"