1"""Tests for distutils.command.build.""" 2import unittest 3import os 4import sys 5from test.support import run_unittest 6 7from distutils.command.build import build 8from distutils.tests import support 9from sysconfig import get_platform 10 11class BuildTestCase(support.TempdirManager, 12 support.LoggingSilencer, 13 unittest.TestCase): 14 15 @unittest.skipUnless(sys.executable, "test requires sys.executable") 16 def test_finalize_options(self): 17 pkg_dir, dist = self.create_dist() 18 cmd = build(dist) 19 cmd.finalize_options() 20 21 # if not specified, plat_name gets the current platform 22 self.assertEqual(cmd.plat_name, get_platform()) 23 24 # build_purelib is build + lib 25 wanted = os.path.join(cmd.build_base, 'lib') 26 self.assertEqual(cmd.build_purelib, wanted) 27 28 # build_platlib is 'build/lib.platform-x.x[-pydebug]' 29 # examples: 30 # build/lib.macosx-10.3-i386-2.7 31 plat_spec = '.%s-%d.%d' % (cmd.plat_name, *sys.version_info[:2]) 32 if hasattr(sys, 'gettotalrefcount'): 33 self.assertTrue(cmd.build_platlib.endswith('-pydebug')) 34 plat_spec += '-pydebug' 35 wanted = os.path.join(cmd.build_base, 'lib' + plat_spec) 36 self.assertEqual(cmd.build_platlib, wanted) 37 38 # by default, build_lib = build_purelib 39 self.assertEqual(cmd.build_lib, cmd.build_purelib) 40 41 # build_temp is build/temp.<plat> 42 wanted = os.path.join(cmd.build_base, 'temp' + plat_spec) 43 self.assertEqual(cmd.build_temp, wanted) 44 45 # build_scripts is build/scripts-x.x 46 wanted = os.path.join(cmd.build_base, 47 'scripts-%d.%d' % sys.version_info[:2]) 48 self.assertEqual(cmd.build_scripts, wanted) 49 50 # executable is os.path.normpath(sys.executable) 51 self.assertEqual(cmd.executable, os.path.normpath(sys.executable)) 52 53def test_suite(): 54 return unittest.TestLoader().loadTestsFromTestCase(BuildTestCase) 55 56if __name__ == "__main__": 57 run_unittest(test_suite()) 58