|
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 |
|
9 from distutils.tests import support |
|
10 |
|
11 |
|
12 class BuildScriptsTestCase(support.TempdirManager, |
|
13 support.LoggingSilencer, |
|
14 unittest.TestCase): |
|
15 |
|
16 def test_default_settings(self): |
|
17 cmd = self.get_build_scripts_cmd("/foo/bar", []) |
|
18 self.assert_(not cmd.force) |
|
19 self.assert_(cmd.build_dir is None) |
|
20 |
|
21 cmd.finalize_options() |
|
22 |
|
23 self.assert_(cmd.force) |
|
24 self.assertEqual(cmd.build_dir, "/foo/bar") |
|
25 |
|
26 def test_build(self): |
|
27 source = self.mkdtemp() |
|
28 target = self.mkdtemp() |
|
29 expected = self.write_sample_scripts(source) |
|
30 |
|
31 cmd = self.get_build_scripts_cmd(target, |
|
32 [os.path.join(source, fn) |
|
33 for fn in expected]) |
|
34 cmd.finalize_options() |
|
35 cmd.run() |
|
36 |
|
37 built = os.listdir(target) |
|
38 for name in expected: |
|
39 self.assert_(name in built) |
|
40 |
|
41 def get_build_scripts_cmd(self, target, scripts): |
|
42 import sys |
|
43 dist = Distribution() |
|
44 dist.scripts = scripts |
|
45 dist.command_obj["build"] = support.DummyCommand( |
|
46 build_scripts=target, |
|
47 force=1, |
|
48 executable=sys.executable |
|
49 ) |
|
50 return build_scripts(dist) |
|
51 |
|
52 def write_sample_scripts(self, dir): |
|
53 expected = [] |
|
54 expected.append("script1.py") |
|
55 self.write_script(dir, "script1.py", |
|
56 ("#! /usr/bin/env python2.3\n" |
|
57 "# bogus script w/ Python sh-bang\n" |
|
58 "pass\n")) |
|
59 expected.append("script2.py") |
|
60 self.write_script(dir, "script2.py", |
|
61 ("#!/usr/bin/python\n" |
|
62 "# bogus script w/ Python sh-bang\n" |
|
63 "pass\n")) |
|
64 expected.append("shell.sh") |
|
65 self.write_script(dir, "shell.sh", |
|
66 ("#!/bin/sh\n" |
|
67 "# bogus shell script w/ sh-bang\n" |
|
68 "exit 0\n")) |
|
69 return expected |
|
70 |
|
71 def write_script(self, dir, name, text): |
|
72 f = open(os.path.join(dir, name), "w") |
|
73 f.write(text) |
|
74 f.close() |
|
75 |
|
76 |
|
77 def test_suite(): |
|
78 return unittest.makeSuite(BuildScriptsTestCase) |
|
79 |
|
80 if __name__ == "__main__": |
|
81 unittest.main(defaultTest="test_suite") |