PageRenderTime 30ms CodeModel.GetById 18ms app.highlight 9ms RepoModel.GetById 1ms app.codeStats 0ms

/Lib/distutils/tests/test_install_scripts.py

http://unladen-swallow.googlecode.com/
Python | 79 lines | 62 code | 16 blank | 1 comment | 4 complexity | e545553a25d255b6c88e9d2b94c26cf5 MD5 | raw file
 1"""Tests for distutils.command.install_scripts."""
 2
 3import os
 4import unittest
 5
 6from distutils.command.install_scripts import install_scripts
 7from distutils.core import Distribution
 8
 9from distutils.tests import support
10
11
12class InstallScriptsTestCase(support.TempdirManager,
13                             support.LoggingSilencer,
14                             unittest.TestCase):
15
16    def test_default_settings(self):
17        dist = Distribution()
18        dist.command_obj["build"] = support.DummyCommand(
19            build_scripts="/foo/bar")
20        dist.command_obj["install"] = support.DummyCommand(
21            install_scripts="/splat/funk",
22            force=1,
23            skip_build=1,
24            )
25        cmd = install_scripts(dist)
26        self.assert_(not cmd.force)
27        self.assert_(not cmd.skip_build)
28        self.assert_(cmd.build_dir is None)
29        self.assert_(cmd.install_dir is None)
30
31        cmd.finalize_options()
32
33        self.assert_(cmd.force)
34        self.assert_(cmd.skip_build)
35        self.assertEqual(cmd.build_dir, "/foo/bar")
36        self.assertEqual(cmd.install_dir, "/splat/funk")
37
38    def test_installation(self):
39        source = self.mkdtemp()
40        expected = []
41
42        def write_script(name, text):
43            expected.append(name)
44            f = open(os.path.join(source, name), "w")
45            f.write(text)
46            f.close()
47
48        write_script("script1.py", ("#! /usr/bin/env python2.3\n"
49                                    "# bogus script w/ Python sh-bang\n"
50                                    "pass\n"))
51        write_script("script2.py", ("#!/usr/bin/python\n"
52                                    "# bogus script w/ Python sh-bang\n"
53                                    "pass\n"))
54        write_script("shell.sh", ("#!/bin/sh\n"
55                                  "# bogus shell script w/ sh-bang\n"
56                                  "exit 0\n"))
57
58        target = self.mkdtemp()
59        dist = Distribution()
60        dist.command_obj["build"] = support.DummyCommand(build_scripts=source)
61        dist.command_obj["install"] = support.DummyCommand(
62            install_scripts=target,
63            force=1,
64            skip_build=1,
65            )
66        cmd = install_scripts(dist)
67        cmd.finalize_options()
68        cmd.run()
69
70        installed = os.listdir(target)
71        for name in expected:
72            self.assert_(name in installed)
73
74
75def test_suite():
76    return unittest.makeSuite(InstallScriptsTestCase)
77
78if __name__ == "__main__":
79    unittest.main(defaultTest="test_suite")