tst_QTemporaryDir::nonWritableCurrentDir: Add a check for write protection.

/home has been observed to be writable on some CI machines.
Add checks verifying existence and correct permissions.

Change-Id: Ie0f952e20d0d8eb0b57234eea2e2ecb78f5a7b58
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
bb10
Friedemann Kleint 2015-12-21 15:59:13 +01:00 committed by Jędrzej Nowacki
parent 26237f0a2d
commit f7a167223b
1 changed files with 13 additions and 6 deletions

View File

@ -229,6 +229,13 @@ void tst_QTemporaryDir::autoRemove()
void tst_QTemporaryDir::nonWritableCurrentDir()
{
#ifdef Q_OS_UNIX
# if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK)
const char nonWritableDir[] = "/data";
# else
const char nonWritableDir[] = "/home";
# endif
if (::geteuid() == 0)
QSKIP("not valid running this test as root");
@ -240,13 +247,13 @@ void tst_QTemporaryDir::nonWritableCurrentDir()
}
QString dir;
};
ChdirOnReturn cor(QDir::currentPath());
#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK)
QDir::setCurrent("/data");
#else
QDir::setCurrent("/home");
#endif
const QFileInfo nonWritableDirFi = QFileInfo(QLatin1String(nonWritableDir));
QVERIFY(nonWritableDirFi.isDir());
QVERIFY(!nonWritableDirFi.isWritable());
ChdirOnReturn cor(QDir::currentPath());
QVERIFY(QDir::setCurrent(nonWritableDirFi.absoluteFilePath()));
// QTemporaryDir("tempXXXXXX") is probably a bad idea in any app
// where the current dir could anything...
QTemporaryDir dir("tempXXXXXX");