Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
009ea467
Commit
009ea467
authored
Jun 11, 2013
by
Brett Cannon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #18158: delete test_importhooks. Redundant in the face of
test_importlib.
parent
ce8ff413
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
250 deletions
+0
-250
Lib/test/test_importhooks.py
Lib/test/test_importhooks.py
+0
-250
No files found.
Lib/test/test_importhooks.py
deleted
100644 → 0
View file @
ce8ff413
import
sys
import
imp
import
os
import
unittest
from
test
import
support
test_src
=
"""
\
def get_name():
return __name__
def get_file():
return __file__
"""
absimp
=
"import sub
\
n
"
relimp
=
"from . import sub
\
n
"
deeprelimp
=
"from .... import sub
\
n
"
futimp
=
"from __future__ import absolute_import
\
n
"
reload_src
=
test_src
+
"""
\
reloaded = True
"""
test_co
=
compile
(
test_src
,
"<???>"
,
"exec"
)
reload_co
=
compile
(
reload_src
,
"<???>"
,
"exec"
)
test2_oldabs_co
=
compile
(
absimp
+
test_src
,
"<???>"
,
"exec"
)
test2_newabs_co
=
compile
(
futimp
+
absimp
+
test_src
,
"<???>"
,
"exec"
)
test2_newrel_co
=
compile
(
relimp
+
test_src
,
"<???>"
,
"exec"
)
test2_deeprel_co
=
compile
(
deeprelimp
+
test_src
,
"<???>"
,
"exec"
)
test2_futrel_co
=
compile
(
futimp
+
relimp
+
test_src
,
"<???>"
,
"exec"
)
test_path
=
"!!!_test_!!!"
class
TestImporter
:
modules
=
{
"hooktestmodule"
:
(
False
,
test_co
),
"hooktestpackage"
:
(
True
,
test_co
),
"hooktestpackage.sub"
:
(
True
,
test_co
),
"hooktestpackage.sub.subber"
:
(
True
,
test_co
),
"hooktestpackage.oldabs"
:
(
False
,
test2_oldabs_co
),
"hooktestpackage.newabs"
:
(
False
,
test2_newabs_co
),
"hooktestpackage.newrel"
:
(
False
,
test2_newrel_co
),
"hooktestpackage.sub.subber.subest"
:
(
True
,
test2_deeprel_co
),
"hooktestpackage.futrel"
:
(
False
,
test2_futrel_co
),
"sub"
:
(
False
,
test_co
),
"reloadmodule"
:
(
False
,
test_co
),
}
def
__init__
(
self
,
path
=
test_path
):
if
path
!=
test_path
:
# if our class is on sys.path_hooks, we must raise
# ImportError for any path item that we can't handle.
raise
ImportError
self
.
path
=
path
def
_get__path__
(
self
):
raise
NotImplementedError
def
find_module
(
self
,
fullname
,
path
=
None
):
if
fullname
in
self
.
modules
:
return
self
else
:
return
None
def
load_module
(
self
,
fullname
):
ispkg
,
code
=
self
.
modules
[
fullname
]
mod
=
sys
.
modules
.
setdefault
(
fullname
,
imp
.
new_module
(
fullname
))
mod
.
__file__
=
"<%s>"
%
self
.
__class__
.
__name__
mod
.
__loader__
=
self
if
ispkg
:
mod
.
__path__
=
self
.
_get__path__
()
exec
(
code
,
mod
.
__dict__
)
return
mod
class
MetaImporter
(
TestImporter
):
def
_get__path__
(
self
):
return
[]
class
PathImporter
(
TestImporter
):
def
_get__path__
(
self
):
return
[
self
.
path
]
class
ImportBlocker
:
"""Place an ImportBlocker instance on sys.meta_path and you
can be sure the modules you specified can't be imported, even
if it's a builtin."""
def
__init__
(
self
,
*
namestoblock
):
self
.
namestoblock
=
dict
.
fromkeys
(
namestoblock
)
def
find_module
(
self
,
fullname
,
path
=
None
):
if
fullname
in
self
.
namestoblock
:
return
self
return
None
def
load_module
(
self
,
fullname
):
raise
ImportError
(
"I dare you"
)
class
ImpWrapper
:
def
__init__
(
self
,
path
=
None
):
if
path
is
not
None
and
not
os
.
path
.
isdir
(
path
):
raise
ImportError
self
.
path
=
path
def
find_module
(
self
,
fullname
,
path
=
None
):
subname
=
fullname
.
split
(
"."
)[
-
1
]
if
subname
!=
fullname
and
self
.
path
is
None
:
return
None
if
self
.
path
is
None
:
path
=
None
else
:
path
=
[
self
.
path
]
try
:
file
,
filename
,
stuff
=
imp
.
find_module
(
subname
,
path
)
except
ImportError
:
return
None
return
ImpLoader
(
file
,
filename
,
stuff
)
class
ImpLoader
:
def
__init__
(
self
,
file
,
filename
,
stuff
):
self
.
file
=
file
self
.
filename
=
filename
self
.
stuff
=
stuff
def
load_module
(
self
,
fullname
):
mod
=
imp
.
load_module
(
fullname
,
self
.
file
,
self
.
filename
,
self
.
stuff
)
if
self
.
file
:
self
.
file
.
close
()
mod
.
__loader__
=
self
# for introspection
return
mod
class
ImportHooksBaseTestCase
(
unittest
.
TestCase
):
def
setUp
(
self
):
self
.
path
=
sys
.
path
[:]
self
.
meta_path
=
sys
.
meta_path
[:]
self
.
path_hooks
=
sys
.
path_hooks
[:]
sys
.
path_importer_cache
.
clear
()
self
.
modules_before
=
support
.
modules_setup
()
def
tearDown
(
self
):
sys
.
path
[:]
=
self
.
path
sys
.
meta_path
[:]
=
self
.
meta_path
sys
.
path_hooks
[:]
=
self
.
path_hooks
sys
.
path_importer_cache
.
clear
()
support
.
modules_cleanup
(
*
self
.
modules_before
)
class
ImportHooksTestCase
(
ImportHooksBaseTestCase
):
def
doTestImports
(
self
,
importer
=
None
):
import
hooktestmodule
import
hooktestpackage
import
hooktestpackage.sub
import
hooktestpackage.sub.subber
self
.
assertEqual
(
hooktestmodule
.
get_name
(),
"hooktestmodule"
)
self
.
assertEqual
(
hooktestpackage
.
get_name
(),
"hooktestpackage"
)
self
.
assertEqual
(
hooktestpackage
.
sub
.
get_name
(),
"hooktestpackage.sub"
)
self
.
assertEqual
(
hooktestpackage
.
sub
.
subber
.
get_name
(),
"hooktestpackage.sub.subber"
)
if
importer
:
self
.
assertEqual
(
hooktestmodule
.
__loader__
,
importer
)
self
.
assertEqual
(
hooktestpackage
.
__loader__
,
importer
)
self
.
assertEqual
(
hooktestpackage
.
sub
.
__loader__
,
importer
)
self
.
assertEqual
(
hooktestpackage
.
sub
.
subber
.
__loader__
,
importer
)
TestImporter
.
modules
[
'reloadmodule'
]
=
(
False
,
test_co
)
import
reloadmodule
self
.
assertFalse
(
hasattr
(
reloadmodule
,
'reloaded'
))
import
hooktestpackage.newrel
self
.
assertEqual
(
hooktestpackage
.
newrel
.
get_name
(),
"hooktestpackage.newrel"
)
self
.
assertEqual
(
hooktestpackage
.
newrel
.
sub
,
hooktestpackage
.
sub
)
import
hooktestpackage.sub.subber.subest
as
subest
self
.
assertEqual
(
subest
.
get_name
(),
"hooktestpackage.sub.subber.subest"
)
self
.
assertEqual
(
subest
.
sub
,
hooktestpackage
.
sub
)
import
hooktestpackage.futrel
self
.
assertEqual
(
hooktestpackage
.
futrel
.
get_name
(),
"hooktestpackage.futrel"
)
self
.
assertEqual
(
hooktestpackage
.
futrel
.
sub
,
hooktestpackage
.
sub
)
import
sub
self
.
assertEqual
(
sub
.
get_name
(),
"sub"
)
import
hooktestpackage.oldabs
self
.
assertEqual
(
hooktestpackage
.
oldabs
.
get_name
(),
"hooktestpackage.oldabs"
)
self
.
assertEqual
(
hooktestpackage
.
oldabs
.
sub
,
sub
)
import
hooktestpackage.newabs
self
.
assertEqual
(
hooktestpackage
.
newabs
.
get_name
(),
"hooktestpackage.newabs"
)
self
.
assertEqual
(
hooktestpackage
.
newabs
.
sub
,
sub
)
def
testMetaPath
(
self
):
i
=
MetaImporter
()
sys
.
meta_path
.
append
(
i
)
self
.
doTestImports
(
i
)
def
testPathHook
(
self
):
sys
.
path_hooks
.
insert
(
0
,
PathImporter
)
sys
.
path
.
append
(
test_path
)
self
.
doTestImports
()
def
testBlocker
(
self
):
mname
=
"exceptions"
# an arbitrary harmless builtin module
support
.
unload
(
mname
)
sys
.
meta_path
.
append
(
ImportBlocker
(
mname
))
self
.
assertRaises
(
ImportError
,
__import__
,
mname
)
def
testImpWrapper
(
self
):
i
=
ImpWrapper
()
sys
.
meta_path
.
append
(
i
)
sys
.
path_hooks
.
insert
(
0
,
ImpWrapper
)
mnames
=
(
"colorsys"
,
"urllib.parse"
,
"distutils.core"
,
"sys"
,
)
for
mname
in
mnames
:
parent
=
mname
.
split
(
"."
)[
0
]
for
n
in
list
(
sys
.
modules
):
if
n
.
startswith
(
parent
):
del
sys
.
modules
[
n
]
for
mname
in
mnames
:
m
=
__import__
(
mname
,
globals
(),
locals
(),
[
"__dummy__"
])
# to make sure we actually handled the import
self
.
assertTrue
(
hasattr
(
m
,
"__loader__"
))
def
test_main
():
support
.
run_unittest
(
ImportHooksTestCase
)
if
__name__
==
"__main__"
:
test_main
()
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