mirror of https://github.com/python/cpython
Issue #12112: packaging reads and writes setup.cfg using UTF-8
This commit is contained in:
parent
4c9706bd27
commit
dd13dd4bcc
|
@ -282,7 +282,7 @@ class Config:
|
||||||
|
|
||||||
for filename in filenames:
|
for filename in filenames:
|
||||||
logger.debug(" reading %s", filename)
|
logger.debug(" reading %s", filename)
|
||||||
parser.read(filename)
|
parser.read(filename, encoding='utf-8')
|
||||||
|
|
||||||
if os.path.split(filename)[-1] == 'setup.cfg':
|
if os.path.split(filename)[-1] == 'setup.cfg':
|
||||||
self._read_setup_cfg(parser, filename)
|
self._read_setup_cfg(parser, filename)
|
||||||
|
|
|
@ -276,7 +276,7 @@ class MainProgram:
|
||||||
return
|
return
|
||||||
shutil.move(_FILENAME, '%s.old' % _FILENAME)
|
shutil.move(_FILENAME, '%s.old' % _FILENAME)
|
||||||
|
|
||||||
with open(_FILENAME, 'w') as fp:
|
with open(_FILENAME, 'w', encoding='utf-8') as fp:
|
||||||
fp.write('[metadata]\n')
|
fp.write('[metadata]\n')
|
||||||
# simple string entries
|
# simple string entries
|
||||||
for name in ('name', 'version', 'summary', 'download_url'):
|
for name in ('name', 'version', 'summary', 'download_url'):
|
||||||
|
|
|
@ -138,7 +138,7 @@ class TempdirManager:
|
||||||
d = tempfile.mkdtemp(dir=self._basetempdir)
|
d = tempfile.mkdtemp(dir=self._basetempdir)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def write_file(self, path, content='xxx'):
|
def write_file(self, path, content='xxx', encoding=None):
|
||||||
"""Write a file at the given path.
|
"""Write a file at the given path.
|
||||||
|
|
||||||
path can be a string, a tuple or a list; if it's a tuple or list,
|
path can be a string, a tuple or a list; if it's a tuple or list,
|
||||||
|
@ -146,7 +146,7 @@ class TempdirManager:
|
||||||
"""
|
"""
|
||||||
if isinstance(path, (list, tuple)):
|
if isinstance(path, (list, tuple)):
|
||||||
path = os.path.join(*path)
|
path = os.path.join(*path)
|
||||||
with open(path, 'w') as f:
|
with open(path, 'w', encoding=encoding) as f:
|
||||||
f.write(content)
|
f.write(content)
|
||||||
|
|
||||||
def create_dist(self, **kw):
|
def create_dist(self, **kw):
|
||||||
|
|
|
@ -183,7 +183,7 @@ class ConfigTestCase(support.TempdirManager,
|
||||||
'setup-hook': 'packaging.tests.test_config.hook'}
|
'setup-hook': 'packaging.tests.test_config.hook'}
|
||||||
if kwargs:
|
if kwargs:
|
||||||
opts.update(kwargs)
|
opts.update(kwargs)
|
||||||
self.write_file('setup.cfg', SETUP_CFG % opts)
|
self.write_file('setup.cfg', SETUP_CFG % opts, encoding='utf-8')
|
||||||
|
|
||||||
def get_dist(self):
|
def get_dist(self):
|
||||||
dist = Distribution()
|
dist = Distribution()
|
||||||
|
|
|
@ -91,7 +91,7 @@ class CreateTestCase(support.TempdirManager,
|
||||||
def test_convert_setup_py_to_cfg(self):
|
def test_convert_setup_py_to_cfg(self):
|
||||||
self.write_file((self.wdir, 'setup.py'),
|
self.write_file((self.wdir, 'setup.py'),
|
||||||
dedent("""
|
dedent("""
|
||||||
# -*- coding: utf-8 -*-
|
# coding: utf-8
|
||||||
from distutils.core import setup
|
from distutils.core import setup
|
||||||
|
|
||||||
long_description = '''My super Death-scription
|
long_description = '''My super Death-scription
|
||||||
|
@ -124,12 +124,12 @@ class CreateTestCase(support.TempdirManager,
|
||||||
},
|
},
|
||||||
scripts=['my_script', 'bin/run'],
|
scripts=['my_script', 'bin/run'],
|
||||||
)
|
)
|
||||||
"""))
|
"""), encoding='utf-8')
|
||||||
sys.stdin.write('y\n')
|
sys.stdin.write('y\n')
|
||||||
sys.stdin.seek(0)
|
sys.stdin.seek(0)
|
||||||
main()
|
main()
|
||||||
|
|
||||||
with open(os.path.join(self.wdir, 'setup.cfg')) as fp:
|
with open(os.path.join(self.wdir, 'setup.cfg'), encoding='utf-8') as fp:
|
||||||
lines = set(line.rstrip() for line in fp)
|
lines = set(line.rstrip() for line in fp)
|
||||||
|
|
||||||
# FIXME don't use sets
|
# FIXME don't use sets
|
||||||
|
@ -171,7 +171,7 @@ class CreateTestCase(support.TempdirManager,
|
||||||
def test_convert_setup_py_to_cfg_with_description_in_readme(self):
|
def test_convert_setup_py_to_cfg_with_description_in_readme(self):
|
||||||
self.write_file((self.wdir, 'setup.py'),
|
self.write_file((self.wdir, 'setup.py'),
|
||||||
dedent("""
|
dedent("""
|
||||||
# -*- coding: utf-8 -*-
|
# coding: utf-8
|
||||||
from distutils.core import setup
|
from distutils.core import setup
|
||||||
with open('README.txt') as fp:
|
with open('README.txt') as fp:
|
||||||
long_description = fp.read()
|
long_description = fp.read()
|
||||||
|
@ -191,7 +191,7 @@ class CreateTestCase(support.TempdirManager,
|
||||||
('share/man', ['pyxfoil.1']),
|
('share/man', ['pyxfoil.1']),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
"""))
|
"""), encoding='utf-8')
|
||||||
self.write_file((self.wdir, 'README.txt'),
|
self.write_file((self.wdir, 'README.txt'),
|
||||||
dedent('''
|
dedent('''
|
||||||
My super Death-scription
|
My super Death-scription
|
||||||
|
@ -202,7 +202,7 @@ ho, baby!
|
||||||
sys.stdin.seek(0)
|
sys.stdin.seek(0)
|
||||||
# FIXME Out of memory error.
|
# FIXME Out of memory error.
|
||||||
main()
|
main()
|
||||||
with open(os.path.join(self.wdir, 'setup.cfg')) as fp:
|
with open(os.path.join(self.wdir, 'setup.cfg'), encoding='utf-8') as fp:
|
||||||
lines = set(line.rstrip() for line in fp)
|
lines = set(line.rstrip() for line in fp)
|
||||||
|
|
||||||
self.assertEqual(lines, set(['',
|
self.assertEqual(lines, set(['',
|
||||||
|
|
Loading…
Reference in New Issue