]> granicus.if.org Git - python/commitdiff
Issue #26944: Fix test_posix for Android where 'id -G' is entirely wrong
authorXavier de Gaye <xdegaye@users.sourceforge.net>
Wed, 19 Oct 2016 09:00:26 +0000 (11:00 +0200)
committerXavier de Gaye <xdegaye@users.sourceforge.net>
Wed, 19 Oct 2016 09:00:26 +0000 (11:00 +0200)
or missing the effective gid.

Lib/test/test_posix.py
Misc/NEWS

index d2f58baae6b6d2b89e1f64c36adfeaa4cd53106f..63c74cd80da7a336f03ec0afd2d708da116bd416 100644 (file)
@@ -799,7 +799,11 @@ class PosixTester(unittest.TestCase):
             groups = idg.read().strip()
             ret = idg.close()
 
-        if ret is not None or not groups:
+        try:
+            idg_groups = set(int(g) for g in groups.split())
+        except ValueError:
+            idg_groups = set()
+        if ret is not None or not idg_groups:
             raise unittest.SkipTest("need working 'id -G'")
 
         # Issues 16698: OS X ABIs prior to 10.6 have limits on getgroups()
@@ -810,12 +814,11 @@ class PosixTester(unittest.TestCase):
                 raise unittest.SkipTest("getgroups(2) is broken prior to 10.6")
 
         # 'id -G' and 'os.getgroups()' should return the same
-        # groups, ignoring order and duplicates.
-        # #10822 - it is implementation defined whether posix.getgroups()
-        # includes the effective gid so we include it anyway, since id -G does
-        self.assertEqual(
-                set([int(x) for x in groups.split()]),
-                set(posix.getgroups() + [posix.getegid()]))
+        # groups, ignoring order, duplicates, and the effective gid.
+        # #10822/#26944 - It is implementation defined whether
+        # posix.getgroups() includes the effective gid.
+        symdiff = idg_groups.symmetric_difference(posix.getgroups())
+        self.assertTrue(not symdiff or symdiff == {posix.getegid()})
 
     # tests for the posix *at functions follow
 
index f3a3d55b63457a4cad02a6ef9fbfdf2696498b2f..04e353c578260563cfaeefce18e61ef781d5a3ef 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -35,6 +35,9 @@ Build
 Tests
 -----
 
+- Issue #26944: Fix test_posix for Android where 'id -G' is entirely wrong or
+  missing the effective gid.
+
 - Issue #28409: regrtest: fix the parser of command line arguments.