diff --git a/tests/dbus_smoketest.cpp b/tests/dbus_smoketest.cpp index 2d68509..9d71890 100644 --- a/tests/dbus_smoketest.cpp +++ b/tests/dbus_smoketest.cpp @@ -90,6 +90,7 @@ private Q_SLOTS: void gameCenterLaunchFailureContract(); void pingRunner(); void runnerVersionAndListRunners(); + void runnerResolveLaunchMissingProgram(); void pingInput(); void inputVersionAndCapabilities(); void inputProfilesCrud(); @@ -555,6 +556,25 @@ void DbusSmokeTest::runnerResolveLaunchNative() QCOMPARE(out.value(QStringLiteral("finalArgs")).toStringList(), QStringList{}); } +void DbusSmokeTest::runnerResolveLaunchMissingProgram() +{ + org::kde::ALaKarte::Runner1 iface(QStringLiteral("org.kde.ALaKarte.Runner1"), QStringLiteral("/org/kde/ALaKarte/Runner1"), m_bus); + QVERIFY(iface.isValid()); + iface.setTimeout(2000); + + QVariantMap spec; + spec.insert(QStringLiteral("args"), QStringList{}); + + QDBusPendingReply reply = iface.ResolveLaunch(spec); + reply.waitForFinished(); + QVERIFY2(!reply.isError(), qPrintable(reply.error().message())); + + const QVariantMap out = reply.value(); + QCOMPARE(out.value(QStringLiteral("ok")).toBool(), false); + QVERIFY(out.contains(QStringLiteral("error"))); + QVERIFY(out.value(QStringLiteral("error")).toString().contains(QStringLiteral("missing program"), Qt::CaseInsensitive)); +} + void DbusSmokeTest::runnerGameProfiles() { org::kde::ALaKarte::Runner1 iface(QStringLiteral("org.kde.ALaKarte.Runner1"), QStringLiteral("/org/kde/ALaKarte/Runner1"), m_bus);