mirror of https://github.com/python/cpython
Add a simple test for the packaging RECORD file.
The existing test_record is not easily extendable to add script files or extension modules: it collects all files from fake_dists and generates a RECORD file at runtime. I felt more comfortable adding a new test written from scratch more self-contained (just one project with well-defined files) and more stupid (the checksums and sizes are computed once and hard-coded).
This commit is contained in:
parent
ba9b2689be
commit
0a733627f9
|
@ -3,10 +3,11 @@
|
|||
import os
|
||||
import csv
|
||||
import hashlib
|
||||
import sys
|
||||
import sysconfig
|
||||
|
||||
from packaging.command.install_distinfo import install_distinfo
|
||||
from packaging.command.cmd import Command
|
||||
from packaging.compiler.extension import Extension
|
||||
from packaging.metadata import Metadata
|
||||
from packaging.tests import unittest, support
|
||||
|
||||
|
@ -121,6 +122,57 @@ class InstallDistinfoTestCase(support.TempdirManager,
|
|||
self.checkLists(os.listdir(dist_info),
|
||||
['METADATA', 'REQUESTED', 'INSTALLER'])
|
||||
|
||||
def test_record_basic(self):
|
||||
install_dir = self.mkdtemp()
|
||||
modules_dest = os.path.join(install_dir, 'lib')
|
||||
scripts_dest = os.path.join(install_dir, 'bin')
|
||||
project_dir, dist = self.create_dist(
|
||||
name='Spamlib', version='0.1',
|
||||
py_modules=['spam'], scripts=['spamd'],
|
||||
ext_modules=[Extension('_speedspam', ['_speedspam.c'])])
|
||||
|
||||
# using a real install_dist command is too painful, so we use a mock
|
||||
# class that's only a holder for options to be used by install_distinfo
|
||||
# and we create placeholder files manually instead of using build_*.
|
||||
# the install_* commands will still be consulted by install_distinfo.
|
||||
os.chdir(project_dir)
|
||||
self.write_file('spam', '# Python module')
|
||||
self.write_file('spamd', '# Python script')
|
||||
extmod = '_speedspam%s' % sysconfig.get_config_var('SO')
|
||||
self.write_file(extmod, '')
|
||||
|
||||
install = DummyInstallCmd(dist)
|
||||
install.outputs = ['spam', 'spamd', extmod]
|
||||
install.install_lib = modules_dest
|
||||
install.install_scripts = scripts_dest
|
||||
dist.command_obj['install_dist'] = install
|
||||
|
||||
cmd = install_distinfo(dist)
|
||||
cmd.ensure_finalized()
|
||||
dist.command_obj['install_distinfo'] = cmd
|
||||
cmd.run()
|
||||
|
||||
record = os.path.join(modules_dest, 'Spamlib-0.1.dist-info', 'RECORD')
|
||||
with open(record, encoding='utf-8') as fp:
|
||||
content = fp.read()
|
||||
|
||||
found = []
|
||||
for line in content.splitlines():
|
||||
filename, checksum, size = line.split(',')
|
||||
filename = os.path.basename(filename)
|
||||
found.append((filename, checksum, size))
|
||||
|
||||
expected = [
|
||||
('spam', '6ab2f288ef2545868effe68757448b45', '15'),
|
||||
('spamd','d13e6156ce78919a981e424b2fdcd974', '15'),
|
||||
(extmod, 'd41d8cd98f00b204e9800998ecf8427e', '0'),
|
||||
('METADATA', '846de67e49c3b92c81fb1ebd7bc07046', '172'),
|
||||
('INSTALLER', '44e3fde05f3f537ed85831969acf396d', '9'),
|
||||
('REQUESTED', 'd41d8cd98f00b204e9800998ecf8427e', '0'),
|
||||
('RECORD', '', ''),
|
||||
]
|
||||
self.assertEqual(found, expected)
|
||||
|
||||
def test_record(self):
|
||||
pkg_dir, dist = self.create_dist(name='foo',
|
||||
version='1.0')
|
||||
|
|
Loading…
Reference in New Issue