test_build.py 2.0 KB

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