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

Merged revisions 74990 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r74990 | tarek.ziade | 2009-09-21 15:01:54 +0200 (Mon, 21 Sep 2009) | 9 lines

  Merged revisions 74988 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r74988 | tarek.ziade | 2009-09-21 14:19:07 +0200 (Mon, 21 Sep 2009) | 1 line

    improved distutils test coverage: now the DEBUG mode is covered too (will help fix the issue #6954 in py3k branch)
  ........
................
üst 14214261
...@@ -157,7 +157,7 @@ class Command: ...@@ -157,7 +157,7 @@ class Command:
self.announce(indent + header, level=log.INFO) self.announce(indent + header, level=log.INFO)
indent = indent + " " indent = indent + " "
for (option, _, _) in self.user_options: for (option, _, _) in self.user_options:
option = longopt_xlate(option) option = option.translate(longopt_xlate)
if option[-1] == "=": if option[-1] == "=":
option = option[:-1] option = option[:-1]
value = getattr(self, option) value = getattr(self, option)
......
...@@ -26,7 +26,7 @@ neg_alias_re = re.compile("^(%s)=!(%s)$" % (longopt_pat, longopt_pat)) ...@@ -26,7 +26,7 @@ neg_alias_re = re.compile("^(%s)=!(%s)$" % (longopt_pat, longopt_pat))
# This is used to translate long options to legitimate Python identifiers # This is used to translate long options to legitimate Python identifiers
# (for use as attributes of some object). # (for use as attributes of some object).
longopt_xlate = lambda s: s.replace('-', '_') longopt_xlate = str.maketrans('-', '_')
class FancyGetopt: class FancyGetopt:
"""Wrapper around the standard 'getopt()' module that provides some """Wrapper around the standard 'getopt()' module that provides some
...@@ -107,7 +107,7 @@ class FancyGetopt: ...@@ -107,7 +107,7 @@ class FancyGetopt:
"""Translate long option name 'long_option' to the form it """Translate long option name 'long_option' to the form it
has as an attribute of some object: ie., translate hyphens has as an attribute of some object: ie., translate hyphens
to underscores.""" to underscores."""
return longopt_xlate(long_option) return long_option.translate(longopt_xlate)
def _check_alias_dict(self, aliases, what): def _check_alias_dict(self, aliases, what):
assert isinstance(aliases, dict) assert isinstance(aliases, dict)
...@@ -432,7 +432,7 @@ def translate_longopt(opt): ...@@ -432,7 +432,7 @@ def translate_longopt(opt):
"""Convert a long option name to a valid Python identifier by """Convert a long option name to a valid Python identifier by
changing "-" to "_". changing "-" to "_".
""" """
return longopt_xlate(opt) return opt.translate(longopt_xlate)
class OptionDummy: class OptionDummy:
......
"""Tests for distutils.cmd.""" """Tests for distutils.cmd."""
import unittest import unittest
import os import os
from test.support import captured_stdout
from distutils.cmd import Command from distutils.cmd import Command
from distutils.dist import Distribution from distutils.dist import Distribution
from distutils.errors import DistutilsOptionError from distutils.errors import DistutilsOptionError
from distutils import debug
class MyCmd(Command): class MyCmd(Command):
def initialize_options(self): def initialize_options(self):
...@@ -102,6 +104,22 @@ class CommandTestCase(unittest.TestCase): ...@@ -102,6 +104,22 @@ class CommandTestCase(unittest.TestCase):
cmd.option2 = 'xxx' cmd.option2 = 'xxx'
self.assertRaises(DistutilsOptionError, cmd.ensure_dirname, 'option2') self.assertRaises(DistutilsOptionError, cmd.ensure_dirname, 'option2')
def test_debug_print(self):
cmd = self.cmd
with captured_stdout() as stdout:
cmd.debug_print('xxx')
stdout.seek(0)
self.assertEquals(stdout.read(), '')
debug.DEBUG = True
try:
with captured_stdout() as stdout:
cmd.debug_print('xxx')
stdout.seek(0)
self.assertEquals(stdout.read(), 'xxx\n')
finally:
debug.DEBUG = False
def test_suite(): def test_suite():
return unittest.makeSuite(CommandTestCase) return unittest.makeSuite(CommandTestCase)
......
...@@ -6,6 +6,7 @@ import os ...@@ -6,6 +6,7 @@ import os
import shutil import shutil
import sys import sys
import test.support import test.support
from test.support import captured_stdout
import unittest import unittest
...@@ -33,10 +34,12 @@ class CoreTestCase(unittest.TestCase): ...@@ -33,10 +34,12 @@ class CoreTestCase(unittest.TestCase):
def setUp(self): def setUp(self):
self.old_stdout = sys.stdout self.old_stdout = sys.stdout
self.cleanup_testfn() self.cleanup_testfn()
self.old_argv = sys.argv[:]
def tearDown(self): def tearDown(self):
sys.stdout = self.old_stdout sys.stdout = self.old_stdout
self.cleanup_testfn() self.cleanup_testfn()
sys.argv = self.old_argv[:]
def cleanup_testfn(self): def cleanup_testfn(self):
path = test.support.TESTFN path = test.support.TESTFN
...@@ -73,6 +76,23 @@ class CoreTestCase(unittest.TestCase): ...@@ -73,6 +76,23 @@ class CoreTestCase(unittest.TestCase):
output = output[:-1] output = output[:-1]
self.assertEqual(cwd, output) self.assertEqual(cwd, output)
def test_debug_mode(self):
# this covers the code called when DEBUG is set
sys.argv = ['setup.py', '--name']
with captured_stdout() as stdout:
distutils.core.setup(name='bar')
stdout.seek(0)
self.assertEquals(stdout.read(), 'bar\n')
distutils.core.DEBUG = True
try:
with captured_stdout() as stdout:
distutils.core.setup(name='bar')
finally:
distutils.core.DEBUG = False
stdout.seek(0)
wanted = "options (after parsing config files):\n"
self.assertEquals(stdout.readlines()[0], wanted)
def test_suite(): def test_suite():
return unittest.makeSuite(CoreTestCase) return unittest.makeSuite(CoreTestCase)
......
"""Tests for distutils.filelist.""" """Tests for distutils.filelist."""
import unittest import unittest
from distutils.filelist import glob_to_re
from distutils.filelist import glob_to_re, FileList
from test.support import captured_stdout
from distutils import debug
class FileListTestCase(unittest.TestCase): class FileListTestCase(unittest.TestCase):
...@@ -16,6 +19,22 @@ class FileListTestCase(unittest.TestCase): ...@@ -16,6 +19,22 @@ class FileListTestCase(unittest.TestCase):
self.assertEquals(glob_to_re('foo????'), r'foo[^/][^/][^/][^/]$') self.assertEquals(glob_to_re('foo????'), r'foo[^/][^/][^/][^/]$')
self.assertEquals(glob_to_re(r'foo\\??'), r'foo\\\\[^/][^/]$') self.assertEquals(glob_to_re(r'foo\\??'), r'foo\\\\[^/][^/]$')
def test_debug_print(self):
file_list = FileList()
with captured_stdout() as stdout:
file_list.debug_print('xxx')
stdout.seek(0)
self.assertEquals(stdout.read(), '')
debug.DEBUG = True
try:
with captured_stdout() as stdout:
file_list.debug_print('xxx')
stdout.seek(0)
self.assertEquals(stdout.read(), 'xxx\n')
finally:
debug.DEBUG = False
def test_suite(): def test_suite():
return unittest.makeSuite(FileListTestCase) return unittest.makeSuite(FileListTestCase)
......
...@@ -6,6 +6,8 @@ import sys ...@@ -6,6 +6,8 @@ import sys
import unittest import unittest
import site import site
from test.support import captured_stdout
from distutils.command.install import install from distutils.command.install import install
from distutils.command import install as install_module from distutils.command import install as install_module
from distutils.command.install import INSTALL_SCHEMES from distutils.command.install import INSTALL_SCHEMES
...@@ -14,7 +16,6 @@ from distutils.errors import DistutilsOptionError ...@@ -14,7 +16,6 @@ from distutils.errors import DistutilsOptionError
from distutils.tests import support from distutils.tests import support
class InstallTestCase(support.TempdirManager, class InstallTestCase(support.TempdirManager,
support.LoggingSilencer, support.LoggingSilencer,
unittest.TestCase): unittest.TestCase):
...@@ -183,6 +184,17 @@ class InstallTestCase(support.TempdirManager, ...@@ -183,6 +184,17 @@ class InstallTestCase(support.TempdirManager,
with open(cmd.record) as f: with open(cmd.record) as f:
self.assertEquals(len(f.readlines()), 1) self.assertEquals(len(f.readlines()), 1)
def test_debug_mode(self):
# this covers the code called when DEBUG is set
old_logs_len = len(self.logs)
install_module.DEBUG = True
try:
with captured_stdout() as stdout:
self.test_record()
finally:
install_module.DEBUG = False
self.assertTrue(len(self.logs) > old_logs_len)
def test_suite(): def test_suite():
return unittest.makeSuite(InstallTestCase) return unittest.makeSuite(InstallTestCase)
......
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