Issue #12112: packaging reads and writes setup.cfg using UTF-8

This commit is contained in:
Victor Stinner 2011-05-19 18:45:32 +02:00
parent 4c9706bd27
commit dd13dd4bcc
5 changed files with 11 additions and 11 deletions

View File

@ -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)

View File

@ -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'):

View File

@ -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):

View File

@ -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()

View File

@ -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(['',