Fix sdist to always include setup.cfg (#11092), to comply with the spec

This commit is contained in:
Éric Araujo 2011-06-06 21:55:43 +02:00
parent 078368fe4d
commit 7373fccd50
3 changed files with 32 additions and 19 deletions

View File

@ -201,15 +201,20 @@ class sdist(Command):
self.filelist.write(self.manifest)
def add_defaults(self):
"""Add all the default files to self.filelist:
- all pure Python modules mentioned in setup script
- all files pointed by package_data (build_py)
- all files defined in data_files.
- all files defined as scripts.
- all C sources listed as part of extensions or C libraries
in the setup script (doesn't catch C headers!)
Everything is optional.
"""Add all default files to self.filelist.
In addition to the setup.cfg file, this will include all files returned
by the get_source_files of every registered command. This will find
Python modules and packages, data files listed in package_data_,
data_files and extra_files, scripts, C sources of extension modules or
C libraries (headers are missing).
"""
if os.path.exists('setup.cfg'):
self.filelist.append('setup.cfg')
else:
logger.warning("%s: standard 'setup.cfg' file not found",
self.get_command_name())
for cmd_name in get_command_names():
try:
cmd_obj = self.get_finalized_command(cmd_name)

View File

@ -34,6 +34,7 @@ setup(name='fake')
MANIFEST = """\
# file GENERATED by packaging, do NOT edit
inroot.txt
setup.cfg
data%(sep)sdata.dt
scripts%(sep)sscript.py
some%(sep)sfile.txt
@ -173,6 +174,7 @@ class SDistTestCase(support.TempdirManager,
# in package_data
dist.package_data = {'': ['*.cfg', '*.dat'],
'somecode': ['*.txt']}
self.write_file((self.tmp_dir, 'setup.cfg'), '#')
self.write_file((self.tmp_dir, 'somecode', 'doc.txt'), '#')
self.write_file((self.tmp_dir, 'somecode', 'doc.dat'), '#')
@ -212,8 +214,8 @@ class SDistTestCase(support.TempdirManager,
content = zip_file.namelist()
# Making sure everything was added. This includes 8 code and data
# files in addition to PKG-INFO.
self.assertEqual(len(content), 9)
# files in addition to PKG-INFO and setup.cfg
self.assertEqual(len(content), 10)
# Checking the MANIFEST
with open(join(self.tmp_dir, 'MANIFEST')) as fp:
@ -230,7 +232,7 @@ class SDistTestCase(support.TempdirManager,
cmd.ensure_finalized()
cmd.run()
warnings = self.get_logs(logging.WARN)
self.assertEqual(len(warnings), 3)
self.assertEqual(len(warnings), 4)
# trying with a complete set of metadata
self.loghandler.flush()
@ -242,8 +244,9 @@ class SDistTestCase(support.TempdirManager,
# removing manifest generated warnings
warnings = [warn for warn in warnings if
not warn.endswith('-- skipping')]
# the remaining warning is about the use of the default file list
self.assertEqual(len(warnings), 1)
# the remaining warnings are about the use of the default file list and
# the absence of setup.cfg
self.assertEqual(len(warnings), 2)
def test_show_formats(self):
__, stdout = captured_stdout(show_formats)

View File

@ -66,10 +66,15 @@ class CreateTestCase(support.TempdirManager,
# building the structure
tempdir = self.wdir
dirs = ['pkg1', 'data', 'pkg2', 'pkg2/sub']
files = ['README', 'setup.cfg', 'foo.py',
'pkg1/__init__.py', 'pkg1/bar.py',
'data/data1', 'pkg2/__init__.py',
'pkg2/sub/__init__.py']
files = [
'README',
'data/data1',
'foo.py',
'pkg1/__init__.py',
'pkg1/bar.py',
'pkg2/__init__.py',
'pkg2/sub/__init__.py',
]
for dir_ in dirs:
os.mkdir(os.path.join(tempdir, dir_))
@ -86,8 +91,8 @@ class CreateTestCase(support.TempdirManager,
['pkg1', 'pkg2', 'pkg2.sub'])
self.assertEqual(mainprogram.data['modules'], ['foo'])
data_fn = os.path.join('data', 'data1')
self.assertEqual(set(mainprogram.data['extra_files']),
set(['setup.cfg', 'README', data_fn]))
self.assertEqual(mainprogram.data['extra_files'],
['README', data_fn])
def test_convert_setup_py_to_cfg(self):
self.write_file((self.wdir, 'setup.py'),