From 4c4b5a97c3167b405faab2cc3f3fb38408374df2 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Wed, 5 Feb 2020 16:43:21 +0100 Subject: Skip test cases that is failing on macOS >= 10.14 bind on port 1/82 is now success, in QTcpSocket's test things are more broken: changing the test row makes the test flaky with port not available due to the previous test case. Task-number: QTBUG-81905 Change-Id: Iaf1b5457fa3961a4f6bc92b79aa4668a8359136e Reviewed-by: Timur Pocheptsov --- .../platformsocketengine/tst_platformsocketengine.cpp | 16 +++++++++++----- tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp | 12 +++++++++++- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp index 5be00630ca..1ef9382f0a 100644 --- a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp +++ b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp @@ -530,11 +530,17 @@ void tst_PlatformSocketEngine::tooManySockets() void tst_PlatformSocketEngine::bind() { #if !defined Q_OS_WIN - PLATFORMSOCKETENGINE binder; - QVERIFY(binder.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); - QVERIFY(!binder.bind(QHostAddress::AnyIPv4, 82)); - QCOMPARE(binder.error(), QAbstractSocket::SocketAccessError); -#endif +#if defined Q_OS_MACOS + // On macOS >= 10.14 the bind on this port is successful. + if (QOperatingSystemVersion::current() < QOperatingSystemVersion::MacOSMojave) +#endif // Q_OS_MACOS + { + PLATFORMSOCKETENGINE binder; + QVERIFY(binder.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); + QVERIFY(!binder.bind(QHostAddress::AnyIPv4, 82)); + QCOMPARE(binder.error(), QAbstractSocket::SocketAccessError); + } +#endif // Q_OS_WIN PLATFORMSOCKETENGINE binder2; QVERIFY(binder2.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp index 9ab5e88900..bf08d70eb3 100644 --- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp +++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp @@ -558,8 +558,18 @@ void tst_QTcpSocket::bind_data() // try to bind to a privileged ports // we should fail if we're not root (unless the ports are in use!) QTest::newRow("127.0.0.1:1") << "127.0.0.1" << 1 << !geteuid() << (geteuid() ? QString() : "127.0.0.1"); - if (testIpv6) + if (testIpv6) { +#ifdef Q_OS_DARWIN + // This case is faling in different ways, first, it manages to bind to + // port 1 on macOS >= 10.14, but if we change the logic to not fail, + // it's becoming flaky and sometimes fails to bind, with error 'port in use' + // (apparently inflicted by the previous test row with 127.0.0.1). Amen. + if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSMojave) + QTest::qWarn("Skipping [::]:1, see QTBUG-81905", __FILE__, __LINE__); + else +#endif // Q_OS_DARWIN QTest::newRow("[::]:1") << "::" << 1 << !geteuid() << (geteuid() ? QString() : "::"); + } #endif } -- cgit v1.2.3