blob: fddaabe111d5d2cd7e799bf41a4d7e5910b31cc3 [file] [log] [blame]
Tarek Ziadéc27aca72009-05-10 11:45:41 +00001"""Tests for distutils.command.install_data."""
2import sys
3import os
4import unittest
5
6from distutils.command.install_lib import install_lib
7from distutils.extension import Extension
8from distutils.tests import support
9from distutils.errors import DistutilsOptionError
Éric Araujob344dd02011-02-02 21:38:37 +000010from test.support import run_unittest
Tarek Ziadéc27aca72009-05-10 11:45:41 +000011
12class InstallLibTestCase(support.TempdirManager,
13 support.LoggingSilencer,
Tarek Ziadéf456a152009-10-18 12:41:30 +000014 support.EnvironGuard,
Tarek Ziadéc27aca72009-05-10 11:45:41 +000015 unittest.TestCase):
16
Tarek Ziadéc27aca72009-05-10 11:45:41 +000017 def test_finalize_options(self):
18 pkg_dir, dist = self.create_dist()
19 cmd = install_lib(dist)
20
21 cmd.finalize_options()
Ezio Melotti19f2aeb2010-11-21 01:30:29 +000022 self.assertEqual(cmd.compile, 1)
23 self.assertEqual(cmd.optimize, 0)
Tarek Ziadéc27aca72009-05-10 11:45:41 +000024
25 # optimize must be 0, 1, or 2
26 cmd.optimize = 'foo'
27 self.assertRaises(DistutilsOptionError, cmd.finalize_options)
28 cmd.optimize = '4'
29 self.assertRaises(DistutilsOptionError, cmd.finalize_options)
30
31 cmd.optimize = '2'
32 cmd.finalize_options()
Ezio Melotti19f2aeb2010-11-21 01:30:29 +000033 self.assertEqual(cmd.optimize, 2)
Tarek Ziadéc27aca72009-05-10 11:45:41 +000034
Tarek Ziadéc76bcea2009-10-25 23:16:51 +000035 @unittest.skipUnless(not sys.dont_write_bytecode,
36 'byte-compile not supported')
Tarek Ziadéc27aca72009-05-10 11:45:41 +000037 def test_byte_compile(self):
38 pkg_dir, dist = self.create_dist()
39 cmd = install_lib(dist)
40 cmd.compile = cmd.optimize = 1
41
42 f = os.path.join(pkg_dir, 'foo.py')
43 self.write_file(f, '# python file')
44 cmd.byte_compile([f])
Georg Brandlab91fde2009-08-13 08:51:18 +000045 self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyc')))
46 self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyo')))
Tarek Ziadéc27aca72009-05-10 11:45:41 +000047
48 def test_get_outputs(self):
49 pkg_dir, dist = self.create_dist()
50 cmd = install_lib(dist)
51
52 # setting up a dist environment
53 cmd.compile = cmd.optimize = 1
54 cmd.install_dir = pkg_dir
55 f = os.path.join(pkg_dir, 'foo.py')
56 self.write_file(f, '# python file')
57 cmd.distribution.py_modules = [pkg_dir]
58 cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
59 cmd.distribution.packages = [pkg_dir]
60 cmd.distribution.script_name = 'setup.py'
61
62 # get_output should return 4 elements
Georg Brandlab91fde2009-08-13 08:51:18 +000063 self.assertTrue(len(cmd.get_outputs()) >= 2)
Tarek Ziadéc27aca72009-05-10 11:45:41 +000064
65 def test_get_inputs(self):
66 pkg_dir, dist = self.create_dist()
67 cmd = install_lib(dist)
68
69 # setting up a dist environment
70 cmd.compile = cmd.optimize = 1
71 cmd.install_dir = pkg_dir
72 f = os.path.join(pkg_dir, 'foo.py')
73 self.write_file(f, '# python file')
74 cmd.distribution.py_modules = [pkg_dir]
75 cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
76 cmd.distribution.packages = [pkg_dir]
77 cmd.distribution.script_name = 'setup.py'
78
79 # get_input should return 2 elements
Ezio Melotti19f2aeb2010-11-21 01:30:29 +000080 self.assertEqual(len(cmd.get_inputs()), 2)
Tarek Ziadéc27aca72009-05-10 11:45:41 +000081
Tarek Ziadéc76bcea2009-10-25 23:16:51 +000082 def test_dont_write_bytecode(self):
83 # makes sure byte_compile is not used
84 pkg_dir, dist = self.create_dist()
85 cmd = install_lib(dist)
86 cmd.compile = 1
87 cmd.optimize = 1
88
89 old_dont_write_bytecode = sys.dont_write_bytecode
90 sys.dont_write_bytecode = True
91 try:
92 cmd.byte_compile([])
93 finally:
94 sys.dont_write_bytecode = old_dont_write_bytecode
95
96 self.assertTrue('byte-compiling is disabled' in self.logs[0][1])
Tarek Ziadéc27aca72009-05-10 11:45:41 +000097
98def test_suite():
99 return unittest.makeSuite(InstallLibTestCase)
100
101if __name__ == "__main__":
Éric Araujob344dd02011-02-02 21:38:37 +0000102 run_unittest(test_suite())