Commit | Line | Data |
---|---|---|
920dae64 AT |
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") |