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