codekingpro/portable-devtools
114k
1"""Tests for distutils.command.build_scripts."""2 3import os4import textwrap5from distutils import sysconfig6from distutils.command.build_scripts import build_scripts7from distutils.core import Distribution8from distutils.tests import support9 10import jaraco.path11 12 13class TestBuildScripts(support.TempdirManager):14 def test_default_settings(self):15 cmd = self.get_build_scripts_cmd("/foo/bar", [])16 assert not cmd.force17 assert cmd.build_dir is None18 19 cmd.finalize_options()20 21 assert cmd.force22 assert cmd.build_dir == "/foo/bar"23 24 def test_build(self):25 source = self.mkdtemp()26 target = self.mkdtemp()27 expected = self.write_sample_scripts(source)28 29 cmd = self.get_build_scripts_cmd(30 target, [os.path.join(source, fn) for fn in expected]31 )32 cmd.finalize_options()33 cmd.run()34 35 built = os.listdir(target)36 for name in expected:37 assert name in built38 39 def get_build_scripts_cmd(self, target, scripts):40 import sys41 42 dist = Distribution()43 dist.scripts = scripts44 dist.command_obj["build"] = support.DummyCommand(45 build_scripts=target, force=True, executable=sys.executable46 )47 return build_scripts(dist)48 49 @staticmethod50 def write_sample_scripts(dir):51 spec = {52 'script1.py': textwrap.dedent("""53 #! /usr/bin/env python2.354 # bogus script w/ Python sh-bang55 pass56 """).lstrip(),57 'script2.py': textwrap.dedent("""58 #!/usr/bin/python59 # bogus script w/ Python sh-bang60 pass61 """).lstrip(),62 'shell.sh': textwrap.dedent("""63 #!/bin/sh64 # bogus shell script w/ sh-bang65 exit 066 """).lstrip(),67 }68 jaraco.path.build(spec, dir)69 return list(spec)70 71 def test_version_int(self):72 source = self.mkdtemp()73 target = self.mkdtemp()74 expected = self.write_sample_scripts(source)75 76 cmd = self.get_build_scripts_cmd(77 target, [os.path.join(source, fn) for fn in expected]78 )79 cmd.finalize_options()80 81 # https://bugs.python.org/issue452482 #83 # On linux-g++-32 with command line `./configure --enable-ipv684 # --with-suffix=3`, python is compiled okay but the build scripts85 # failed when writing the name of the executable86 old = sysconfig.get_config_vars().get('VERSION')87 sysconfig._config_vars['VERSION'] = 488 try:89 cmd.run()90 finally:91 if old is not None:92 sysconfig._config_vars['VERSION'] = old93 94 built = os.listdir(target)95 for name in expected:96 assert name in built97 