test_build.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """Tests for distutils.command.build."""
  2. import os
  3. import sys
  4. from distutils.command.build import build
  5. from distutils.tests import support
  6. from sysconfig import get_config_var, get_platform
  7. class TestBuild(support.TempdirManager):
  8. def test_finalize_options(self):
  9. pkg_dir, dist = self.create_dist()
  10. cmd = build(dist)
  11. cmd.finalize_options()
  12. # if not specified, plat_name gets the current platform
  13. assert cmd.plat_name == get_platform()
  14. # build_purelib is build + lib
  15. wanted = os.path.join(cmd.build_base, 'lib')
  16. assert cmd.build_purelib == wanted
  17. # build_platlib is 'build/lib.platform-cache_tag[-pydebug]'
  18. # examples:
  19. # build/lib.macosx-10.3-i386-cpython39
  20. plat_spec = f'.{cmd.plat_name}-{sys.implementation.cache_tag}'
  21. if get_config_var('Py_GIL_DISABLED'):
  22. plat_spec += 't'
  23. if hasattr(sys, 'gettotalrefcount'):
  24. assert cmd.build_platlib.endswith('-pydebug')
  25. plat_spec += '-pydebug'
  26. wanted = os.path.join(cmd.build_base, 'lib' + plat_spec)
  27. assert cmd.build_platlib == wanted
  28. # by default, build_lib = build_purelib
  29. assert cmd.build_lib == cmd.build_purelib
  30. # build_temp is build/temp.<plat>
  31. wanted = os.path.join(cmd.build_base, 'temp' + plat_spec)
  32. assert cmd.build_temp == wanted
  33. # build_scripts is build/scripts-x.x
  34. wanted = os.path.join(
  35. cmd.build_base, f'scripts-{sys.version_info.major}.{sys.version_info.minor}'
  36. )
  37. assert cmd.build_scripts == wanted
  38. # executable is os.path.normpath(sys.executable)
  39. assert cmd.executable == os.path.normpath(sys.executable)