blob: 13d27abac0d1134110ef628914d69218076e2cfe [file] [log] [blame]
Tarek Ziadéc27aca72009-05-10 11:45:41 +00001"""Tests for distutils.command.install_data."""
Tarek Ziadéc27aca72009-05-10 11:45:41 +00002import os
R. David Murray378c0cf2010-02-24 01:46:21 +00003import sys
Tarek Ziadéc27aca72009-05-10 11:45:41 +00004import 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
10
11class InstallLibTestCase(support.TempdirManager,
12 support.LoggingSilencer,
Tarek Ziadé430fb632009-10-18 11:34:51 +000013 support.EnvironGuard,
Tarek Ziadéc27aca72009-05-10 11:45:41 +000014 unittest.TestCase):
15
Tarek Ziadéc27aca72009-05-10 11:45:41 +000016 def test_finalize_options(self):
17 pkg_dir, dist = self.create_dist()
18 cmd = install_lib(dist)
19
20 cmd.finalize_options()
21 self.assertEquals(cmd.compile, 1)
22 self.assertEquals(cmd.optimize, 0)
23
24 # optimize must be 0, 1, or 2
25 cmd.optimize = 'foo'
26 self.assertRaises(DistutilsOptionError, cmd.finalize_options)
27 cmd.optimize = '4'
28 self.assertRaises(DistutilsOptionError, cmd.finalize_options)
29
30 cmd.optimize = '2'
31 cmd.finalize_options()
32 self.assertEquals(cmd.optimize, 2)
33
R. David Murray378c0cf2010-02-24 01:46:21 +000034 def _setup_byte_compile(self):
Tarek Ziadéc27aca72009-05-10 11:45:41 +000035 pkg_dir, dist = self.create_dist()
36 cmd = install_lib(dist)
37 cmd.compile = cmd.optimize = 1
38
39 f = os.path.join(pkg_dir, 'foo.py')
40 self.write_file(f, '# python file')
41 cmd.byte_compile([f])
R. David Murray378c0cf2010-02-24 01:46:21 +000042 return pkg_dir
43
44 @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile not enabled')
45 def test_byte_compile(self):
46 pkg_dir = self._setup_byte_compile()
47 if sys.flags.optimize < 1:
48 self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyc')))
49 else:
50 self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyo')))
Tarek Ziadéc27aca72009-05-10 11:45:41 +000051
52 def test_get_outputs(self):
53 pkg_dir, dist = self.create_dist()
54 cmd = install_lib(dist)
55
56 # setting up a dist environment
57 cmd.compile = cmd.optimize = 1
58 cmd.install_dir = pkg_dir
59 f = os.path.join(pkg_dir, 'foo.py')
60 self.write_file(f, '# python file')
61 cmd.distribution.py_modules = [pkg_dir]
62 cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
63 cmd.distribution.packages = [pkg_dir]
64 cmd.distribution.script_name = 'setup.py'
65
66 # get_output should return 4 elements
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000067 self.assertTrue(len(cmd.get_outputs()) >= 2)
Tarek Ziadéc27aca72009-05-10 11:45:41 +000068
69 def test_get_inputs(self):
70 pkg_dir, dist = self.create_dist()
71 cmd = install_lib(dist)
72
73 # setting up a dist environment
74 cmd.compile = cmd.optimize = 1
75 cmd.install_dir = pkg_dir
76 f = os.path.join(pkg_dir, 'foo.py')
77 self.write_file(f, '# python file')
78 cmd.distribution.py_modules = [pkg_dir]
79 cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
80 cmd.distribution.packages = [pkg_dir]
81 cmd.distribution.script_name = 'setup.py'
82
83 # get_input should return 2 elements
84 self.assertEquals(len(cmd.get_inputs()), 2)
85
Tarek Ziadé04fe7c02009-10-25 23:08:47 +000086 def test_dont_write_bytecode(self):
87 # makes sure byte_compile is not used
88 pkg_dir, dist = self.create_dist()
89 cmd = install_lib(dist)
90 cmd.compile = 1
91 cmd.optimize = 1
92
93 old_dont_write_bytecode = sys.dont_write_bytecode
94 sys.dont_write_bytecode = True
95 try:
96 cmd.byte_compile([])
97 finally:
98 sys.dont_write_bytecode = old_dont_write_bytecode
99
100 self.assertTrue('byte-compiling is disabled' in self.logs[0][1])
Tarek Ziadéc27aca72009-05-10 11:45:41 +0000101
102def test_suite():
103 return unittest.makeSuite(InstallLibTestCase)
104
105if __name__ == "__main__":
106 unittest.main(defaultTest="test_suite")