python (3.11.7)

(root)/
lib/
python3.11/
distutils/
tests/
test_build_scripts.py
       1  """Tests for distutils.command.build_scripts."""
       2  
       3  import os
       4  import unittest
       5  
       6  from distutils.command.build_scripts import build_scripts
       7  from distutils.core import Distribution
       8  from distutils import sysconfig
       9  
      10  from distutils.tests import support
      11  
      12  
      13  class ESC[4;38;5;81mBuildScriptsTestCase(ESC[4;38;5;149msupportESC[4;38;5;149m.ESC[4;38;5;149mTempdirManager,
      14                             ESC[4;38;5;149msupportESC[4;38;5;149m.ESC[4;38;5;149mLoggingSilencer,
      15                             ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      16  
      17      def test_default_settings(self):
      18          cmd = self.get_build_scripts_cmd("/foo/bar", [])
      19          self.assertFalse(cmd.force)
      20          self.assertIsNone(cmd.build_dir)
      21  
      22          cmd.finalize_options()
      23  
      24          self.assertTrue(cmd.force)
      25          self.assertEqual(cmd.build_dir, "/foo/bar")
      26  
      27      def test_build(self):
      28          source = self.mkdtemp()
      29          target = self.mkdtemp()
      30          expected = self.write_sample_scripts(source)
      31  
      32          cmd = self.get_build_scripts_cmd(target,
      33                                           [os.path.join(source, fn)
      34                                            for fn in expected])
      35          cmd.finalize_options()
      36          cmd.run()
      37  
      38          built = os.listdir(target)
      39          for name in expected:
      40              self.assertIn(name, built)
      41  
      42      def get_build_scripts_cmd(self, target, scripts):
      43          import sys
      44          dist = Distribution()
      45          dist.scripts = scripts
      46          dist.command_obj["build"] = support.DummyCommand(
      47              build_scripts=target,
      48              force=1,
      49              executable=sys.executable
      50              )
      51          return build_scripts(dist)
      52  
      53      def write_sample_scripts(self, dir):
      54          expected = []
      55          expected.append("script1.py")
      56          self.write_script(dir, "script1.py",
      57                            ("#! /usr/bin/env python2.3\n"
      58                             "# bogus script w/ Python sh-bang\n"
      59                             "pass\n"))
      60          expected.append("script2.py")
      61          self.write_script(dir, "script2.py",
      62                            ("#!/usr/bin/python\n"
      63                             "# bogus script w/ Python sh-bang\n"
      64                             "pass\n"))
      65          expected.append("shell.sh")
      66          self.write_script(dir, "shell.sh",
      67                            ("#!/bin/sh\n"
      68                             "# bogus shell script w/ sh-bang\n"
      69                             "exit 0\n"))
      70          return expected
      71  
      72      def write_script(self, dir, name, text):
      73          f = open(os.path.join(dir, name), "w")
      74          try:
      75              f.write(text)
      76          finally:
      77              f.close()
      78  
      79      def test_version_int(self):
      80          source = self.mkdtemp()
      81          target = self.mkdtemp()
      82          expected = self.write_sample_scripts(source)
      83  
      84  
      85          cmd = self.get_build_scripts_cmd(target,
      86                                           [os.path.join(source, fn)
      87                                            for fn in expected])
      88          cmd.finalize_options()
      89  
      90          # http://bugs.python.org/issue4524
      91          #
      92          # On linux-g++-32 with command line `./configure --enable-ipv6
      93          # --with-suffix=3`, python is compiled okay but the build scripts
      94          # failed when writing the name of the executable
      95          old = sysconfig.get_config_vars().get('VERSION')
      96          sysconfig._config_vars['VERSION'] = 4
      97          try:
      98              cmd.run()
      99          finally:
     100              if old is not None:
     101                  sysconfig._config_vars['VERSION'] = old
     102  
     103          built = os.listdir(target)
     104          for name in expected:
     105              self.assertIn(name, built)
     106  
     107  if __name__ == "__main__":
     108      unittest.main()