blob: 8952e744e5d365e8439fbb9d52bf9e4d770f8366 [file] [log] [blame]
Fred Drakebb7c1442004-06-15 15:49:46 +00001"""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
Fred Drakeb8ab8b62004-06-17 20:14:50 +00009from distutils.tests import support
Éric Araujob344dd02011-02-02 21:38:37 +000010from test.support import run_unittest
Fred Drakebb7c1442004-06-15 15:49:46 +000011
Fred Drakebb7c1442004-06-15 15:49:46 +000012
Fred Drakeedcac8f2004-08-03 18:53:07 +000013class InstallScriptsTestCase(support.TempdirManager,
14 support.LoggingSilencer,
15 unittest.TestCase):
Fred Draked0620dc2004-06-15 16:55:46 +000016
Fred Drakebb7c1442004-06-15 15:49:46 +000017 def test_default_settings(self):
18 dist = Distribution()
Fred Drakeb8ab8b62004-06-17 20:14:50 +000019 dist.command_obj["build"] = support.DummyCommand(
20 build_scripts="/foo/bar")
21 dist.command_obj["install"] = support.DummyCommand(
Fred Drakebb7c1442004-06-15 15:49:46 +000022 install_scripts="/splat/funk",
23 force=1,
24 skip_build=1,
25 )
26 cmd = install_scripts(dist)
Georg Brandlab91fde2009-08-13 08:51:18 +000027 self.assertTrue(not cmd.force)
28 self.assertTrue(not cmd.skip_build)
29 self.assertTrue(cmd.build_dir is None)
30 self.assertTrue(cmd.install_dir is None)
Fred Drakebb7c1442004-06-15 15:49:46 +000031
32 cmd.finalize_options()
33
Georg Brandlab91fde2009-08-13 08:51:18 +000034 self.assertTrue(cmd.force)
35 self.assertTrue(cmd.skip_build)
Fred Drakebb7c1442004-06-15 15:49:46 +000036 self.assertEqual(cmd.build_dir, "/foo/bar")
37 self.assertEqual(cmd.install_dir, "/splat/funk")
38
Fred Draked0620dc2004-06-15 16:55:46 +000039 def test_installation(self):
40 source = self.mkdtemp()
41 expected = []
42
43 def write_script(name, text):
44 expected.append(name)
45 f = open(os.path.join(source, name), "w")
Éric Araujoc6d7ead2010-11-06 02:58:56 +000046 try:
47 f.write(text)
48 finally:
49 f.close()
Fred Draked0620dc2004-06-15 16:55:46 +000050
51 write_script("script1.py", ("#! /usr/bin/env python2.3\n"
52 "# bogus script w/ Python sh-bang\n"
53 "pass\n"))
54 write_script("script2.py", ("#!/usr/bin/python\n"
55 "# bogus script w/ Python sh-bang\n"
56 "pass\n"))
57 write_script("shell.sh", ("#!/bin/sh\n"
58 "# bogus shell script w/ sh-bang\n"
59 "exit 0\n"))
60
61 target = self.mkdtemp()
62 dist = Distribution()
Fred Drakeb8ab8b62004-06-17 20:14:50 +000063 dist.command_obj["build"] = support.DummyCommand(build_scripts=source)
64 dist.command_obj["install"] = support.DummyCommand(
Fred Draked0620dc2004-06-15 16:55:46 +000065 install_scripts=target,
66 force=1,
67 skip_build=1,
68 )
69 cmd = install_scripts(dist)
70 cmd.finalize_options()
71 cmd.run()
72
73 installed = os.listdir(target)
74 for name in expected:
Georg Brandlab91fde2009-08-13 08:51:18 +000075 self.assertTrue(name in installed)
Fred Draked0620dc2004-06-15 16:55:46 +000076
Fred Drakebb7c1442004-06-15 15:49:46 +000077
Fred Drakebb7c1442004-06-15 15:49:46 +000078def test_suite():
79 return unittest.makeSuite(InstallScriptsTestCase)
Fred Drake22021572004-06-25 19:04:21 +000080
81if __name__ == "__main__":
Éric Araujob344dd02011-02-02 21:38:37 +000082 run_unittest(test_suite())