ssu
sandboxtest.cpp
Go to the documentation of this file.
1 
8 #include "sandboxtest.h"
9 
10 #include <QtTest/QtTest>
11 
12 #include "libssu/sandbox_p.h"
13 
14 void 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 
71 QString 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 }
Sandbox
Helps to redirect file operations into sandbox directory.
Definition: sandbox_p.h:21
sandboxtest.h
sandbox_p.h