Added tests form install_lib and pep8-fied the module

This commit is contained in:
Tarek Ziadé 2009-05-10 11:42:46 +00:00
parent d5d83424d2
commit 234ab8fc1c
2 changed files with 97 additions and 27 deletions

View File

@ -6,7 +6,6 @@ Implements the Distutils 'install_lib' command
__revision__ = "$Id$" __revision__ = "$Id$"
import os import os
from types import IntType
from distutils.core import Command from distutils.core import Command
from distutils.errors import DistutilsOptionError from distutils.errors import DistutilsOptionError
@ -51,7 +50,6 @@ class install_lib (Command):
boolean_options = ['force', 'compile', 'skip-build'] boolean_options = ['force', 'compile', 'skip-build']
negative_opt = {'no-compile' : 'compile'} negative_opt = {'no-compile' : 'compile'}
def initialize_options(self): def initialize_options(self):
# let the 'install' command dictate our installation directory # let the 'install' command dictate our installation directory
self.install_dir = None self.install_dir = None
@ -62,7 +60,6 @@ class install_lib (Command):
self.skip_build = None self.skip_build = None
def finalize_options(self): def finalize_options(self):
# Get all the information we need to install pure Python modules # Get all the information we need to install pure Python modules
# from the umbrella 'install' command -- build (source) directory, # from the umbrella 'install' command -- build (source) directory,
# install (target) directory, and whether to compile .py files. # install (target) directory, and whether to compile .py files.
@ -80,15 +77,14 @@ class install_lib (Command):
if self.optimize is None: if self.optimize is None:
self.optimize = 0 self.optimize = 0
if type(self.optimize) is not IntType: if not isinstance(self.optimize, int):
try: try:
self.optimize = int(self.optimize) self.optimize = int(self.optimize)
assert 0 <= self.optimize <= 2 assert self.optimize in (0, 1, 2)
except (ValueError, AssertionError): except (ValueError, AssertionError):
raise DistutilsOptionError, "optimize must be 0, 1, or 2" raise DistutilsOptionError, "optimize must be 0, 1, or 2"
def run(self): def run(self):
# Make sure we have built everything we need first # Make sure we have built everything we need first
self.build() self.build()
@ -101,9 +97,6 @@ class install_lib (Command):
if outfiles is not None and self.distribution.has_pure_modules(): if outfiles is not None and self.distribution.has_pure_modules():
self.byte_compile(outfiles) self.byte_compile(outfiles)
# run ()
# -- Top-level worker functions ------------------------------------ # -- Top-level worker functions ------------------------------------
# (called from 'run()') # (called from 'run()')
@ -145,7 +138,6 @@ class install_lib (Command):
# -- Utility methods ----------------------------------------------- # -- Utility methods -----------------------------------------------
def _mutate_outputs(self, has_any, build_cmd, cmd_option, output_dir): def _mutate_outputs(self, has_any, build_cmd, cmd_option, output_dir):
if not has_any: if not has_any:
return [] return []
@ -160,8 +152,6 @@ class install_lib (Command):
return outputs return outputs
# _mutate_outputs ()
def _bytecode_filenames(self, py_filenames): def _bytecode_filenames(self, py_filenames):
bytecode_files = [] bytecode_files = []
for py_file in py_filenames: for py_file in py_filenames:
@ -203,8 +193,6 @@ class install_lib (Command):
return pure_outputs + bytecode_outputs + ext_outputs return pure_outputs + bytecode_outputs + ext_outputs
# get_outputs ()
def get_inputs(self): def get_inputs(self):
"""Get the list of files that are input to this command, ie. the """Get the list of files that are input to this command, ie. the
files that get installed as they are named in the build tree. files that get installed as they are named in the build tree.
@ -222,5 +210,3 @@ class install_lib (Command):
inputs.extend(build_ext.get_outputs()) inputs.extend(build_ext.get_outputs())
return inputs return inputs
# class install_lib

View File

@ -0,0 +1,84 @@
"""Tests for distutils.command.install_data."""
import sys
import os
import unittest
from distutils.command.install_lib import install_lib
from distutils.extension import Extension
from distutils.tests import support
from distutils.errors import DistutilsOptionError
class InstallLibTestCase(support.TempdirManager,
support.LoggingSilencer,
unittest.TestCase):
def test_finalize_options(self):
pkg_dir, dist = self.create_dist()
cmd = install_lib(dist)
cmd.finalize_options()
self.assertEquals(cmd.compile, 1)
self.assertEquals(cmd.optimize, 0)
# optimize must be 0, 1, or 2
cmd.optimize = 'foo'
self.assertRaises(DistutilsOptionError, cmd.finalize_options)
cmd.optimize = '4'
self.assertRaises(DistutilsOptionError, cmd.finalize_options)
cmd.optimize = '2'
cmd.finalize_options()
self.assertEquals(cmd.optimize, 2)
def test_byte_compile(self):
pkg_dir, dist = self.create_dist()
cmd = install_lib(dist)
cmd.compile = cmd.optimize = 1
f = os.path.join(pkg_dir, 'foo.py')
self.write_file(f, '# python file')
cmd.byte_compile([f])
self.assert_(os.path.exists(os.path.join(pkg_dir, 'foo.pyc')))
self.assert_(os.path.exists(os.path.join(pkg_dir, 'foo.pyo')))
def test_get_outputs(self):
pkg_dir, dist = self.create_dist()
cmd = install_lib(dist)
# setting up a dist environment
cmd.compile = cmd.optimize = 1
cmd.install_dir = pkg_dir
f = os.path.join(pkg_dir, 'foo.py')
self.write_file(f, '# python file')
cmd.distribution.py_modules = [pkg_dir]
cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
cmd.distribution.packages = [pkg_dir]
cmd.distribution.script_name = 'setup.py'
# get_output should return 4 elements
self.assertEquals(len(cmd.get_outputs()), 4)
def test_get_inputs(self):
pkg_dir, dist = self.create_dist()
cmd = install_lib(dist)
# setting up a dist environment
cmd.compile = cmd.optimize = 1
cmd.install_dir = pkg_dir
f = os.path.join(pkg_dir, 'foo.py')
self.write_file(f, '# python file')
cmd.distribution.py_modules = [pkg_dir]
cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
cmd.distribution.packages = [pkg_dir]
cmd.distribution.script_name = 'setup.py'
# get_input should return 2 elements
self.assertEquals(len(cmd.get_inputs()), 2)
def test_suite():
return unittest.makeSuite(InstallLibTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")