summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-09-06 10:31:09 -0700
committerThiago Macieira <thiago.macieira@intel.com>2022-09-16 08:37:50 -0700
commit864fbd65828e0e84e588c896d778ae523a30e97b (patch)
treeb45ca811638759d640c960d311b9b3beb019621c /tests
parent0193b4d2193b989d44dd28deda6dce12ae11ca4e (diff)
tst_QFile::setPermissions/Unix: test both chmod() and fchmod()
On Unix, we have the fchmod(2) system call that changes the permissions of an open file descriptor. This commit adds a test for that, by not closing the QFile before setPermissions(). Pick-to: 6.4 Change-Id: If5d5ef6220874ae8858efffd171255b9f20ed501 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index df3f13dc39..ee96797445 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -172,6 +172,7 @@ private slots:
void permissionsNtfs_data();
void permissionsNtfs();
#endif
+ void setPermissions_data();
void setPermissions();
void copy();
void copyAfterFail();
@@ -1421,11 +1422,20 @@ void tst_QFile::permissionsNtfs()
}
#endif
+void tst_QFile::setPermissions_data()
+{
+ QTest::addColumn<bool>("opened");
+ QTest::newRow("closed") << false; // chmod()
+ QTest::newRow("opened") << true; // fchmod()
+}
+
void tst_QFile::setPermissions()
{
#ifdef Q_OS_QNX
QSKIP("This test doesn't pass on QNX and no one has cared to investigate.");
#endif
+ QFETCH(bool, opened);
+
auto remove = []() { QFile::remove("createme.txt"); };
auto guard = qScopeGuard(remove);
remove();
@@ -1434,7 +1444,8 @@ void tst_QFile::setPermissions()
QFile f("createme.txt");
QVERIFY2(f.open(QIODevice::WriteOnly | QIODevice::Truncate), msgOpenFailed(f).constData());
f.putChar('a');
- f.close();
+ if (!opened)
+ f.close();
QFile::Permissions perms(QFile::WriteUser | QFile::ReadUser);
QVERIFY(f.setPermissions(QFile::ReadUser));