Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
setuptools
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jérome Perrin
setuptools
Commits
c166f6b9
Commit
c166f6b9
authored
Aug 26, 2011
by
Éric Araujo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Backport tests for the distutils install command
parent
add9fe8c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
193 additions
and
2 deletions
+193
-2
tests/test_install.py
tests/test_install.py
+193
-2
No files found.
tests/test_install.py
View file @
c166f6b9
"""Tests for distutils.command.install."""
import
os
import
sys
import
unittest
import
site
from
test.test_support
import
run_unittest
from
test.test_support
import
captured_stdout
,
run_unittest
from
distutils
import
sysconfig
from
distutils.command.install
import
install
from
distutils.command
import
install
as
install_module
from
distutils.command.build_ext
import
build_ext
from
distutils.command.install
import
INSTALL_SCHEMES
from
distutils.core
import
Distribution
from
distutils.errors
import
DistutilsOptionError
from
distutils.extension
import
Extension
from
distutils.tests
import
support
class
InstallTestCase
(
support
.
TempdirManager
,
unittest
.
TestCase
):
def
_make_ext_name
(
modname
):
if
os
.
name
==
'nt'
and
sys
.
executable
.
endswith
(
'_d.exe'
):
modname
+=
'_d'
return
modname
+
sysconfig
.
get_config_var
(
'SO'
)
class
InstallTestCase
(
support
.
TempdirManager
,
support
.
LoggingSilencer
,
unittest
.
TestCase
):
def
test_home_installation_scheme
(
self
):
# This ensure two things:
...
...
@@ -49,6 +65,181 @@ class InstallTestCase(support.TempdirManager, unittest.TestCase):
check_path
(
cmd
.
install_scripts
,
os
.
path
.
join
(
destination
,
"bin"
))
check_path
(
cmd
.
install_data
,
destination
)
def
test_user_site
(
self
):
# site.USER_SITE was introduced in 2.6
if
sys
.
version
<
'2.6'
:
return
# preparing the environment for the test
self
.
old_user_base
=
site
.
USER_BASE
self
.
old_user_site
=
site
.
USER_SITE
self
.
tmpdir
=
self
.
mkdtemp
()
self
.
user_base
=
os
.
path
.
join
(
self
.
tmpdir
,
'B'
)
self
.
user_site
=
os
.
path
.
join
(
self
.
tmpdir
,
'S'
)
site
.
USER_BASE
=
self
.
user_base
site
.
USER_SITE
=
self
.
user_site
install_module
.
USER_BASE
=
self
.
user_base
install_module
.
USER_SITE
=
self
.
user_site
def
_expanduser
(
path
):
return
self
.
tmpdir
self
.
old_expand
=
os
.
path
.
expanduser
os
.
path
.
expanduser
=
_expanduser
try
:
# this is the actual test
self
.
_test_user_site
()
finally
:
site
.
USER_BASE
=
self
.
old_user_base
site
.
USER_SITE
=
self
.
old_user_site
install_module
.
USER_BASE
=
self
.
old_user_base
install_module
.
USER_SITE
=
self
.
old_user_site
os
.
path
.
expanduser
=
self
.
old_expand
def
_test_user_site
(
self
):
for
key
in
(
'nt_user'
,
'unix_user'
,
'os2_home'
):
self
.
assertTrue
(
key
in
INSTALL_SCHEMES
)
dist
=
Distribution
({
'name'
:
'xx'
})
cmd
=
install
(
dist
)
# making sure the user option is there
options
=
[
name
for
name
,
short
,
lable
in
cmd
.
user_options
]
self
.
assertTrue
(
'user'
in
options
)
# setting a value
cmd
.
user
=
1
# user base and site shouldn't be created yet
self
.
assertTrue
(
not
os
.
path
.
exists
(
self
.
user_base
))
self
.
assertTrue
(
not
os
.
path
.
exists
(
self
.
user_site
))
# let's run finalize
cmd
.
ensure_finalized
()
# now they should
self
.
assertTrue
(
os
.
path
.
exists
(
self
.
user_base
))
self
.
assertTrue
(
os
.
path
.
exists
(
self
.
user_site
))
self
.
assertTrue
(
'userbase'
in
cmd
.
config_vars
)
self
.
assertTrue
(
'usersite'
in
cmd
.
config_vars
)
def
test_handle_extra_path
(
self
):
dist
=
Distribution
({
'name'
:
'xx'
,
'extra_path'
:
'path,dirs'
})
cmd
=
install
(
dist
)
# two elements
cmd
.
handle_extra_path
()
self
.
assertEqual
(
cmd
.
extra_path
,
[
'path'
,
'dirs'
])
self
.
assertEqual
(
cmd
.
extra_dirs
,
'dirs'
)
self
.
assertEqual
(
cmd
.
path_file
,
'path'
)
# one element
cmd
.
extra_path
=
[
'path'
]
cmd
.
handle_extra_path
()
self
.
assertEqual
(
cmd
.
extra_path
,
[
'path'
])
self
.
assertEqual
(
cmd
.
extra_dirs
,
'path'
)
self
.
assertEqual
(
cmd
.
path_file
,
'path'
)
# none
dist
.
extra_path
=
cmd
.
extra_path
=
None
cmd
.
handle_extra_path
()
self
.
assertEqual
(
cmd
.
extra_path
,
None
)
self
.
assertEqual
(
cmd
.
extra_dirs
,
''
)
self
.
assertEqual
(
cmd
.
path_file
,
None
)
# three elements (no way !)
cmd
.
extra_path
=
'path,dirs,again'
self
.
assertRaises
(
DistutilsOptionError
,
cmd
.
handle_extra_path
)
def
test_finalize_options
(
self
):
dist
=
Distribution
({
'name'
:
'xx'
})
cmd
=
install
(
dist
)
# must supply either prefix/exec-prefix/home or
# install-base/install-platbase -- not both
cmd
.
prefix
=
'prefix'
cmd
.
install_base
=
'base'
self
.
assertRaises
(
DistutilsOptionError
,
cmd
.
finalize_options
)
# must supply either home or prefix/exec-prefix -- not both
cmd
.
install_base
=
None
cmd
.
home
=
'home'
self
.
assertRaises
(
DistutilsOptionError
,
cmd
.
finalize_options
)
# can't combine user with with prefix/exec_prefix/home or
# install_(plat)base
cmd
.
prefix
=
None
cmd
.
user
=
'user'
self
.
assertRaises
(
DistutilsOptionError
,
cmd
.
finalize_options
)
def
test_record
(
self
):
install_dir
=
self
.
mkdtemp
()
project_dir
,
dist
=
self
.
create_dist
(
scripts
=
[
'hello'
])
self
.
addCleanup
(
os
.
chdir
,
os
.
getcwd
())
os
.
chdir
(
project_dir
)
self
.
write_file
(
'hello'
,
"print('o hai')"
)
cmd
=
install
(
dist
)
dist
.
command_obj
[
'install'
]
=
cmd
cmd
.
root
=
install_dir
cmd
.
record
=
os
.
path
.
join
(
project_dir
,
'RECORD'
)
cmd
.
ensure_finalized
()
cmd
.
run
()
f
=
open
(
cmd
.
record
)
try
:
content
=
f
.
read
()
finally
:
f
.
close
()
found
=
[
os
.
path
.
basename
(
line
)
for
line
in
content
.
splitlines
()]
expected
=
[
'hello'
,
'UNKNOWN-0.0.0-py%s.%s.egg-info'
%
sys
.
version_info
[:
2
]]
self
.
assertEqual
(
found
,
expected
)
def
test_record_extensions
(
self
):
install_dir
=
self
.
mkdtemp
()
project_dir
,
dist
=
self
.
create_dist
(
ext_modules
=
[
Extension
(
'xx'
,
[
'xxmodule.c'
])])
self
.
addCleanup
(
os
.
chdir
,
os
.
getcwd
())
os
.
chdir
(
project_dir
)
support
.
copy_xxmodule_c
(
project_dir
)
buildextcmd
=
build_ext
(
dist
)
support
.
fixup_build_ext
(
buildextcmd
)
buildextcmd
.
ensure_finalized
()
cmd
=
install
(
dist
)
dist
.
command_obj
[
'install'
]
=
cmd
dist
.
command_obj
[
'build_ext'
]
=
buildextcmd
cmd
.
root
=
install_dir
cmd
.
record
=
os
.
path
.
join
(
project_dir
,
'RECORD'
)
cmd
.
ensure_finalized
()
cmd
.
run
()
f
=
open
(
cmd
.
record
)
try
:
content
=
f
.
read
()
finally
:
f
.
close
()
found
=
[
os
.
path
.
basename
(
line
)
for
line
in
content
.
splitlines
()]
expected
=
[
_make_ext_name
(
'xx'
),
'UNKNOWN-0.0.0-py%s.%s.egg-info'
%
sys
.
version_info
[:
2
]]
self
.
assertEqual
(
found
,
expected
)
def
test_debug_mode
(
self
):
# this covers the code called when DEBUG is set
old_logs_len
=
len
(
self
.
logs
)
install_module
.
DEBUG
=
True
try
:
with
captured_stdout
():
self
.
test_record
()
finally
:
install_module
.
DEBUG
=
False
self
.
assertTrue
(
len
(
self
.
logs
)
>
old_logs_len
)
def
test_suite
():
return
unittest
.
makeSuite
(
InstallTestCase
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment