ssu
Loading...
Searching...
No Matches
sandboxtest.cpp
Go to the documentation of this file.
1
7
8#include "sandboxtest.h"
9
10#include <QtTest/QtTest>
11
12#include "libssu/sandbox_p.h"
13
14void SandboxTest::test()
15{
16
17 const QDir::Filters noHidden = QDir::AllEntries | QDir::NoDotAndDotDot;
18
19 QCOMPARE(QDir(Sandbox::map(LOCATE_DATA_PATH, "/world")).entryList(noHidden, QDir::Name),
20 QStringList()
21 << "world-and-sandbox"
22 << "world-only"
23 << "world-only-to-be-copied-into-sandbox");
24
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"));
28
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"));
32
33 QVERIFY(!QFileInfo(Sandbox::map(LOCATE_DATA_PATH, "/world/world-only-to-be-copied-into-sandbox"))
34 .isWritable());
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"));
37
38 QVERIFY(!QFileInfo(Sandbox::map(LOCATE_DATA_PATH, "/world/sandbox-only")).exists());
39
40
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());
46
47
48 QCOMPARE(QDir(Sandbox::map(LOCATE_DATA_PATH, "/world")).entryList(noHidden, QDir::Name),
49 QStringList()
50 << "sandbox-only"
51 << "world-and-sandbox"
52 << "world-only-to-be-copied-into-sandbox");
53
54 QVERIFY(!QFileInfo(Sandbox::map(LOCATE_DATA_PATH, "/world/world-only")).exists());
55
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"));
59
60 QVERIFY(QFileInfo(Sandbox::map(LOCATE_DATA_PATH, "/world/world-only-to-be-copied-into-sandbox"))
61 .isWritable());
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"));
64
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"));
69}
70
71QString SandboxTest::readAll(const QString &fileName)
72{
73 QFile file(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()));
77 return QString();
78 }
79
80 return file.readAll();
81}