blob: 99a6d9062727972757a07fe29e1c0cac10055b5f [file] [log] [blame]
Tarek Ziadéc27aca72009-05-10 11:45:41 +00001"""Tests for distutils.command.install_data."""
R. David Murray378c0cf2010-02-24 01:46:21 +00002import sys
Tarek Ziadé36797272010-07-22 12:50:05 +00003import os
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
Tarek Ziadé36797272010-07-22 12:50:05 +000034 @unittest.skipUnless(not sys.dont_write_bytecode,
35 'byte-compile not supported')
36 def test_byte_compile(self):
Tarek Ziadéc27aca72009-05-10 11:45:41 +000037 pkg_dir, dist = self.create_dist()
38 cmd = install_lib(dist)
39 cmd.compile = cmd.optimize = 1
40
41 f = os.path.join(pkg_dir, 'foo.py')
42 self.write_file(f, '# python file')
43 cmd.byte_compile([f])
Tarek Ziadé36797272010-07-22 12:50:05 +000044 self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyc')))
45 self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyo')))
Tarek Ziadéc27aca72009-05-10 11:45:41 +000046
47 def test_get_outputs(self):
48 pkg_dir, dist = self.create_dist()
49 cmd = install_lib(dist)
50
51 # setting up a dist environment
52 cmd.compile = cmd.optimize = 1
53 cmd.install_dir = pkg_dir
54 f = os.path.join(pkg_dir, 'foo.py')
55 self.write_file(f, '# python file')
56 cmd.distribution.py_modules = [pkg_dir]
57 cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
58 cmd.distribution.packages = [pkg_dir]
59 cmd.distribution.script_name = 'setup.py'
60
61 # get_output should return 4 elements
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000062 self.assertTrue(len(cmd.get_outputs()) >= 2)
Tarek Ziadéc27aca72009-05-10 11:45:41 +000063
64 def test_get_inputs(self):
65 pkg_dir, dist = self.create_dist()
66 cmd = install_lib(dist)
67
68 # setting up a dist environment
69 cmd.compile = cmd.optimize = 1
70 cmd.install_dir = pkg_dir
71 f = os.path.join(pkg_dir, 'foo.py')
72 self.write_file(f, '# python file')
73 cmd.distribution.py_modules = [pkg_dir]
74 cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
75 cmd.distribution.packages = [pkg_dir]
76 cmd.distribution.script_name = 'setup.py'
77
78 # get_input should return 2 elements
79 self.assertEquals(len(cmd.get_inputs()), 2)
80
Tarek Ziadé04fe7c02009-10-25 23:08:47 +000081 def test_dont_write_bytecode(self):
82 # makes sure byte_compile is not used
83 pkg_dir, dist = self.create_dist()
84 cmd = install_lib(dist)
85 cmd.compile = 1
86 cmd.optimize = 1
87
88 old_dont_write_bytecode = sys.dont_write_bytecode
89 sys.dont_write_bytecode = True
90 try:
91 cmd.byte_compile([])
92 finally:
93 sys.dont_write_bytecode = old_dont_write_bytecode
94
95 self.assertTrue('byte-compiling is disabled' in self.logs[0][1])
Tarek Ziadéc27aca72009-05-10 11:45:41 +000096
97def test_suite():
98 return unittest.makeSuite(InstallLibTestCase)
99
100if __name__ == "__main__":
101 unittest.main(defaultTest="test_suite")