@@ -1589,7 +1589,7 @@ def test_run_with_shell_timeout_and_capture_output(self):
1589
1589
1590
1590
1591
1591
def _get_test_grp_name ():
1592
- for name_group in ('staff' , 'nogroup' , 'grp' ):
1592
+ for name_group in ('staff' , 'nogroup' , 'grp' , 'nobody' , 'nfsnobody' ):
1593
1593
if grp :
1594
1594
try :
1595
1595
grp .getgrnam (name_group )
@@ -1768,24 +1768,27 @@ def test_user(self):
1768
1768
test_users .append (name_uid )
1769
1769
1770
1770
for user in test_users :
1771
- with self . subTest ( user = user ):
1772
- try :
1773
- output = subprocess . check_output (
1774
- [ sys . executable , "-c" ,
1775
- "import os; print(os.getuid())" ],
1776
- user = user )
1777
- except PermissionError : # errno.EACCES
1778
- pass
1779
- except OSError as e :
1780
- if e . errno not in ( errno . EACCES , errno . EPERM ):
1781
- raise
1782
- else :
1783
- if isinstance ( user , str ):
1784
- user_uid = pwd . getpwnam ( user ). pw_uid
1771
+ # posix_spawn() may be used with close_fds=False
1772
+ for close_fds in ( False , True ) :
1773
+ with self . subTest ( user = user , close_fds = close_fds ):
1774
+ try :
1775
+ output = subprocess . check_output (
1776
+ [ sys . executable , "-c" ,
1777
+ "import os; print(os.getuid())" ],
1778
+ user = user ,
1779
+ close_fds = close_fds )
1780
+ except PermissionError : # ( EACCES, EPERM)
1781
+ pass
1782
+ except OSError as e :
1783
+ if e . errno not in ( errno . EACCES , errno . EPERM ):
1784
+ raise
1785
1785
else :
1786
- user_uid = user
1787
- child_user = int (output )
1788
- self .assertEqual (child_user , user_uid )
1786
+ if isinstance (user , str ):
1787
+ user_uid = pwd .getpwnam (user ).pw_uid
1788
+ else :
1789
+ user_uid = user
1790
+ child_user = int (output )
1791
+ self .assertEqual (child_user , user_uid )
1789
1792
1790
1793
with self .assertRaises (ValueError ):
1791
1794
subprocess .check_call ([sys .executable , "-c" , "pass" ], user = - 1 )
@@ -1809,23 +1812,25 @@ def test_group(self):
1809
1812
group_list .append (name_group )
1810
1813
1811
1814
for group in group_list + [gid ]:
1812
- with self .subTest (group = group ):
1813
- try :
1814
- output = subprocess .check_output (
1815
- [sys .executable , "-c" ,
1816
- "import os; print(os.getgid())" ],
1817
- group = group )
1818
- except OSError as e :
1819
- if e .errno != errno .EPERM :
1820
- raise
1821
- else :
1822
- if isinstance (group , str ):
1823
- group_gid = grp .getgrnam (group ).gr_gid
1815
+ # posix_spawn() may be used with close_fds=False
1816
+ for close_fds in (False , True ):
1817
+ with self .subTest (group = group , close_fds = close_fds ):
1818
+ try :
1819
+ output = subprocess .check_output (
1820
+ [sys .executable , "-c" ,
1821
+ "import os; print(os.getgid())" ],
1822
+ group = group ,
1823
+ close_fds = close_fds )
1824
+ except PermissionError : # (EACCES, EPERM)
1825
+ pass
1824
1826
else :
1825
- group_gid = group
1827
+ if isinstance (group , str ):
1828
+ group_gid = grp .getgrnam (group ).gr_gid
1829
+ else :
1830
+ group_gid = group
1826
1831
1827
- child_group = int (output )
1828
- self .assertEqual (child_group , group_gid )
1832
+ child_group = int (output )
1833
+ self .assertEqual (child_group , group_gid )
1829
1834
1830
1835
# make sure we bomb on negative values
1831
1836
with self .assertRaises (ValueError ):
0 commit comments