diff --git a/tests/dbus_smoketest.cpp b/tests/dbus_smoketest.cpp index b82ab93..4fbf63b 100644 --- a/tests/dbus_smoketest.cpp +++ b/tests/dbus_smoketest.cpp @@ -92,6 +92,7 @@ private Q_SLOTS: void runnerVersionAndListRunners(); void runnerResolveLaunchMissingProgram(); void runnerResolveLaunchUnknownRunnerId(); + void runnerResolveLaunchWineMissingPrefixOrGameId(); void pingInput(); void inputVersionAndCapabilities(); void inputProfilesCrud(); @@ -597,6 +598,27 @@ void DbusSmokeTest::runnerResolveLaunchUnknownRunnerId() QVERIFY(out.value(QStringLiteral("error")).toString().contains(QStringLiteral("unknown runnerId"), Qt::CaseInsensitive)); } +void DbusSmokeTest::runnerResolveLaunchWineMissingPrefixOrGameId() +{ + 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("runner"), QStringLiteral("wine")); + spec.insert(QStringLiteral("program"), QStringLiteral("/bin/true")); + 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 prefixPath or gameId"), Qt::CaseInsensitive)); +} + void DbusSmokeTest::runnerGameProfiles() { org::kde::ALaKarte::Runner1 iface(QStringLiteral("org.kde.ALaKarte.Runner1"), QStringLiteral("/org/kde/ALaKarte/Runner1"), m_bus);