[Python-checkins] cpython (merge 3.6 -> default): Issue #26856: Merge 3.6.

xavier.degaye python-checkins at python.org
Tue Dec 13 03:13:23 EST 2016


https://hg.python.org/cpython/rev/692083f85981
changeset:   105602:692083f85981
parent:      105600:0d209cc7ffdc
parent:      105601:e89c9ab46d77
user:        Xavier de Gaye <xdegaye at users.sourceforge.net>
date:        Tue Dec 13 09:12:49 2016 +0100
summary:
  Issue #26856: Merge 3.6.

files:
  Lib/test/test_pathlib.py |   2 ++
  Lib/test/test_pwd.py     |  26 ++++++++++++++++++++------
  2 files changed, 22 insertions(+), 6 deletions(-)


diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -2080,6 +2080,8 @@
         self.assertEqual(given, expect)
         self.assertEqual(set(p.rglob("FILEd*")), set())
 
+    @unittest.skipUnless(hasattr(pwd, 'getpwall'),
+                         'pwd module does not expose getpwall()')
     def test_expanduser(self):
         P = self.cls
         support.import_module('pwd')
diff --git a/Lib/test/test_pwd.py b/Lib/test/test_pwd.py
--- a/Lib/test/test_pwd.py
+++ b/Lib/test/test_pwd.py
@@ -4,10 +4,19 @@
 
 pwd = support.import_module('pwd')
 
+def _getpwall():
+    # Android does not have getpwall.
+    if hasattr(pwd, 'getpwall'):
+        return pwd.getpwall()
+    elif hasattr(pwd, 'getpwuid'):
+        return [pwd.getpwuid(0)]
+    else:
+        return []
+
 class PwdTest(unittest.TestCase):
 
     def test_values(self):
-        entries = pwd.getpwall()
+        entries = _getpwall()
 
         for e in entries:
             self.assertEqual(len(e), 7)
@@ -33,7 +42,7 @@
             # and check afterwards (done in test_values_extended)
 
     def test_values_extended(self):
-        entries = pwd.getpwall()
+        entries = _getpwall()
         entriesbyname = {}
         entriesbyuid = {}
 
@@ -57,12 +66,13 @@
         self.assertRaises(TypeError, pwd.getpwuid, 3.14)
         self.assertRaises(TypeError, pwd.getpwnam)
         self.assertRaises(TypeError, pwd.getpwnam, 42)
-        self.assertRaises(TypeError, pwd.getpwall, 42)
+        if hasattr(pwd, 'getpwall'):
+            self.assertRaises(TypeError, pwd.getpwall, 42)
 
         # try to get some errors
         bynames = {}
         byuids = {}
-        for (n, p, u, g, gecos, d, s) in pwd.getpwall():
+        for (n, p, u, g, gecos, d, s) in _getpwall():
             bynames[n] = u
             byuids[u] = n
 
@@ -96,13 +106,17 @@
         # loop, say), pwd.getpwuid() might still be able to find data for that
         # uid. Using sys.maxint may provoke the same problems, but hopefully
         # it will be a more repeatable failure.
+        # Android accepts a very large span of uids including sys.maxsize and
+        # -1; it raises KeyError with 1 or 2 for example.
         fakeuid = sys.maxsize
         self.assertNotIn(fakeuid, byuids)
-        self.assertRaises(KeyError, pwd.getpwuid, fakeuid)
+        if not support.is_android:
+            self.assertRaises(KeyError, pwd.getpwuid, fakeuid)
 
         # -1 shouldn't be a valid uid because it has a special meaning in many
         # uid-related functions
-        self.assertRaises(KeyError, pwd.getpwuid, -1)
+        if not support.is_android:
+            self.assertRaises(KeyError, pwd.getpwuid, -1)
         # should be out of uid_t range
         self.assertRaises(KeyError, pwd.getpwuid, 2**128)
         self.assertRaises(KeyError, pwd.getpwuid, -2**128)

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list