diff --git a/src/plugins/remotelinux/linuxdevicetester.cpp b/src/plugins/remotelinux/linuxdevicetester.cpp index 11d9e7a3f5c..31d793990dd 100644 --- a/src/plugins/remotelinux/linuxdevicetester.cpp +++ b/src/plugins/remotelinux/linuxdevicetester.cpp @@ -9,6 +9,8 @@ #include #include +#include + #include #include #include @@ -45,7 +47,7 @@ public: GenericLinuxDeviceTester *q = nullptr; IDevice::Ptr m_device; - std::unique_ptr m_taskTree; + TaskTreeRunner m_taskTreeRunner; QStringList m_extraCommands; QList m_extraTests; }; @@ -280,6 +282,9 @@ using namespace Internal; GenericLinuxDeviceTester::GenericLinuxDeviceTester(QObject *parent) : DeviceTester(parent), d(new GenericLinuxDeviceTesterPrivate(this)) { + connect(&d->m_taskTreeRunner, &TaskTreeRunner::done, this, [this](DoneWith result) { + emit finished(result == DoneWith::Success ? TestSuccess : TestFailure); + }); } GenericLinuxDeviceTester::~GenericLinuxDeviceTester() = default; @@ -296,15 +301,10 @@ void GenericLinuxDeviceTester::setExtraTests(const QList &extraTests) void GenericLinuxDeviceTester::testDevice(const IDevice::Ptr &deviceConfiguration) { - QTC_ASSERT(!d->m_taskTree, return); + QTC_ASSERT(!d->m_taskTreeRunner.isRunning(), return); d->m_device = deviceConfiguration; - auto onDone = [this](DoneWith result) { - emit finished(result == DoneWith::Success ? TestSuccess : TestFailure); - d->m_taskTree.release()->deleteLater(); - }; - QList taskItems = { d->echoTask("Hello"), // No quoting necessary d->echoTask("Hello Remote World!"), // Checks quoting, too. @@ -314,16 +314,14 @@ void GenericLinuxDeviceTester::testDevice(const IDevice::Ptr &deviceConfiguratio }; if (!d->m_extraTests.isEmpty()) taskItems << Group { d->m_extraTests }; - taskItems << d->commandTasks() << onGroupDone(onDone); - - d->m_taskTree.reset(new TaskTree(taskItems)); - d->m_taskTree->start(); + taskItems << d->commandTasks(); + d->m_taskTreeRunner.start(taskItems); } void GenericLinuxDeviceTester::stopTest() { - QTC_ASSERT(d->m_taskTree, return); - d->m_taskTree.reset(); + QTC_ASSERT(d->m_taskTreeRunner.isRunning(), return); + d->m_taskTreeRunner.reset(); emit finished(TestFailure); }