bpo-29972: Skip tests known to fail on AIX (#979)

* bpo-29972: Fix test_eintr on AIX

On AIX, sigtimedwait(0.2) sleeps 199.8 ms, whereas the test expects
200 ms or longer.

* bpo-29972: Skip some inet_pton() tests on AIX

Skip some inet_pton() tests of test_socket on AIX.

inet_pton() on AIX is less strict than on Linux and doesn't reject
some invalid IP addresses. The unit tests test more the libc than
Python itself.

* bpo-29972: Skip tests known to fail on AIX

* test_locale.test_strcoll_with_diacritic()
* test_locale.test_strxfrm_with_diacritic()
* test_strptime.test_week_of_year_and_day_of_week_calculation()
* test_tools.test_POT_Creation_Date()
diff --git a/Lib/test/eintrdata/eintr_tester.py b/Lib/test/eintrdata/eintr_tester.py
index c619b3d..74a509b 100644
--- a/Lib/test/eintrdata/eintr_tester.py
+++ b/Lib/test/eintrdata/eintr_tester.py
@@ -380,7 +380,12 @@
         t0 = time.monotonic()
         signal.sigtimedwait([signal.SIGUSR1], self.sleep_time)
         dt = time.monotonic() - t0
-        self.assertGreaterEqual(dt, self.sleep_time)
+
+        if sys.platform.startswith('aix'):
+            # On AIX, sigtimedwait(0.2) sleeps 199.8 ms
+            self.assertGreaterEqual(dt, self.sleep_time * 0.9)
+        else:
+            self.assertGreaterEqual(dt, self.sleep_time)
 
     @unittest.skipUnless(hasattr(signal, 'sigwaitinfo'),
                          'need signal.sigwaitinfo()')
diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
index 4dd300e..668f3cb 100644
--- a/Lib/test/test_locale.py
+++ b/Lib/test/test_locale.py
@@ -365,9 +365,13 @@
             raise unittest.SkipTest('wcscoll/wcsxfrm have known bugs')
         BaseLocalizedTest.setUp(self)
 
+    @unittest.skipIf(sys.platform.startswith('aix'),
+                     'bpo-29972: broken test on AIX')
     def test_strcoll_with_diacritic(self):
         self.assertLess(locale.strcoll('à', 'b'), 0)
 
+    @unittest.skipIf(sys.platform.startswith('aix'),
+                     'bpo-29972: broken test on AIX')
     def test_strxfrm_with_diacritic(self):
         self.assertLess(locale.strxfrm('à'), locale.strxfrm('b'))
 
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 7cc2e57..2155d63 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -1026,7 +1026,9 @@
         self.assertEqual(b'\xaa\xaa\xaa\xaa', f('170.170.170.170'))
         self.assertEqual(b'\x01\x02\x03\x04', f('1.2.3.4'))
         self.assertEqual(b'\xff\xff\xff\xff', f('255.255.255.255'))
-        assertInvalid(f, '0.0.0.')
+        # bpo-29972: inet_pton() doesn't fail on AIX
+        if not sys.platform.startswith('aix'):
+            assertInvalid(f, '0.0.0.')
         assertInvalid(f, '300.0.0.0')
         assertInvalid(f, 'a.0.0.0')
         assertInvalid(f, '1.2.3.4.5')
@@ -1081,10 +1083,12 @@
         assertInvalid('::0::')
         assertInvalid('1::abc::')
         assertInvalid('1::abc::def')
-        assertInvalid('1:2:3:4:5:6:')
         assertInvalid('1:2:3:4:5:6')
-        assertInvalid('1:2:3:4:5:6:7:8:')
         assertInvalid('1:2:3:4:5:6:7:8:0')
+        # bpo-29972: inet_pton() doesn't fail on AIX
+        if not sys.platform.startswith('aix'):
+            assertInvalid('1:2:3:4:5:6:')
+            assertInvalid('1:2:3:4:5:6:7:8:')
 
         self.assertEqual(b'\x00' * 12 + b'\xfe\x2a\x17\x40',
             f('::254.42.23.64')
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
index 2cf0926..9343180 100644
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -5,6 +5,7 @@
 import locale
 import re
 import os
+import sys
 from test import support
 from datetime import date as datetime_date
 
@@ -482,6 +483,8 @@
         _ymd_excluded = ()
         _formats_excluded = ()
 
+    @unittest.skipIf(sys.platform.startswith('aix'),
+                     'bpo-29972: broken test on AIX')
     def test_week_of_year_and_day_of_week_calculation(self):
         # Should be able to infer date if given year, week of year (%U or %W)
         # and day of the week
diff --git a/Lib/test/test_tools/test_i18n.py b/Lib/test/test_tools/test_i18n.py
index ce6f549..5c28bae 100644
--- a/Lib/test/test_tools/test_i18n.py
+++ b/Lib/test/test_tools/test_i18n.py
@@ -1,6 +1,7 @@
 """Tests to cover the Tools/i18n package"""
 
 import os
+import sys
 import unittest
 
 from test.support.script_helper import assert_python_ok
@@ -53,7 +54,8 @@
 
             #"Plural-Forms" is optional
 
-
+    @unittest.skipIf(sys.platform.startswith('aix'),
+                     'bpo-29972: broken test on AIX')
     def test_POT_Creation_Date(self):
         """ Match the date format from xgettext for POT-Creation-Date """
         from datetime import datetime