Mercurial > cpython-lru_cache-weakref
annotate Lib/distutils/tests/test_install.py @ 54294:dba767bc3155 legacy-trunk
remove mention of old ctypes version
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sat, 23 May 2009 20:59:09 +0000 |
| parents | 4fd80e66b107 |
| children | 0d8ed9e558f2 |
| rev | line source |
|---|---|
|
32408
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
1 """Tests for distutils.command.install.""" |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
2 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
3 import os |
|
51892
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
4 import os.path |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
5 import sys |
|
32408
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
6 import unittest |
|
51892
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
7 import site |
|
32408
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
8 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
9 from distutils.command.install import install |
|
51892
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
10 from distutils.command import install as install_module |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
11 from distutils.command.install import INSTALL_SCHEMES |
|
32408
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
12 from distutils.core import Distribution |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
13 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
14 from distutils.tests import support |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
15 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
16 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
17 class InstallTestCase(support.TempdirManager, unittest.TestCase): |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
18 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
19 def test_home_installation_scheme(self): |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
20 # This ensure two things: |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
21 # - that --home generates the desired set of directory names |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
22 # - test --home is supported on all platforms |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
23 builddir = self.mkdtemp() |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
24 destination = os.path.join(builddir, "installation") |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
25 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
26 dist = Distribution({"name": "foopkg"}) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
27 # script_name need not exist, it just need to be initialized |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
28 dist.script_name = os.path.join(builddir, "setup.py") |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
29 dist.command_obj["build"] = support.DummyCommand( |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
30 build_base=builddir, |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
31 build_lib=os.path.join(builddir, "lib"), |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
32 ) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
33 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
34 cmd = install(dist) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
35 cmd.home = destination |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
36 cmd.ensure_finalized() |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
37 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
38 self.assertEqual(cmd.install_base, destination) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
39 self.assertEqual(cmd.install_platbase, destination) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
40 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
41 def check_path(got, expected): |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
42 got = os.path.normpath(got) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
43 expected = os.path.normpath(expected) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
44 self.assertEqual(got, expected) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
45 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
46 libdir = os.path.join(destination, "lib", "python") |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
47 check_path(cmd.install_lib, libdir) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
48 check_path(cmd.install_platlib, libdir) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
49 check_path(cmd.install_purelib, libdir) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
50 check_path(cmd.install_headers, |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
51 os.path.join(destination, "include", "python", "foopkg")) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
52 check_path(cmd.install_scripts, os.path.join(destination, "bin")) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
53 check_path(cmd.install_data, destination) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
54 |
|
51892
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
55 def test_user_site(self): |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
56 # site.USER_SITE was introduced in 2.6 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
57 if sys.version < '2.6': |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
58 return |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
59 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
60 # preparing the environement for the test |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
61 self.old_user_base = site.USER_BASE |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
62 self.old_user_site = site.USER_SITE |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
63 self.tmpdir = self.mkdtemp() |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
64 self.user_base = os.path.join(self.tmpdir, 'B') |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
65 self.user_site = os.path.join(self.tmpdir, 'S') |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
66 site.USER_BASE = self.user_base |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
67 site.USER_SITE = self.user_site |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
68 install_module.USER_BASE = self.user_base |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
69 install_module.USER_SITE = self.user_site |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
70 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
71 def _expanduser(path): |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
72 return self.tmpdir |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
73 self.old_expand = os.path.expanduser |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
74 os.path.expanduser = _expanduser |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
75 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
76 try: |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
77 # this is the actual test |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
78 self._test_user_site() |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
79 finally: |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
80 site.USER_BASE = self.old_user_base |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
81 site.USER_SITE = self.old_user_site |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
82 install_module.USER_BASE = self.old_user_base |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
83 install_module.USER_SITE = self.old_user_site |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
84 os.path.expanduser = self.old_expand |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
85 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
86 def _test_user_site(self): |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
87 for key in ('nt_user', 'unix_user', 'os2_home'): |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
88 self.assert_(key in INSTALL_SCHEMES) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
89 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
90 dist = Distribution({'name': 'xx'}) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
91 cmd = install(dist) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
92 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
93 # making sure the user option is there |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
94 options = [name for name, short, lable in |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
95 cmd.user_options] |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
96 self.assert_('user' in options) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
97 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
98 # setting a value |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
99 cmd.user = 1 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
100 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
101 # user base and site shouldn't be created yet |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
102 self.assert_(not os.path.exists(self.user_base)) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
103 self.assert_(not os.path.exists(self.user_site)) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
104 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
105 # let's run finalize |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
106 cmd.ensure_finalized() |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
107 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
108 # now they should |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
109 self.assert_(os.path.exists(self.user_base)) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
110 self.assert_(os.path.exists(self.user_site)) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
111 |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
112 self.assert_('userbase' in cmd.config_vars) |
|
4fd80e66b107
Merged revisions 70017 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
32408
diff
changeset
|
113 self.assert_('usersite' in cmd.config_vars) |
|
32408
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
114 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
115 def test_suite(): |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
116 return unittest.makeSuite(InstallTestCase) |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
117 |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
118 if __name__ == "__main__": |
|
e0a7c461311b
Make distutils "install --home" support all platforms.
Fred Drake <fdrake@acm.org>
parents:
diff
changeset
|
119 unittest.main(defaultTest="test_suite") |
