11#include <zypp/media/UrlResolverPlugin.h>
13#include <QtTest/QtTest>
18typedef QStringList Args;
20void SsuCliTest::init()
22 Q_ASSERT(m_sandbox == 0);
24 m_sandbox =
new Sandbox(QString(
"%1/configroot").arg(LOCATE_DATA_PATH),
25 Sandbox::UseAsSkeleton, Sandbox::ChildProcesses);
26 if (!m_sandbox->activate()) {
27 QFAIL(
"Failed to activate sandbox");
29 if (getenv(
"SSU_SANDBOX_PATH")) {
30 qDebug() <<
"Using in-tree sandbox";
31 setenv(
"LD_PRELOAD", getenv(
"SSU_SANDBOX_PATH"), 1);
33 setenv(
"LD_PRELOAD", SSU_SANDBOX_PATH, 1);
35 m_bus =
new QProcess(
this);
36 m_bus->start(
"dbus-daemon",
37 Args() <<
"--session" <<
"--nofork" <<
"--nopidfile" <<
"--print-address");
38 if (!m_bus->waitForReadyRead()) {
39 QFAIL(
"Failed to run sandboxed D-Bus instance");
41 const QByteArray busAddress = m_bus->readAllStandardOutput();
42 setenv(
"DBUS_SESSION_BUS_ADDRESS", busAddress.constData(), 1);
43 setenv(
"DBUS_SYSTEM_BUS_ADDRESS", busAddress.constData(), 1);
45 m_ssud =
new QProcess(
this);
46 m_ssud->start(
"ssud");
47 if (!m_ssud->waitForStarted()) {
48 QFAIL(
"Failed to run sandboxed ssud instance");
52void SsuCliTest::cleanup()
54 if (m_ssud->state() != QProcess::Running) {
55 QFAIL(
"Sandboxed ssud instance exited unexpectedly");
60 if (m_bus->state() != QProcess::Running) {
61 QFAIL(
"Sandboxed D-Bus instance exited unexpectedly");
63 unsetenv(
"DBUS_SESSION_BUS_ADDRESS");
64 unsetenv(
"DBUS_SYSTEM_BUS_ADDRESS");
72void SsuCliTest::testSubcommandFlavour()
78 ssu.execute(
"ssu", Args() <<
"flavour" <<
"release");
79 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
81 output = ssu.execute(
"ssu", Args() <<
"flavour").trimmed();
82 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
84 QCOMPARE(output, QString(
"Device flavour is currently: release"));
87 ssu.execute(
"ssu", Args() <<
"flavour" <<
"testing");
88 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
90 output = ssu.execute(
"ssu", Args() <<
"flavour").trimmed();
91 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
93 QCOMPARE(output, QString(
"Device flavour is currently: testing"));
96void SsuCliTest::testSubcommandRelease()
102 ssu.execute(
"ssu", Args() <<
"release" <<
"latest");
103 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
105 output = ssu.execute(
"ssu", Args() <<
"release").trimmed();
106 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
108 QCOMPARE(output, QString(
"Device release is currently: latest"));
111 ssu.execute(
"ssu", Args() <<
"release" <<
"next");
112 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
114 output = ssu.execute(
"ssu", Args() <<
"release").trimmed();
115 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
117 QCOMPARE(output, QString(
"Device release is currently: next"));
120 output = ssu.execute(
"ssu", Args() <<
"mode").trimmed();
121 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
123 QCOMPARE(output, QString(
"Device mode is: 0 ()"));
126 ssu.execute(
"ssu", Args() <<
"release" <<
"-r" <<
"latest");
127 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
129 output = ssu.execute(
"ssu", Args() <<
"release" <<
"-r").trimmed();
130 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
132 QCOMPARE(output, QString(
"Device release (RnD) is currently: latest"));
135 ssu.execute(
"ssu", Args() <<
"release" <<
"-r" <<
"next");
136 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
138 output = ssu.execute(
"ssu", Args() <<
"release" <<
"-r").trimmed();
139 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
141 QCOMPARE(output, QString(
"Device release (RnD) is currently: next"));
144 output = ssu.execute(
"ssu", Args() <<
"mode").trimmed();
145 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
147 QCOMPARE(output, QString(
"Device mode is: 2 (RndMode)"));
150void SsuCliTest::testSubcommandMode()
156 ssu.execute(
"ssu", Args() <<
"mode" <<
"0");
157 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
159 output = ssu.execute(
"ssu", Args() <<
"mode").trimmed();
160 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
162 QCOMPARE(output, QString(
"Device mode is: 0 ()"));
165 ssu.execute(
"ssu", Args() <<
"mode" <<
"2");
166 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
168 output = ssu.execute(
"ssu", Args() <<
"mode").trimmed();
169 QVERIFY2(!ssu.hasError(), qPrintable(ssu.fmtErrorMessage()));
171 QCOMPARE(output, QString(
"Device mode is: 2 (RndMode)"));