]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_py.py
d6e9ef12d1bd894546952588ddb757ba65d56158
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / distutils / tests / test_build_py.py
1 """Tests for distutils.command.build_py."""
2
3 import os
4 import sys
5 import StringIO
6 import unittest
7
8 from distutils.command.build_py import build_py
9 from distutils.core import Distribution
10 from distutils.errors import DistutilsFileError
11
12 from distutils.tests import support
13 from test.test_support import run_unittest
14
15
16 class BuildPyTestCase(support.TempdirManager,
17 support.LoggingSilencer,
18 unittest.TestCase):
19
20 def test_package_data(self):
21 sources = self.mkdtemp()
22 f = open(os.path.join(sources, "__init__.py"), "w")
23 try:
24 f.write("# Pretend this is a package.")
25 finally:
26 f.close()
27 f = open(os.path.join(sources, "README.txt"), "w")
28 try:
29 f.write("Info about this package")
30 finally:
31 f.close()
32
33 destination = self.mkdtemp()
34
35 dist = Distribution({"packages": ["pkg"],
36 "package_dir": {"pkg": sources}})
37 # script_name need not exist, it just need to be initialized
38 dist.script_name = os.path.join(sources, "setup.py")
39 dist.command_obj["build"] = support.DummyCommand(
40 force=0,
41 build_lib=destination)
42 dist.packages = ["pkg"]
43 dist.package_data = {"pkg": ["README.txt"]}
44 dist.package_dir = {"pkg": sources}
45
46 cmd = build_py(dist)
47 cmd.compile = 1
48 cmd.ensure_finalized()
49 self.assertEqual(cmd.package_data, dist.package_data)
50
51 cmd.run()
52
53 # This makes sure the list of outputs includes byte-compiled
54 # files for Python modules but not for package data files
55 # (there shouldn't *be* byte-code files for those!).
56 #
57 self.assertEqual(len(cmd.get_outputs()), 3)
58 pkgdest = os.path.join(destination, "pkg")
59 files = os.listdir(pkgdest)
60 self.assertIn("__init__.py", files)
61 self.assertIn("README.txt", files)
62 # XXX even with -O, distutils writes pyc, not pyo; bug?
63 if sys.dont_write_bytecode:
64 self.assertNotIn("__init__.pyc", files)
65 else:
66 self.assertIn("__init__.pyc", files)
67
68 def test_empty_package_dir(self):
69 # See SF 1668596/1720897.
70 cwd = os.getcwd()
71
72 # create the distribution files.
73 sources = self.mkdtemp()
74 open(os.path.join(sources, "__init__.py"), "w").close()
75
76 testdir = os.path.join(sources, "doc")
77 os.mkdir(testdir)
78 open(os.path.join(testdir, "testfile"), "w").close()
79
80 os.chdir(sources)
81 old_stdout = sys.stdout
82 sys.stdout = StringIO.StringIO()
83
84 try:
85 dist = Distribution({"packages": ["pkg"],
86 "package_dir": {"pkg": ""},
87 "package_data": {"pkg": ["doc/*"]}})
88 # script_name need not exist, it just need to be initialized
89 dist.script_name = os.path.join(sources, "setup.py")
90 dist.script_args = ["build"]
91 dist.parse_command_line()
92
93 try:
94 dist.run_commands()
95 except DistutilsFileError:
96 self.fail("failed package_data test when package_dir is ''")
97 finally:
98 # Restore state.
99 os.chdir(cwd)
100 sys.stdout = old_stdout
101
102 def test_dont_write_bytecode(self):
103 # makes sure byte_compile is not used
104 pkg_dir, dist = self.create_dist()
105 cmd = build_py(dist)
106 cmd.compile = 1
107 cmd.optimize = 1
108
109 old_dont_write_bytecode = sys.dont_write_bytecode
110 sys.dont_write_bytecode = True
111 try:
112 cmd.byte_compile([])
113 finally:
114 sys.dont_write_bytecode = old_dont_write_bytecode
115
116 self.assertIn('byte-compiling is disabled', self.logs[0][1])
117
118 def test_suite():
119 return unittest.makeSuite(BuildPyTestCase)
120
121 if __name__ == "__main__":
122 run_unittest(test_suite())