From 62d1149357736a0dd9b8a439edb73c30f6d407ad Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Wed, 17 Nov 2010 13:22:50 +0100 Subject: tst_qnetworkreply: Fix ugly test Properly use the event loop. Signals have to be connected directly after using the get() method of QNetworkAccessManager. Else they might have already been emitted while the event loop was spinning. Reviewed-by: Peter Hartmann --- tests/auto/qnetworkreply/tst_qnetworkreply.cpp | 34 +++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index 41b3e0a..ddb7687 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -4130,8 +4130,23 @@ void tst_QNetworkReply::httpProxyCommands() QCOMPARE(receivedHeader, expectedCommand); } +class ProxyChangeHelper : public QObject { + Q_OBJECT +public: + ProxyChangeHelper() : QObject(), signalCount(0) {}; +public slots: + void finishedSlot() { + signalCount++; + if (signalCount == 2) + QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection); + } +private: + int signalCount; +}; + void tst_QNetworkReply::proxyChange() { + ProxyChangeHelper helper; MiniHttpServer proxyServer( "HTTP/1.0 200 OK\r\nProxy-Connection: keep-alive\r\n" "Content-Length: 1\r\n\r\n1"); @@ -4141,30 +4156,15 @@ void tst_QNetworkReply::proxyChange() manager.setProxy(dummyProxy); QNetworkReplyPtr reply1 = manager.get(req); - QSignalSpy finishedspy(reply1, SIGNAL(finished())); + connect(reply1, SIGNAL(finished()), &helper, SLOT(finishedSlot())); manager.setProxy(QNetworkProxy()); QNetworkReplyPtr reply2 = manager.get(req); + connect(reply2, SIGNAL(finished()), &helper, SLOT(finishedSlot())); - connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); -#ifdef Q_OS_SYMBIAN - // we need more time as: - // 1. running from the emulator - // 2. not perfect POSIX implementation - // 3. embedded device QTestEventLoop::instance().enterLoop(20); -#else - QTestEventLoop::instance().enterLoop(10); -#endif QVERIFY(!QTestEventLoop::instance().timeout()); - if (finishedspy.count() == 0) { - // wait for the second reply as well - connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); - QTestEventLoop::instance().enterLoop(1); - QVERIFY(!QTestEventLoop::instance().timeout()); - } - // verify that the replies succeeded QCOMPARE(reply1->error(), QNetworkReply::NoError); QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); -- cgit v0.12 From 346953b985deb5003e801b23063daf3f6dee3824 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 17 Nov 2010 19:08:02 +0100 Subject: Use GLIBC functions on any GLIBC architecture. Make use of __GLIBC__ instead of Q_OS_LINUX for functions available globally in GNU libc, not just on Linux. the !__UCLIBC__ are still needed, as uClibc defines __GLIBC__ for compatibility with a lot of applications which rely on it. Task-number: QTBUG-15401 --- src/corelib/tools/qlocale.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 6b1de5e..d152682 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -77,7 +77,7 @@ QT_END_NAMESPACE #include #include -#if defined(Q_OS_LINUX) && !defined(__UCLIBC__) +#if defined(__GLIBC__) && !defined(__UCLIBC__) # include #endif @@ -6637,7 +6637,7 @@ Q_CORE_EXPORT char *qdtoa ( double d, int mode, int ndigits, int *decpt, int *si _control87(MCW_EM, MCW_EM); #endif -#if defined(Q_OS_LINUX) && !defined(__UCLIBC__) +#if defined(__GLIBC__) && !defined(__UCLIBC__) fenv_t envp; feholdexcept(&envp); #endif @@ -6653,7 +6653,7 @@ Q_CORE_EXPORT char *qdtoa ( double d, int mode, int ndigits, int *decpt, int *si #endif //_M_X64 #endif //Q_OS_WIN -#if defined(Q_OS_LINUX) && !defined(__UCLIBC__) +#if defined(__GLIBC__) && !defined(__UCLIBC__) fesetenv(&envp); #endif -- cgit v0.12