Kaydet (Commit) f11be757 authored tarafından Tarek Ziadé's avatar Tarek Ziadé

Merged revisions 73121 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r73121 | tarek.ziade | 2009-06-02 00:22:13 +0200 (Tue, 02 Jun 2009) | 1 line

  improved distutils.dist test coverage, pep-8 compliancy
........
üst 24e581f7
...@@ -246,7 +246,7 @@ Common commands: (see '--help-commands' for more) ...@@ -246,7 +246,7 @@ Common commands: (see '--help-commands' for more)
# Now work on the rest of the attributes. Any attribute that's # Now work on the rest of the attributes. Any attribute that's
# not already defined is invalid! # not already defined is invalid!
for (key,val) in attrs.items(): for (key, val) in attrs.items():
if hasattr(self.metadata, "set_" + key): if hasattr(self.metadata, "set_" + key):
getattr(self.metadata, "set_" + key)(val) getattr(self.metadata, "set_" + key)(val)
elif hasattr(self.metadata, key): elif hasattr(self.metadata, key):
...@@ -280,22 +280,24 @@ Common commands: (see '--help-commands' for more) ...@@ -280,22 +280,24 @@ Common commands: (see '--help-commands' for more)
commands = sorted(self.command_options.keys()) commands = sorted(self.command_options.keys())
if header is not None: if header is not None:
print(indent + header) self.announce(indent + header)
indent = indent + " " indent = indent + " "
if not commands: if not commands:
print(indent + "no commands known yet") self.announce(indent + "no commands known yet")
return return
for cmd_name in commands: for cmd_name in commands:
opt_dict = self.command_options.get(cmd_name) opt_dict = self.command_options.get(cmd_name)
if opt_dict is None: if opt_dict is None:
print(indent + "no option dict for '%s' command" % cmd_name) self.announce(indent +
"no option dict for '%s' command" % cmd_name)
else: else:
print(indent + "option dict for '%s' command:" % cmd_name) self.announce(indent +
"option dict for '%s' command:" % cmd_name)
out = pformat(opt_dict) out = pformat(opt_dict)
for line in out.split("\n"): for line in out.split('\n'):
print(indent + " " + line) self.announce(indent + " " + line)
# -- Config file finding/parsing methods --------------------------- # -- Config file finding/parsing methods ---------------------------
...@@ -346,11 +348,13 @@ Common commands: (see '--help-commands' for more) ...@@ -346,11 +348,13 @@ Common commands: (see '--help-commands' for more)
if filenames is None: if filenames is None:
filenames = self.find_config_files() filenames = self.find_config_files()
if DEBUG: print("Distribution.parse_config_files():") if DEBUG:
self.announce("Distribution.parse_config_files():")
parser = ConfigParser() parser = ConfigParser()
for filename in filenames: for filename in filenames:
if DEBUG: print(" reading", filename) if DEBUG:
self.announce(" reading", filename)
parser.read(filename) parser.read(filename)
for section in parser.sections(): for section in parser.sections():
options = parser.options(section) options = parser.options(section)
...@@ -535,9 +539,6 @@ Common commands: (see '--help-commands' for more) ...@@ -535,9 +539,6 @@ Common commands: (see '--help-commands' for more)
for (help_option, short, desc, func) in cmd_class.help_options: for (help_option, short, desc, func) in cmd_class.help_options:
if hasattr(opts, parser.get_attr_name(help_option)): if hasattr(opts, parser.get_attr_name(help_option)):
help_option_found=1 help_option_found=1
#print "showing help for option %s of command %s" % \
# (help_option[0],cmd_class)
if hasattr(func, '__call__'): if hasattr(func, '__call__'):
func() func()
else: else:
...@@ -562,17 +563,13 @@ Common commands: (see '--help-commands' for more) ...@@ -562,17 +563,13 @@ Common commands: (see '--help-commands' for more)
instance, analogous to the .finalize_options() method of Command instance, analogous to the .finalize_options() method of Command
objects. objects.
""" """
keywords = self.metadata.keywords for attr in ('keywords', 'platforms'):
if keywords is not None: value = getattr(self.metadata, attr)
if isinstance(keywords, str): if value is None:
keywordlist = keywords.split(',') continue
self.metadata.keywords = [x.strip() for x in keywordlist] if isinstance(value, str):
value = [elm.strip() for elm in value.split(',')]
platforms = self.metadata.platforms setattr(self.metadata, attr, value)
if platforms is not None:
if isinstance(platforms, str):
platformlist = platforms.split(',')
self.metadata.platforms = [x.strip() for x in platformlist]
def _show_help(self, parser, global_options=1, display_options=1, def _show_help(self, parser, global_options=1, display_options=1,
commands=[]): commands=[]):
...@@ -599,14 +596,14 @@ Common commands: (see '--help-commands' for more) ...@@ -599,14 +596,14 @@ Common commands: (see '--help-commands' for more)
options = self.global_options options = self.global_options
parser.set_option_table(options) parser.set_option_table(options)
parser.print_help(self.common_usage + "\nGlobal options:") parser.print_help(self.common_usage + "\nGlobal options:")
print() self.announce('')
if display_options: if display_options:
parser.set_option_table(self.display_options) parser.set_option_table(self.display_options)
parser.print_help( parser.print_help(
"Information display options (just display " + "Information display options (just display " +
"information, ignore any commands)") "information, ignore any commands)")
print() self.announce('')
for command in self.commands: for command in self.commands:
if isinstance(command, type) and issubclass(command, Command): if isinstance(command, type) and issubclass(command, Command):
...@@ -620,10 +617,9 @@ Common commands: (see '--help-commands' for more) ...@@ -620,10 +617,9 @@ Common commands: (see '--help-commands' for more)
else: else:
parser.set_option_table(klass.user_options) parser.set_option_table(klass.user_options)
parser.print_help("Options for '%s' command:" % klass.__name__) parser.print_help("Options for '%s' command:" % klass.__name__)
print() self.announce('')
print(gen_usage(self.script_name)) self.announce(gen_usage(self.script_name))
return
def handle_display_options(self, option_order): def handle_display_options(self, option_order):
"""If there were any non-global "display-only" options """If there were any non-global "display-only" options
...@@ -638,8 +634,8 @@ Common commands: (see '--help-commands' for more) ...@@ -638,8 +634,8 @@ Common commands: (see '--help-commands' for more)
# we ignore "foo bar"). # we ignore "foo bar").
if self.help_commands: if self.help_commands:
self.print_commands() self.print_commands()
print() self.announce('')
print(gen_usage(self.script_name)) self.announce(gen_usage(self.script_name))
return 1 return 1
# If user supplied any of the "display metadata" options, then # If user supplied any of the "display metadata" options, then
...@@ -655,12 +651,12 @@ Common commands: (see '--help-commands' for more) ...@@ -655,12 +651,12 @@ Common commands: (see '--help-commands' for more)
opt = translate_longopt(opt) opt = translate_longopt(opt)
value = getattr(self.metadata, "get_"+opt)() value = getattr(self.metadata, "get_"+opt)()
if opt in ['keywords', 'platforms']: if opt in ['keywords', 'platforms']:
print(','.join(value)) self.announce(','.join(value))
elif opt in ('classifiers', 'provides', 'requires', elif opt in ('classifiers', 'provides', 'requires',
'obsoletes'): 'obsoletes'):
print('\n'.join(value)) self.announce('\n'.join(value))
else: else:
print(value) self.announce(value)
any_display_options = 1 any_display_options = 1
return any_display_options return any_display_options
...@@ -669,7 +665,7 @@ Common commands: (see '--help-commands' for more) ...@@ -669,7 +665,7 @@ Common commands: (see '--help-commands' for more)
"""Print a subset of the list of all commands -- used by """Print a subset of the list of all commands -- used by
'print_commands()'. 'print_commands()'.
""" """
print(header + ":") self.announce(header + ":")
for cmd in commands: for cmd in commands:
klass = self.cmdclass.get(cmd) klass = self.cmdclass.get(cmd)
...@@ -680,7 +676,7 @@ Common commands: (see '--help-commands' for more) ...@@ -680,7 +676,7 @@ Common commands: (see '--help-commands' for more)
except AttributeError: except AttributeError:
description = "(no description available)" description = "(no description available)"
print(" %-*s %s" % (max_length, cmd, description)) self.announce(" %-*s %s" % (max_length, cmd, description))
def print_commands(self): def print_commands(self):
"""Print out a help message listing all available commands with a """Print out a help message listing all available commands with a
...@@ -752,11 +748,10 @@ Common commands: (see '--help-commands' for more) ...@@ -752,11 +748,10 @@ Common commands: (see '--help-commands' for more)
def get_command_packages(self): def get_command_packages(self):
"""Return a list of packages from which commands are loaded.""" """Return a list of packages from which commands are loaded."""
pkgs = self.command_packages pkgs = self.command_packages
if not isinstance(pkgs, type([])): if not isinstance(pkgs, list):
pkgs = (pkgs or "").split(",") if pkgs is None:
for i in range(len(pkgs)): pkgs = ''
pkgs[i] = pkgs[i].strip() pkgs = [pkg.strip() for pkg in pkgs.split(',') if pkg != '']
pkgs = [p for p in pkgs if p]
if "distutils.command" not in pkgs: if "distutils.command" not in pkgs:
pkgs.insert(0, "distutils.command") pkgs.insert(0, "distutils.command")
self.command_packages = pkgs self.command_packages = pkgs
...@@ -809,8 +804,8 @@ Common commands: (see '--help-commands' for more) ...@@ -809,8 +804,8 @@ Common commands: (see '--help-commands' for more)
cmd_obj = self.command_obj.get(command) cmd_obj = self.command_obj.get(command)
if not cmd_obj and create: if not cmd_obj and create:
if DEBUG: if DEBUG:
print("Distribution.get_command_obj(): " \ self.announce("Distribution.get_command_obj(): " \
"creating '%s' command object" % command) "creating '%s' command object" % command)
klass = self.get_command_class(command) klass = self.get_command_class(command)
cmd_obj = self.command_obj[command] = klass(self) cmd_obj = self.command_obj[command] = klass(self)
...@@ -840,9 +835,12 @@ Common commands: (see '--help-commands' for more) ...@@ -840,9 +835,12 @@ Common commands: (see '--help-commands' for more)
if option_dict is None: if option_dict is None:
option_dict = self.get_option_dict(command_name) option_dict = self.get_option_dict(command_name)
if DEBUG: print(" setting options for '%s' command:" % command_name) if DEBUG:
self.announce(" setting options for '%s' command:" % command_name)
for (option, (source, value)) in option_dict.items(): for (option, (source, value)) in option_dict.items():
if DEBUG: print(" %s = %s (from %s)" % (option, value, source)) if DEBUG:
self.announce(" %s = %s (from %s)" % (option, value,
source))
try: try:
bool_opts = [translate_longopt(o) bool_opts = [translate_longopt(o)
for o in command_obj.boolean_options] for o in command_obj.boolean_options]
...@@ -1036,7 +1034,7 @@ class DistributionMetadata: ...@@ -1036,7 +1034,7 @@ class DistributionMetadata:
if self.download_url: if self.download_url:
file.write('Download-URL: %s\n' % self.download_url) file.write('Download-URL: %s\n' % self.download_url)
long_desc = rfc822_escape( self.get_long_description() ) long_desc = rfc822_escape(self.get_long_description())
file.write('Description: %s\n' % long_desc) file.write('Description: %s\n' % long_desc)
keywords = ','.join(self.get_keywords()) keywords = ','.join(self.get_keywords())
......
# -*- coding: utf8 -*-
"""Tests for distutils.dist.""" """Tests for distutils.dist."""
import os import os
import io import io
...@@ -35,7 +36,8 @@ class TestDistribution(Distribution): ...@@ -35,7 +36,8 @@ class TestDistribution(Distribution):
return self._config_files return self._config_files
class DistributionTestCase(unittest.TestCase): class DistributionTestCase(support.LoggingSilencer,
unittest.TestCase):
def setUp(self): def setUp(self):
super(DistributionTestCase, self).setUp() super(DistributionTestCase, self).setUp()
...@@ -122,6 +124,49 @@ class DistributionTestCase(unittest.TestCase): ...@@ -122,6 +124,49 @@ class DistributionTestCase(unittest.TestCase):
self.assertEquals(len(warns), 0) self.assertEquals(len(warns), 0)
def test_finalize_options(self):
attrs = {'keywords': 'one,two',
'platforms': 'one,two'}
dist = Distribution(attrs=attrs)
dist.finalize_options()
# finalize_option splits platforms and keywords
self.assertEquals(dist.metadata.platforms, ['one', 'two'])
self.assertEquals(dist.metadata.keywords, ['one', 'two'])
def test_show_help(self):
class FancyGetopt(object):
def __init__(self):
self.count = 0
def set_option_table(self, *args):
pass
def print_help(self, *args):
self.count += 1
parser = FancyGetopt()
dist = Distribution()
dist.commands = ['sdist']
dist.script_name = 'setup.py'
dist._show_help(parser)
self.assertEquals(parser.count, 3)
def test_get_command_packages(self):
dist = Distribution()
self.assertEquals(dist.command_packages, None)
cmds = dist.get_command_packages()
self.assertEquals(cmds, ['distutils.command'])
self.assertEquals(dist.command_packages,
['distutils.command'])
dist.command_packages = 'one,two'
cmds = dist.get_command_packages()
self.assertEquals(cmds, ['distutils.command', 'one', 'two'])
class MetadataTestCase(support.TempdirManager, support.EnvironGuard, class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
unittest.TestCase): unittest.TestCase):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment