<s> import sys <EOL> import os <EOL> from StringIO import StringIO <EOL> import textwrap <EOL> from distutils . core import Extension , Distribution <EOL> from distutils . command . build_ext import build_ext <EOL> from distutils import sysconfig <EOL> from distutils . tests import support <EOL> from distutils . errors import ( DistutilsSetupError , CompileError , <EOL> DistutilsPlatformError ) <EOL> import unittest <EOL> from test import test_support <EOL> ALREADY_TESTED = False <EOL> class BuildExtTestCase ( support . TempdirManager , <EOL> support . LoggingSilencer , <EOL> unittest . TestCase ) : <EOL> def setUp ( self ) : <EOL> super ( BuildExtTestCase , self ) . setUp ( ) <EOL> self . tmp_dir = self . mkdtemp ( ) <EOL> self . xx_created = False <EOL> sys . path . append ( self . tmp_dir ) <EOL> self . addCleanup ( sys . path . remove , self . tmp_dir ) <EOL> if sys . version > "<STR_LIT>" : <EOL> import site <EOL> self . old_user_base = site . USER_BASE <EOL> site . USER_BASE = self . mkdtemp ( ) <EOL> from distutils . command import build_ext <EOL> build_ext . USER_BASE = site . USER_BASE <EOL> def tearDown ( self ) : <EOL> if self . xx_created : <EOL> test_support . unload ( '<STR_LIT>' ) <EOL> super ( BuildExtTestCase , self ) . tearDown ( ) <EOL> def test_build_ext ( self ) : <EOL> global ALREADY_TESTED <EOL> support . copy_xxmodule_c ( self . tmp_dir ) <EOL> self . xx_created = True <EOL> xx_c = os . path . join ( self . tmp_dir , '<STR_LIT>' ) <EOL> xx_ext = Extension ( '<STR_LIT>' , [ xx_c ] ) <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' , '<STR_LIT>' : [ xx_ext ] } ) <EOL> dist . package_dir = self . tmp_dir <EOL> cmd = build_ext ( dist ) <EOL> support . fixup_build_ext ( cmd ) <EOL> cmd . build_lib = self . tmp_dir <EOL> cmd . build_temp = self . tmp_dir <EOL> old_stdout = sys . stdout <EOL> if not test_support . verbose : <EOL> sys . stdout = StringIO ( ) <EOL> try : <EOL> cmd . ensure_finalized ( ) <EOL> cmd . run ( ) <EOL> finally : <EOL> sys . stdout = old_stdout <EOL> if ALREADY_TESTED : <EOL> self . skipTest ( '<STR_LIT>' % ALREADY_TESTED ) <EOL> else : <EOL> ALREADY_TESTED = type ( self ) . __name__ <EOL> import xx <EOL> for attr in ( '<STR_LIT:error>' , '<STR_LIT:foo>' , '<STR_LIT>' , '<STR_LIT>' ) : <EOL> self . assertTrue ( hasattr ( xx , attr ) ) <EOL> self . assertEqual ( xx . foo ( <NUM_LIT:2> , <NUM_LIT:5> ) , <NUM_LIT:7> ) <EOL> self . assertEqual ( xx . foo ( <NUM_LIT> , <NUM_LIT:15> ) , <NUM_LIT> ) <EOL> self . assertEqual ( xx . new ( ) . demo ( ) , None ) <EOL> if test_support . HAVE_DOCSTRINGS : <EOL> doc = '<STR_LIT>' <EOL> self . assertEqual ( xx . __doc__ , doc ) <EOL> self . assertIsInstance ( xx . Null ( ) , xx . Null ) <EOL> self . assertIsInstance ( xx . Str ( ) , xx . Str ) <EOL> def test_solaris_enable_shared ( self ) : <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' } ) <EOL> cmd = build_ext ( dist ) <EOL> old = sys . platform <EOL> sys . platform = '<STR_LIT>' <EOL> from distutils . sysconfig import _config_vars <EOL> old_var = _config_vars . get ( '<STR_LIT>' ) <EOL> _config_vars [ '<STR_LIT>' ] = <NUM_LIT:1> <EOL> try : <EOL> cmd . ensure_finalized ( ) <EOL> finally : <EOL> sys . platform = old <EOL> if old_var is None : <EOL> del _config_vars [ '<STR_LIT>' ] <EOL> else : <EOL> _config_vars [ '<STR_LIT>' ] = old_var <EOL> self . assertGreater ( len ( cmd . library_dirs ) , <NUM_LIT:0> ) <EOL> @ unittest . skipIf ( sys . version < '<STR_LIT>' , <EOL> '<STR_LIT>' ) <EOL> def test_user_site ( self ) : <EOL> import site <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' } ) <EOL> cmd = build_ext ( dist ) <EOL> options = [ name for name , short , label in <EOL> cmd . user_options ] <EOL> self . assertIn ( '<STR_LIT:user>' , options ) <EOL> cmd . user = <NUM_LIT:1> <EOL> lib = os . path . join ( site . USER_BASE , '<STR_LIT>' ) <EOL> incl = os . path . join ( site . USER_BASE , '<STR_LIT>' ) <EOL> os . mkdir ( lib ) <EOL> os . mkdir ( incl ) <EOL> cmd . ensure_finalized ( ) <EOL> self . assertIn ( lib , cmd . library_dirs ) <EOL> self . assertIn ( lib , cmd . rpath ) <EOL> self . assertIn ( incl , cmd . include_dirs ) <EOL> def test_finalize_options ( self ) : <EOL> modules = [ Extension ( '<STR_LIT:foo>' , [ '<STR_LIT>' ] ) ] <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' , '<STR_LIT>' : modules } ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . finalize_options ( ) <EOL> py_include = sysconfig . get_python_inc ( ) <EOL> self . assertIn ( py_include , cmd . include_dirs ) <EOL> plat_py_include = sysconfig . get_python_inc ( plat_specific = <NUM_LIT:1> ) <EOL> self . assertIn ( plat_py_include , cmd . include_dirs ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . libraries = '<STR_LIT>' <EOL> cmd . finalize_options ( ) <EOL> self . assertEqual ( cmd . libraries , [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . library_dirs = '<STR_LIT>' % os . pathsep <EOL> cmd . finalize_options ( ) <EOL> self . assertIn ( '<STR_LIT>' , cmd . library_dirs ) <EOL> self . assertIn ( '<STR_LIT>' , cmd . library_dirs ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . rpath = '<STR_LIT>' % os . pathsep <EOL> cmd . finalize_options ( ) <EOL> self . assertEqual ( cmd . rpath , [ '<STR_LIT>' , '<STR_LIT>' ] ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . define = '<STR_LIT>' <EOL> cmd . finalize_options ( ) <EOL> self . assertEqual ( cmd . define , [ ( '<STR_LIT>' , '<STR_LIT:1>' ) , ( '<STR_LIT>' , '<STR_LIT:1>' ) ] ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . undef = '<STR_LIT>' <EOL> cmd . finalize_options ( ) <EOL> self . assertEqual ( cmd . undef , [ '<STR_LIT>' , '<STR_LIT>' ] ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . swig_opts = None <EOL> cmd . finalize_options ( ) <EOL> self . assertEqual ( cmd . swig_opts , [ ] ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . swig_opts = '<STR_LIT>' <EOL> cmd . finalize_options ( ) <EOL> self . assertEqual ( cmd . swig_opts , [ '<STR_LIT:1>' , '<STR_LIT:2>' ] ) <EOL> def test_check_extensions_list ( self ) : <EOL> dist = Distribution ( ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . finalize_options ( ) <EOL> self . assertRaises ( DistutilsSetupError , cmd . check_extensions_list , '<STR_LIT:foo>' ) <EOL> exts = [ ( '<STR_LIT:bar>' , '<STR_LIT:foo>' , '<STR_LIT:bar>' ) , '<STR_LIT:foo>' ] <EOL> self . assertRaises ( DistutilsSetupError , cmd . check_extensions_list , exts ) <EOL> exts = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] <EOL> self . assertRaises ( DistutilsSetupError , cmd . check_extensions_list , exts ) <EOL> exts = [ ( '<STR_LIT>' , '<STR_LIT>' ) ] <EOL> self . assertRaises ( DistutilsSetupError , cmd . check_extensions_list , exts ) <EOL> exts = [ ( '<STR_LIT>' , { '<STR_LIT>' : [ '<STR_LIT>' ] , '<STR_LIT>' : '<STR_LIT:foo>' , <EOL> '<STR_LIT>' : '<STR_LIT:bar>' } ) ] <EOL> cmd . check_extensions_list ( exts ) <EOL> ext = exts [ <NUM_LIT:0> ] <EOL> self . assertIsInstance ( ext , Extension ) <EOL> self . assertEqual ( ext . libraries , '<STR_LIT:foo>' ) <EOL> self . assertFalse ( hasattr ( ext , '<STR_LIT>' ) ) <EOL> exts = [ ( '<STR_LIT>' , { '<STR_LIT>' : [ '<STR_LIT>' ] , '<STR_LIT>' : '<STR_LIT:foo>' , <EOL> '<STR_LIT>' : '<STR_LIT:bar>' , '<STR_LIT>' : [ ( '<STR_LIT:1>' , '<STR_LIT:2>' , '<STR_LIT:3>' ) , '<STR_LIT:foo>' ] } ) ] <EOL> self . assertRaises ( DistutilsSetupError , cmd . check_extensions_list , exts ) <EOL> exts [ <NUM_LIT:0> ] [ <NUM_LIT:1> ] [ '<STR_LIT>' ] = [ ( '<STR_LIT:1>' , '<STR_LIT:2>' ) , ( '<STR_LIT:3>' , ) ] <EOL> cmd . check_extensions_list ( exts ) <EOL> self . assertEqual ( exts [ <NUM_LIT:0> ] . undef_macros , [ '<STR_LIT:3>' ] ) <EOL> self . assertEqual ( exts [ <NUM_LIT:0> ] . define_macros , [ ( '<STR_LIT:1>' , '<STR_LIT:2>' ) ] ) <EOL> def test_get_source_files ( self ) : <EOL> modules = [ Extension ( '<STR_LIT:foo>' , [ '<STR_LIT>' ] ) ] <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' , '<STR_LIT>' : modules } ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . ensure_finalized ( ) <EOL> self . assertEqual ( cmd . get_source_files ( ) , [ '<STR_LIT>' ] ) <EOL> def test_compiler_option ( self ) : <EOL> dist = Distribution ( ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . compiler = '<STR_LIT>' <EOL> cmd . ensure_finalized ( ) <EOL> cmd . run ( ) <EOL> self . assertEqual ( cmd . compiler , '<STR_LIT>' ) <EOL> def test_get_outputs ( self ) : <EOL> tmp_dir = self . mkdtemp ( ) <EOL> c_file = os . path . join ( tmp_dir , '<STR_LIT>' ) <EOL> self . write_file ( c_file , '<STR_LIT>' ) <EOL> ext = Extension ( '<STR_LIT:foo>' , [ c_file ] ) <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ ext ] } ) <EOL> cmd = build_ext ( dist ) <EOL> support . fixup_build_ext ( cmd ) <EOL> cmd . ensure_finalized ( ) <EOL> self . assertEqual ( len ( cmd . get_outputs ( ) ) , <NUM_LIT:1> ) <EOL> cmd . build_lib = os . path . join ( self . tmp_dir , '<STR_LIT>' ) <EOL> cmd . build_temp = os . path . join ( self . tmp_dir , '<STR_LIT>' ) <EOL> other_tmp_dir = os . path . realpath ( self . mkdtemp ( ) ) <EOL> old_wd = os . getcwd ( ) <EOL> os . chdir ( other_tmp_dir ) <EOL> try : <EOL> cmd . inplace = <NUM_LIT:1> <EOL> cmd . run ( ) <EOL> so_file = cmd . get_outputs ( ) [ <NUM_LIT:0> ] <EOL> finally : <EOL> os . chdir ( old_wd ) <EOL> self . assertTrue ( os . path . exists ( so_file ) ) <EOL> self . assertEqual ( os . path . splitext ( so_file ) [ - <NUM_LIT:1> ] , <EOL> sysconfig . get_config_var ( '<STR_LIT>' ) ) <EOL> so_dir = os . path . dirname ( so_file ) <EOL> self . assertEqual ( so_dir , other_tmp_dir ) <EOL> cmd . compiler = None <EOL> cmd . inplace = <NUM_LIT:0> <EOL> cmd . run ( ) <EOL> so_file = cmd . get_outputs ( ) [ <NUM_LIT:0> ] <EOL> self . assertTrue ( os . path . exists ( so_file ) ) <EOL> self . assertEqual ( os . path . splitext ( so_file ) [ - <NUM_LIT:1> ] , <EOL> sysconfig . get_config_var ( '<STR_LIT>' ) ) <EOL> so_dir = os . path . dirname ( so_file ) <EOL> self . assertEqual ( so_dir , cmd . build_lib ) <EOL> build_py = cmd . get_finalized_command ( '<STR_LIT>' ) <EOL> build_py . package_dir = { '<STR_LIT>' : '<STR_LIT:bar>' } <EOL> path = cmd . get_ext_fullpath ( '<STR_LIT:foo>' ) <EOL> path = os . path . split ( path ) [ <NUM_LIT:0> ] <EOL> self . assertEqual ( path , cmd . build_lib ) <EOL> cmd . inplace = <NUM_LIT:1> <EOL> other_tmp_dir = os . path . realpath ( self . mkdtemp ( ) ) <EOL> old_wd = os . getcwd ( ) <EOL> os . chdir ( other_tmp_dir ) <EOL> try : <EOL> path = cmd . get_ext_fullpath ( '<STR_LIT:foo>' ) <EOL> finally : <EOL> os . chdir ( old_wd ) <EOL> path = os . path . split ( path ) [ <NUM_LIT:0> ] <EOL> lastdir = os . path . split ( path ) [ - <NUM_LIT:1> ] <EOL> self . assertEqual ( lastdir , '<STR_LIT:bar>' ) <EOL> def test_ext_fullpath ( self ) : <EOL> ext = sysconfig . get_config_vars ( ) [ '<STR_LIT>' ] <EOL> dist = Distribution ( ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . inplace = <NUM_LIT:1> <EOL> cmd . distribution . package_dir = { '<STR_LIT>' : '<STR_LIT:src>' } <EOL> cmd . distribution . packages = [ '<STR_LIT>' , '<STR_LIT>' ] <EOL> curdir = os . getcwd ( ) <EOL> wanted = os . path . join ( curdir , '<STR_LIT:src>' , '<STR_LIT>' , '<STR_LIT>' + ext ) <EOL> path = cmd . get_ext_fullpath ( '<STR_LIT>' ) <EOL> self . assertEqual ( wanted , path ) <EOL> cmd . inplace = <NUM_LIT:0> <EOL> cmd . build_lib = os . path . join ( curdir , '<STR_LIT>' ) <EOL> wanted = os . path . join ( curdir , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' + ext ) <EOL> path = cmd . get_ext_fullpath ( '<STR_LIT>' ) <EOL> self . assertEqual ( wanted , path ) <EOL> build_py = cmd . get_finalized_command ( '<STR_LIT>' ) <EOL> build_py . package_dir = { } <EOL> cmd . distribution . packages = [ '<STR_LIT>' , '<STR_LIT>' ] <EOL> path = cmd . get_ext_fullpath ( '<STR_LIT>' ) <EOL> wanted = os . path . join ( curdir , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' + ext ) <EOL> self . assertEqual ( wanted , path ) <EOL> cmd . inplace = <NUM_LIT:1> <EOL> path = cmd . get_ext_fullpath ( '<STR_LIT>' ) <EOL> wanted = os . path . join ( curdir , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' + ext ) <EOL> self . assertEqual ( wanted , path ) <EOL> def test_build_ext_inplace ( self ) : <EOL> etree_c = os . path . join ( self . tmp_dir , '<STR_LIT>' ) <EOL> etree_ext = Extension ( '<STR_LIT>' , [ etree_c ] ) <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' , '<STR_LIT>' : [ etree_ext ] } ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . ensure_finalized ( ) <EOL> cmd . inplace = <NUM_LIT:1> <EOL> cmd . distribution . package_dir = { '<STR_LIT>' : '<STR_LIT:src>' } <EOL> cmd . distribution . packages = [ '<STR_LIT>' , '<STR_LIT>' ] <EOL> curdir = os . getcwd ( ) <EOL> ext = sysconfig . get_config_var ( "<STR_LIT>" ) <EOL> wanted = os . path . join ( curdir , '<STR_LIT:src>' , '<STR_LIT>' , '<STR_LIT>' + ext ) <EOL> path = cmd . get_ext_fullpath ( '<STR_LIT>' ) <EOL> self . assertEqual ( wanted , path ) <EOL> def test_setuptools_compat ( self ) : <EOL> import distutils . core , distutils . extension , distutils . command . build_ext <EOL> saved_ext = distutils . extension . Extension <EOL> try : <EOL> test_support . import_module ( '<STR_LIT>' , deprecated = True ) <EOL> from setuptools_build_ext import build_ext as setuptools_build_ext <EOL> from setuptools_extension import Extension <EOL> etree_c = os . path . join ( self . tmp_dir , '<STR_LIT>' ) <EOL> etree_ext = Extension ( '<STR_LIT>' , [ etree_c ] ) <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' , '<STR_LIT>' : [ etree_ext ] } ) <EOL> cmd = setuptools_build_ext ( dist ) <EOL> cmd . ensure_finalized ( ) <EOL> cmd . inplace = <NUM_LIT:1> <EOL> cmd . distribution . package_dir = { '<STR_LIT>' : '<STR_LIT:src>' } <EOL> cmd . distribution . packages = [ '<STR_LIT>' , '<STR_LIT>' ] <EOL> curdir = os . getcwd ( ) <EOL> ext = sysconfig . get_config_var ( "<STR_LIT>" ) <EOL> wanted = os . path . join ( curdir , '<STR_LIT:src>' , '<STR_LIT>' , '<STR_LIT>' + ext ) <EOL> path = cmd . get_ext_fullpath ( '<STR_LIT>' ) <EOL> self . assertEqual ( wanted , path ) <EOL> finally : <EOL> distutils . extension . Extension = saved_ext <EOL> distutils . core . Extension = saved_ext <EOL> distutils . command . build_ext . Extension = saved_ext <EOL> def test_build_ext_path_with_os_sep ( self ) : <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' } ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . ensure_finalized ( ) <EOL> ext = sysconfig . get_config_var ( "<STR_LIT>" ) <EOL> ext_name = os . path . join ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> ext_path = cmd . get_ext_fullpath ( ext_name ) <EOL> wanted = os . path . join ( cmd . build_lib , '<STR_LIT>' , '<STR_LIT>' + ext ) <EOL> self . assertEqual ( ext_path , wanted ) <EOL> @ unittest . skipUnless ( sys . platform == '<STR_LIT:win32>' , '<STR_LIT>' ) <EOL> def test_build_ext_path_cross_platform ( self ) : <EOL> dist = Distribution ( { '<STR_LIT:name>' : '<STR_LIT>' } ) <EOL> cmd = build_ext ( dist ) <EOL> cmd . ensure_finalized ( ) <EOL> ext = sysconfig . get_config_var ( "<STR_LIT>" ) <EOL> ext_name = '<STR_LIT>' <EOL> ext_path = cmd . get_ext_fullpath ( ext_name ) <EOL> wanted = os . path . join ( cmd . build_lib , '<STR_LIT>' , '<STR_LIT>' + ext ) <EOL> self . assertEqual ( ext_path , wanted ) <EOL> @ unittest . skipUnless ( sys . platform == '<STR_LIT>' , '<STR_LIT>' ) <EOL> def test_deployment_target_default ( self ) : <EOL> self . _try_compile_deployment_target ( '<STR_LIT>' , None ) <EOL> @ unittest . skipUnless ( sys . platform == '<STR_LIT>' , '<STR_LIT>' ) <EOL> def test_deployment_target_too_low ( self ) : <EOL> self . assertRaises ( DistutilsPlatformError , <EOL> self . _try_compile_deployment_target , '<STR_LIT:>>' , '<STR_LIT>' ) <EOL> @ unittest . skipUnless ( sys . platform == '<STR_LIT>' , '<STR_LIT>' ) <EOL> def test_deployment_target_higher_ok ( self ) : <EOL> deptarget = sysconfig . get_config_var ( '<STR_LIT>' ) <EOL> if deptarget : <EOL> deptarget = [ int ( x ) for x in deptarget . split ( '<STR_LIT:.>' ) ] <EOL> deptarget [ - <NUM_LIT:1> ] += <NUM_LIT:1> <EOL> deptarget = '<STR_LIT:.>' . join ( str ( i ) for i in deptarget ) <EOL> self . _try_compile_deployment_target ( '<STR_LIT:<>' , deptarget ) <EOL> def _try_compile_deployment_target ( self , operator , target ) : <EOL> orig_environ = os . environ <EOL> os . environ = orig_environ . copy ( ) <EOL> self . addCleanup ( setattr , os , '<STR_LIT>' , orig_environ ) <EOL> if target is None : <EOL> if os . environ . get ( '<STR_LIT>' ) : <EOL> del os . environ [ '<STR_LIT>' ] <EOL> else : <EOL> os . environ [ '<STR_LIT>' ] = target <EOL> deptarget_c = os . path . join ( self . tmp_dir , '<STR_LIT>' ) <EOL> with open ( deptarget_c , '<STR_LIT:w>' ) as fp : <EOL> fp . write ( textwrap . dedent ( '''<STR_LIT>''' % operator ) ) <EOL> target = sysconfig . get_config_var ( '<STR_LIT>' ) <EOL> target = tuple ( map ( int , target . split ( '<STR_LIT:.>' ) ) ) <EOL> target = '<STR_LIT>' % target <EOL> deptarget_ext = Extension ( <EOL> '<STR_LIT>' , <EOL> [ deptarget_c ] , <EOL> extra_compile_args = [ '<STR_LIT>' % ( target , ) ] , <EOL> ) <EOL> dist = Distribution ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ deptarget_ext ] <EOL> } ) <EOL> dist . package_dir = self . tmp_dir <EOL> cmd = build_ext ( dist ) <EOL> cmd . build_lib = self . tmp_dir <EOL> cmd . build_temp = self . tmp_dir <EOL> try : <EOL> cmd . ensure_finalized ( ) <EOL> cmd . run ( ) <EOL> except CompileError : <EOL> self . fail ( "<STR_LIT>" ) <EOL> def test_suite ( ) : <EOL> return unittest . makeSuite ( BuildExtTestCase ) <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> test_support . run_unittest ( test_suite ( ) ) </s>
