mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
Issue #19544 and Issue #6516: Restore support for --user and --group parameters to sdist command as found in Python 2.7 and originally slated for Python 3.2 but accidentally rolled back as part of the distutils2 rollback. Closes Issue #6516.
This commit is contained in:
parent
c31ebb60f9
commit
5e2d45672c
9 changed files with 230 additions and 15 deletions
|
|
@ -14,6 +14,12 @@ try:
|
|||
except ImportError:
|
||||
ZLIB_SUPPORT = False
|
||||
|
||||
try:
|
||||
import grp
|
||||
import pwd
|
||||
UID_GID_SUPPORT = True
|
||||
except ImportError:
|
||||
UID_GID_SUPPORT = False
|
||||
|
||||
from distutils.command.sdist import sdist, show_formats
|
||||
from distutils.core import Distribution
|
||||
|
|
@ -425,6 +431,53 @@ class SDistTestCase(PyPIRCCommandTestCase):
|
|||
self.assertEqual(sorted(filenames), ['fake-1.0', 'fake-1.0/PKG-INFO',
|
||||
'fake-1.0/README.manual'])
|
||||
|
||||
@unittest.skipUnless(zlib, "requires zlib")
|
||||
@unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
|
||||
def test_make_distribution_owner_group(self):
|
||||
|
||||
# check if tar and gzip are installed
|
||||
if (find_executable('tar') is None or
|
||||
find_executable('gzip') is None):
|
||||
return
|
||||
|
||||
# now building a sdist
|
||||
dist, cmd = self.get_cmd()
|
||||
|
||||
# creating a gztar and specifying the owner+group
|
||||
cmd.formats = ['gztar']
|
||||
cmd.owner = pwd.getpwuid(0)[0]
|
||||
cmd.group = grp.getgrgid(0)[0]
|
||||
cmd.ensure_finalized()
|
||||
cmd.run()
|
||||
|
||||
# making sure we have the good rights
|
||||
archive_name = join(self.tmp_dir, 'dist', 'fake-1.0.tar.gz')
|
||||
archive = tarfile.open(archive_name)
|
||||
try:
|
||||
for member in archive.getmembers():
|
||||
self.assertEquals(member.uid, 0)
|
||||
self.assertEquals(member.gid, 0)
|
||||
finally:
|
||||
archive.close()
|
||||
|
||||
# building a sdist again
|
||||
dist, cmd = self.get_cmd()
|
||||
|
||||
# creating a gztar
|
||||
cmd.formats = ['gztar']
|
||||
cmd.ensure_finalized()
|
||||
cmd.run()
|
||||
|
||||
# making sure we have the good rights
|
||||
archive_name = join(self.tmp_dir, 'dist', 'fake-1.0.tar.gz')
|
||||
archive = tarfile.open(archive_name)
|
||||
try:
|
||||
for member in archive.getmembers():
|
||||
self.assertEquals(member.uid, os.getuid())
|
||||
self.assertEquals(member.gid, os.getgid())
|
||||
finally:
|
||||
archive.close()
|
||||
|
||||
def test_suite():
|
||||
return unittest.makeSuite(SDistTestCase)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue