changeset: 104551:465c09937e85 parent: 104549:c6588a7443a4 parent: 104550:fb3e65aff225 user: Xavier de Gaye date: Wed Oct 19 11:08:07 2016 +0200 files: Misc/NEWS description: Issue #26944: Merge with 3.6. diff -r c6588a7443a4 -r 465c09937e85 Lib/test/test_posix.py --- a/Lib/test/test_posix.py Wed Oct 19 10:11:37 2016 +0200 +++ b/Lib/test/test_posix.py Wed Oct 19 11:08:07 2016 +0200 @@ -799,7 +799,11 @@ 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 @@ 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 diff -r c6588a7443a4 -r 465c09937e85 Misc/NEWS --- a/Misc/NEWS Wed Oct 19 10:11:37 2016 +0200 +++ b/Misc/NEWS Wed Oct 19 11:08:07 2016 +0200 @@ -326,6 +326,9 @@ 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. - Issue #28217: Adds _testconsole module to test console input.