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 <timur.pocheptsov@qt.io>
This commit is contained in:
Timur Pocheptsov 2020-02-05 16:43:21 +01:00
parent fcaa7506ba
commit 4c4b5a97c3
2 changed files with 22 additions and 6 deletions

View File

@ -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));

View File

@ -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
}