10#include <QtTest/QtTest>
14void SandboxTest::test()
17 const QDir::Filters noHidden = QDir::AllEntries | QDir::NoDotAndDotDot;
19 QCOMPARE(QDir(Sandbox::map(LOCATE_DATA_PATH,
"/world")).entryList(noHidden, QDir::Name),
21 <<
"world-and-sandbox"
23 <<
"world-only-to-be-copied-into-sandbox");
25 QVERIFY(!QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-only")).isWritable());
26 QCOMPARE(readAll(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-only")).trimmed(),
27 QString(
"world/world-only"));
29 QVERIFY(!QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-and-sandbox")).isWritable());
30 QCOMPARE(readAll(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-and-sandbox")).trimmed(),
31 QString(
"world/world-and-sandbox"));
33 QVERIFY(!QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-only-to-be-copied-into-sandbox"))
35 QCOMPARE(readAll(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-only-to-be-copied-into-sandbox"))
36 .trimmed(), QString(
"world/world-only-to-be-copied-into-sandbox"));
38 QVERIFY(!QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/sandbox-only")).exists());
41 Sandbox sandbox(Sandbox::map(LOCATE_DATA_PATH,
"/sandbox"),
42 Sandbox::UseAsSkeleton, Sandbox::ThisProcess | Sandbox::ChildProcesses);
43 sandbox.addWorldFiles(Sandbox::map(LOCATE_DATA_PATH,
"/world"), QDir::AllEntries,
44 QStringList() <<
"*-to-be-copied-into-sandbox");
45 QVERIFY(sandbox.activate());
48 QCOMPARE(QDir(Sandbox::map(LOCATE_DATA_PATH,
"/world")).entryList(noHidden, QDir::Name),
51 <<
"world-and-sandbox"
52 <<
"world-only-to-be-copied-into-sandbox");
54 QVERIFY(!QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-only")).exists());
56 QVERIFY(QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-and-sandbox")).isWritable());
57 QCOMPARE(readAll(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-and-sandbox")).trimmed(),
58 QString(
"sandbox/world-and-sandbox"));
60 QVERIFY(QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-only-to-be-copied-into-sandbox"))
62 QCOMPARE(readAll(Sandbox::map(LOCATE_DATA_PATH,
"/world/world-only-to-be-copied-into-sandbox"))
63 .trimmed(), QString(
"world/world-only-to-be-copied-into-sandbox"));
65 QVERIFY(QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/sandbox-only")).exists());
66 QVERIFY(QFileInfo(Sandbox::map(LOCATE_DATA_PATH,
"/world/sandbox-only")).isWritable());
67 QCOMPARE(readAll(Sandbox::map(LOCATE_DATA_PATH,
"/world/sandbox-only")).trimmed(),
68 QString(
"sandbox/sandbox-only"));
71QString SandboxTest::readAll(
const QString &fileName)
74 if (!file.open(QIODevice::ReadOnly)) {
75 qWarning(
"%s: Failed to open file for reading: '%s': %s", Q_FUNC_INFO, qPrintable(fileName),
76 qPrintable(file.errorString()));
80 return file.readAll();