[SCM] kdeconnect packaging branch, master, updated. debian/0.9g-1-1183-g9d69498

Maximiliano Curia maxy at moszumanska.debian.org
Fri Oct 14 14:29:54 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/kdeconnect.git;a=commitdiff;h=4cb50d6

The following commit has been merged in the master branch:
commit 4cb50d69d891c854a9162939e1a674f7ce6fbec4
Author: Aleix Pol <aleixpol at kde.org>
Date:   Wed Jun 22 12:40:14 2016 +0200

    Fix some issues in the downloadjob and its test
    
    Test on KJob abstraction, this way we can check if it has an error when it
    breaks.
    Handle errors in a different branch of the code.
---
 core/backends/lan/downloadjob.cpp | 20 ++++++--------
 core/backends/lan/downloadjob.h   |  3 +--
 tests/downloadjobtest.cpp         | 57 ++++++++++++---------------------------
 3 files changed, 26 insertions(+), 54 deletions(-)

diff --git a/core/backends/lan/downloadjob.cpp b/core/backends/lan/downloadjob.cpp
index f23eb06..3e086e1 100644
--- a/core/backends/lan/downloadjob.cpp
+++ b/core/backends/lan/downloadjob.cpp
@@ -36,7 +36,7 @@ DownloadJob::DownloadJob(const QHostAddress &address, const QVariantMap &transfe
     : KJob()
     , mAddress(address)
     , mPort(transferInfo["port"].toInt())
-    , mSocket(new QSslSocket)
+    , mSocket(new QSslSocket(this))
 {
     // Setting ssl related properties for socket when using ssl
     mSocket->setLocalCertificate(KdeConnectConfig::instance()->certificate());
@@ -56,24 +56,20 @@ DownloadJob::~DownloadJob()
 void DownloadJob::start()
 {
     //TODO: Timeout?
-    connect(mSocket.data(), &QAbstractSocket::disconnected, this, &DownloadJob::done);
-    connect(mSocket.data(), SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(done()));
-    //connect(mSocket.data(), &QAbstractSocket::connected, [=](){ qDebug() << "Connected"; });
+    connect(mSocket.data(), &QAbstractSocket::disconnected, this, &DownloadJob::emitResult);
+    connect(mSocket.data(), SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(socketFailed(QAbstractSocket::SocketError)));
+//     connect(mSocket.data(), &QAbstractSocket::stateChanged, [](QAbstractSocket::SocketState state){ qDebug() << "statechange" << state; });
 
     // Cannot use read only, might be due to ssl handshake, getting QIODevice::ReadOnly error and no connection
     mSocket->connectToHostEncrypted(mAddress.toString(), mPort, QIODevice::ReadWrite);
-    mSocket->waitForEncrypted();
-
-    //mSocket->open(QIODevice::ReadOnly);
 }
 
-void DownloadJob::done()
+void DownloadJob::socketFailed(QAbstractSocket::SocketError error)
 {
-    if (mSocket->error()) {
-        qWarning(KDECONNECT_CORE) << mSocket->errorString();
-    }
+    qWarning(KDECONNECT_CORE) << "error..." << mSocket->errorString();
+    setError(error + 1);
+    setErrorText(mSocket->errorString());
     emitResult();
-    deleteLater();
 }
 
 QSharedPointer<QIODevice> DownloadJob::getPayload()
diff --git a/core/backends/lan/downloadjob.h b/core/backends/lan/downloadjob.h
index d73b496..6100e41 100644
--- a/core/backends/lan/downloadjob.h
+++ b/core/backends/lan/downloadjob.h
@@ -43,13 +43,12 @@ public:
     QSharedPointer<QIODevice> getPayload();
 
 private:
-    bool useSsl;
     QHostAddress mAddress;
     qint16 mPort;
     QSharedPointer<QSslSocket> mSocket;
 
 private Q_SLOTS:
-    void done();
+    void socketFailed(QAbstractSocket::SocketError error);
 
 };
 
diff --git a/tests/downloadjobtest.cpp b/tests/downloadjobtest.cpp
index 312769b..55576fc 100644
--- a/tests/downloadjobtest.cpp
+++ b/tests/downloadjobtest.cpp
@@ -26,6 +26,7 @@
 #include <QTimer>
 #include <QHostAddress>
 #include <KJob>
+#include <QSignalSpy>
 #include <iostream>
 
 class DownloadJobTest : public QObject
@@ -35,70 +36,46 @@ class DownloadJobTest : public QObject
 private Q_SLOTS:
     void failToConnectShouldDestroyTheJob();
     void closingTheConnectionShouldDestroyTheJob();
-private:
 
+private:
     void initServer();
     void initDownloadJob();
     void awaitToBeDestroyedOrTimeOut();
     void stopServer();
 
-    QTimer mTimer;
-    QEventLoop mLoop;
-    DownloadJob* test;
-    QTcpServer *mServer;
+    QPointer<DownloadJob> test;
+    QPointer<QTcpServer> mServer;
 };
 
 void DownloadJobTest::initServer()
 {
+    delete mServer;
     mServer = new QTcpServer(this);
     QVERIFY2(mServer->listen(QHostAddress::LocalHost, 8694), "Failed to create local tcp server");
 }
 
-void DownloadJobTest::stopServer()
+void DownloadJobTest::failToConnectShouldDestroyTheJob()
 {
-    mServer->close();
-}
+    // no initServer
+    test = new DownloadJob(QHostAddress::LocalHost, {{"port", 8694}});
 
-void DownloadJobTest::initDownloadJob()
-{
-    QVariantMap transferInfo;
-    transferInfo["port"]= 8694;
-    test = new DownloadJob(QHostAddress::LocalHost, transferInfo);
+    QSignalSpy spy(test, &KJob::finished);
     test->start();
-}
-
-void DownloadJobTest::awaitToBeDestroyedOrTimeOut()
-{
-    //Either the job is destroyed
-    connect(test, &QObject::destroyed, &mLoop, &QEventLoop::quit);
 
-    //Or we time out
-    mTimer.setInterval(2000);
-    mTimer.setSingleShot(true);
-    connect(&mTimer, &QTimer::timeout, [this]() {
-        mLoop.quit();
-        QFAIL("Test timed out");
-    });
-    mTimer.start();
+    QVERIFY(spy.count() || spy.wait());
 
-    //We wait
-    mLoop.exec();
-
-    mTimer.stop();
-}
-
-void DownloadJobTest::failToConnectShouldDestroyTheJob()
-{
-    initDownloadJob();
-    awaitToBeDestroyedOrTimeOut();
+    QCOMPARE(test->error(), 1);
 }
 
 void DownloadJobTest::closingTheConnectionShouldDestroyTheJob()
 {
     initServer();
-    initDownloadJob();
-    stopServer();
-    awaitToBeDestroyedOrTimeOut();
+    test = new DownloadJob(QHostAddress::LocalHost, {{"port", 8694}});
+    QSignalSpy spy(test, &KJob::finished);
+    test->start();
+    mServer->close();
+
+    QVERIFY(spy.count() || spy.wait(2000));
 }
 
 QTEST_GUILESS_MAIN(DownloadJobTest)

-- 
kdeconnect packaging



More information about the pkg-kde-commits mailing list