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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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")