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
2b73c21b
Commit
2b73c21b
authored
Mar 17, 2010
by
Florent Xicluna
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup in test_import and test_coding.
parent
78643128
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
57 additions
and
80 deletions
+57
-80
Lib/test/test_coding.py
Lib/test/test_coding.py
+7
-10
Lib/test/test_import.py
Lib/test/test_import.py
+50
-70
No files found.
Lib/test/test_coding.py
View file @
2b73c21b
...
@@ -16,22 +16,19 @@ class CodingTest(unittest.TestCase):
...
@@ -16,22 +16,19 @@ class CodingTest(unittest.TestCase):
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
filename
=
os
.
path
.
join
(
path
,
module_name
+
'.py'
)
filename
=
os
.
path
.
join
(
path
,
module_name
+
'.py'
)
fp
=
open
(
filename
)
with
open
(
filename
)
as
fp
:
text
=
fp
.
read
()
text
=
fp
.
read
()
fp
.
close
()
self
.
assertRaises
(
SyntaxError
,
compile
,
text
,
filename
,
'exec'
)
self
.
assertRaises
(
SyntaxError
,
compile
,
text
,
filename
,
'exec'
)
def
test_error_from_string
(
self
):
def
test_error_from_string
(
self
):
# See http://bugs.python.org/issue6289
# See http://bugs.python.org/issue6289
input
=
u"# coding: ascii
\
n
\
N{SNOWMAN}
"
.
encode
(
'utf-8'
)
input
=
u"# coding: ascii
\
n
\
N{SNOWMAN}
"
.
encode
(
'utf-8'
)
try
:
with
self
.
assertRaises
(
SyntaxError
)
as
c
:
compile
(
input
,
"<string>"
,
"exec"
)
compile
(
input
,
"<string>"
,
"exec"
)
except
SyntaxError
as
e
:
expected
=
"'ascii' codec can't decode byte 0xe2 in position 16: "
\
expected
=
"'ascii' codec can't decode byte 0xe2 in position 16: "
\
"ordinal not in range(128)"
"ordinal not in range(128)"
self
.
assertTrue
(
c
.
exception
.
args
[
0
].
startswith
(
expected
))
self
.
assertTrue
(
str
(
e
).
startswith
(
expected
))
else
:
self
.
fail
(
"didn't raise"
)
def
test_main
():
def
test_main
():
test
.
test_support
.
run_unittest
(
CodingTest
)
test
.
test_support
.
run_unittest
(
CodingTest
)
...
...
Lib/test/test_import.py
View file @
2b73c21b
...
@@ -7,9 +7,8 @@ import shutil
...
@@ -7,9 +7,8 @@ import shutil
import
stat
import
stat
import
sys
import
sys
import
unittest
import
unittest
import
warnings
from
test.test_support
import
(
unlink
,
TESTFN
,
unload
,
run_unittest
,
from
test.test_support
import
(
unlink
,
TESTFN
,
unload
,
run_unittest
,
check_warnings
,
TestFailed
,
EnvironmentVarGuard
)
is_jython
,
check_warnings
,
EnvironmentVarGuard
)
def
remove_files
(
name
):
def
remove_files
(
name
):
...
@@ -18,12 +17,15 @@ def remove_files(name):
...
@@ -18,12 +17,15 @@ def remove_files(name):
name
+
os
.
extsep
+
"pyo"
,
name
+
os
.
extsep
+
"pyo"
,
name
+
os
.
extsep
+
"pyw"
,
name
+
os
.
extsep
+
"pyw"
,
name
+
"$py.class"
):
name
+
"$py.class"
):
if
os
.
path
.
exists
(
f
):
unlink
(
f
)
os
.
remove
(
f
)
class
ImportTests
(
unittest
.
TestCase
):
class
ImportTests
(
unittest
.
TestCase
):
def
tearDown
(
self
):
unload
(
TESTFN
)
setUp
=
tearDown
def
test_case_sensitivity
(
self
):
def
test_case_sensitivity
(
self
):
# Brief digression to test that import is case-sensitive: if we got
# Brief digression to test that import is case-sensitive: if we got
# this far, we know for sure that "random" exists.
# this far, we know for sure that "random" exists.
...
@@ -44,7 +46,7 @@ class ImportTests(unittest.TestCase):
...
@@ -44,7 +46,7 @@ class ImportTests(unittest.TestCase):
# The extension is normally ".py", perhaps ".pyw".
# The extension is normally ".py", perhaps ".pyw".
source
=
TESTFN
+
ext
source
=
TESTFN
+
ext
pyo
=
TESTFN
+
os
.
extsep
+
"pyo"
pyo
=
TESTFN
+
os
.
extsep
+
"pyo"
if
sys
.
platform
.
startswith
(
'java'
)
:
if
is_jython
:
pyc
=
TESTFN
+
"$py.class"
pyc
=
TESTFN
+
"$py.class"
else
:
else
:
pyc
=
TESTFN
+
os
.
extsep
+
"pyc"
pyc
=
TESTFN
+
os
.
extsep
+
"pyc"
...
@@ -62,27 +64,21 @@ class ImportTests(unittest.TestCase):
...
@@ -62,27 +64,21 @@ class ImportTests(unittest.TestCase):
except
ImportError
,
err
:
except
ImportError
,
err
:
self
.
fail
(
"import from %s failed: %s"
%
(
ext
,
err
))
self
.
fail
(
"import from %s failed: %s"
%
(
ext
,
err
))
else
:
else
:
self
.
assertEqual
s
(
mod
.
a
,
a
,
self
.
assertEqual
(
mod
.
a
,
a
,
"module loaded (%s) but contents invalid"
%
mod
)
"module loaded (%s) but contents invalid"
%
mod
)
self
.
assertEqual
s
(
mod
.
b
,
b
,
self
.
assertEqual
(
mod
.
b
,
b
,
"module loaded (%s) but contents invalid"
%
mod
)
"module loaded (%s) but contents invalid"
%
mod
)
finally
:
finally
:
os
.
unlink
(
source
)
unlink
(
source
)
try
:
try
:
imp
.
reload
(
mod
)
imp
.
reload
(
mod
)
except
ImportError
,
err
:
except
ImportError
,
err
:
self
.
fail
(
"import from .pyc/.pyo failed: %s"
%
err
)
self
.
fail
(
"import from .pyc/.pyo failed: %s"
%
err
)
finally
:
finally
:
try
:
unlink
(
pyc
)
os
.
unlink
(
pyc
)
unlink
(
pyo
)
except
OSError
:
unload
(
TESTFN
)
pass
try
:
os
.
unlink
(
pyo
)
except
OSError
:
pass
del
sys
.
modules
[
TESTFN
]
sys
.
path
.
insert
(
0
,
os
.
curdir
)
sys
.
path
.
insert
(
0
,
os
.
curdir
)
try
:
try
:
...
@@ -108,15 +104,16 @@ class ImportTests(unittest.TestCase):
...
@@ -108,15 +104,16 @@ class ImportTests(unittest.TestCase):
fn
=
fname
+
'c'
fn
=
fname
+
'c'
if
not
os
.
path
.
exists
(
fn
):
if
not
os
.
path
.
exists
(
fn
):
fn
=
fname
+
'o'
fn
=
fname
+
'o'
if
not
os
.
path
.
exists
(
fn
):
raise
TestFailed
(
"__import__ did "
if
not
os
.
path
.
exists
(
fn
):
"not result in creation of either a .pyc or .pyo file"
)
self
.
fail
(
"__import__ did not result in creation of "
"either a .pyc or .pyo file"
)
s
=
os
.
stat
(
fn
)
s
=
os
.
stat
(
fn
)
self
.
assertEqual
s
(
stat
.
S_IMODE
(
s
.
st_mode
),
self
.
assertEqual
(
stat
.
S_IMODE
(
s
.
st_mode
),
stat
.
S_IRUSR
|
stat
.
S_IRGRP
|
stat
.
S_IROTH
)
stat
.
S_IRUSR
|
stat
.
S_IRGRP
|
stat
.
S_IROTH
)
finally
:
finally
:
os
.
umask
(
oldmask
)
os
.
umask
(
oldmask
)
remove_files
(
TESTFN
)
remove_files
(
TESTFN
)
if
TESTFN
in
sys
.
modules
:
del
sys
.
modules
[
TESTFN
]
unload
(
TESTFN
)
del
sys
.
path
[
0
]
del
sys
.
path
[
0
]
def
test_imp_module
(
self
):
def
test_imp_module
(
self
):
...
@@ -152,7 +149,7 @@ class ImportTests(unittest.TestCase):
...
@@ -152,7 +149,7 @@ class ImportTests(unittest.TestCase):
# Compile & remove .py file, we only need .pyc (or .pyo).
# Compile & remove .py file, we only need .pyc (or .pyo).
with
open
(
filename
,
'r'
)
as
f
:
with
open
(
filename
,
'r'
)
as
f
:
py_compile
.
compile
(
filename
)
py_compile
.
compile
(
filename
)
os
.
unlink
(
filename
)
unlink
(
filename
)
# Need to be able to load from current dir.
# Need to be able to load from current dir.
sys
.
path
.
append
(
''
)
sys
.
path
.
append
(
''
)
...
@@ -162,12 +159,10 @@ class ImportTests(unittest.TestCase):
...
@@ -162,12 +159,10 @@ class ImportTests(unittest.TestCase):
# Cleanup.
# Cleanup.
del
sys
.
path
[
-
1
]
del
sys
.
path
[
-
1
]
for
ext
in
'pyc'
,
'pyo'
:
unlink
(
filename
+
'c'
)
fname
=
module
+
os
.
extsep
+
ext
unlink
(
filename
+
'o'
)
if
os
.
path
.
exists
(
fname
):
os
.
unlink
(
fname
)
def
test_failing_import_sticks
(
self
):
def
test_
0B
failing_import_sticks
(
self
):
source
=
TESTFN
+
os
.
extsep
+
"py"
source
=
TESTFN
+
os
.
extsep
+
"py"
with
open
(
source
,
"w"
)
as
f
:
with
open
(
source
,
"w"
)
as
f
:
print
>>
f
,
"a = 1 // 0"
print
>>
f
,
"a = 1 // 0"
...
@@ -177,15 +172,11 @@ class ImportTests(unittest.TestCase):
...
@@ -177,15 +172,11 @@ class ImportTests(unittest.TestCase):
sys
.
path
.
insert
(
0
,
os
.
curdir
)
sys
.
path
.
insert
(
0
,
os
.
curdir
)
try
:
try
:
for
i
in
[
1
,
2
,
3
]:
for
i
in
[
1
,
2
,
3
]:
try
:
self
.
assertRaises
(
ZeroDivisionError
,
__import__
,
TESTFN
)
mod
=
__import__
(
TESTFN
)
self
.
assertNotIn
(
TESTFN
,
sys
.
modules
,
except
ZeroDivisionError
:
"damaged module in sys.modules on %i try"
%
i
)
if
TESTFN
in
sys
.
modules
:
self
.
fail
(
"damaged module in sys.modules on %i. try"
%
i
)
else
:
self
.
fail
(
"was able to import a damaged module on %i. try"
%
i
)
finally
:
finally
:
sys
.
path
.
pop
(
0
)
del
sys
.
path
[
0
]
remove_files
(
TESTFN
)
remove_files
(
TESTFN
)
def
test_failing_reload
(
self
):
def
test_failing_reload
(
self
):
...
@@ -199,8 +190,8 @@ class ImportTests(unittest.TestCase):
...
@@ -199,8 +190,8 @@ class ImportTests(unittest.TestCase):
try
:
try
:
mod
=
__import__
(
TESTFN
)
mod
=
__import__
(
TESTFN
)
self
.
assertIn
(
TESTFN
,
sys
.
modules
)
self
.
assertIn
(
TESTFN
,
sys
.
modules
)
self
.
assertEqual
s
(
mod
.
a
,
1
,
"module has wrong attribute values"
)
self
.
assertEqual
(
mod
.
a
,
1
,
"module has wrong attribute values"
)
self
.
assertEqual
s
(
mod
.
b
,
2
,
"module has wrong attribute values"
)
self
.
assertEqual
(
mod
.
b
,
2
,
"module has wrong attribute values"
)
# On WinXP, just replacing the .py file wasn't enough to
# On WinXP, just replacing the .py file wasn't enough to
# convince reload() to reparse it. Maybe the timestamp didn't
# convince reload() to reparse it. Maybe the timestamp didn't
...
@@ -217,18 +208,17 @@ class ImportTests(unittest.TestCase):
...
@@ -217,18 +208,17 @@ class ImportTests(unittest.TestCase):
# But we still expect the module to be in sys.modules.
# But we still expect the module to be in sys.modules.
mod
=
sys
.
modules
.
get
(
TESTFN
)
mod
=
sys
.
modules
.
get
(
TESTFN
)
self
.
assert
False
(
mod
is
None
,
"expected module to be in sys.modules"
)
self
.
assert
IsNot
(
mod
,
None
,
"expected module to be in sys.modules"
)
# We should have replaced a w/ 10, but the old b value should
# We should have replaced a w/ 10, but the old b value should
# stick.
# stick.
self
.
assertEqual
s
(
mod
.
a
,
10
,
"module has wrong attribute values"
)
self
.
assertEqual
(
mod
.
a
,
10
,
"module has wrong attribute values"
)
self
.
assertEqual
s
(
mod
.
b
,
2
,
"module has wrong attribute values"
)
self
.
assertEqual
(
mod
.
b
,
2
,
"module has wrong attribute values"
)
finally
:
finally
:
sys
.
path
.
pop
(
0
)
del
sys
.
path
[
0
]
remove_files
(
TESTFN
)
remove_files
(
TESTFN
)
if
TESTFN
in
sys
.
modules
:
unload
(
TESTFN
)
del
sys
.
modules
[
TESTFN
]
def
test_infinite_reload
(
self
):
def
test_infinite_reload
(
self
):
# http://bugs.python.org/issue742342 reports that Python segfaults
# http://bugs.python.org/issue742342 reports that Python segfaults
...
@@ -238,35 +228,31 @@ class ImportTests(unittest.TestCase):
...
@@ -238,35 +228,31 @@ class ImportTests(unittest.TestCase):
try
:
try
:
import
infinite_reload
import
infinite_reload
finally
:
finally
:
sys
.
path
.
pop
(
0
)
del
sys
.
path
[
0
]
def
test_import_name_binding
(
self
):
def
test_import_name_binding
(
self
):
# import x.y.z binds x in the current namespace.
# import x.y.z binds x in the current namespace.
import
test
as
x
import
test
as
x
import
test.test_support
import
test.test_support
self
.
assert
True
(
x
is
test
,
x
.
__name__
)
self
.
assert
Is
(
x
,
test
,
x
.
__name__
)
self
.
assertTrue
(
hasattr
(
test
.
test_support
,
"__file__"
))
self
.
assertTrue
(
hasattr
(
test
.
test_support
,
"__file__"
))
# import x.y.z as w binds z as w.
# import x.y.z as w binds z as w.
import
test.test_support
as
y
import
test.test_support
as
y
self
.
assert
True
(
y
is
test
.
test_support
,
y
.
__name__
)
self
.
assert
Is
(
y
,
test
.
test_support
,
y
.
__name__
)
def
test_import_initless_directory_warning
(
self
):
def
test_import_initless_directory_warning
(
self
):
with
warnings
.
catch_warnings
(
):
with
check_warnings
((
''
,
ImportWarning
)
):
# Just a random non-package directory we always expect to be
# Just a random non-package directory we always expect to be
# somewhere in sys.path...
# somewhere in sys.path...
warnings
.
simplefilter
(
'error'
,
ImportWarning
)
self
.
assertRaises
(
ImportError
,
__import__
,
"site-packages"
)
self
.
assertRaises
(
ImportWarning
,
__import__
,
"site-packages"
)
def
test_import_by_filename
(
self
):
def
test_import_by_filename
(
self
):
path
=
os
.
path
.
abspath
(
TESTFN
)
path
=
os
.
path
.
abspath
(
TESTFN
)
try
:
with
self
.
assertRaises
(
ImportError
)
as
c
:
__import__
(
path
)
__import__
(
path
)
except
ImportError
,
err
:
self
.
assertEqual
(
"Import by filename is not supported."
,
self
.
assertEqual
(
"Import by filename is not supported."
,
c
.
exception
.
args
[
0
])
err
.
args
[
0
])
else
:
self
.
fail
(
"import by path didn't raise an exception"
)
class
PycRewritingTests
(
unittest
.
TestCase
):
class
PycRewritingTests
(
unittest
.
TestCase
):
...
@@ -301,10 +287,9 @@ func_filename = func.func_code.co_filename
...
@@ -301,10 +287,9 @@ func_filename = func.func_code.co_filename
if
self
.
orig_module
is
not
None
:
if
self
.
orig_module
is
not
None
:
sys
.
modules
[
self
.
module_name
]
=
self
.
orig_module
sys
.
modules
[
self
.
module_name
]
=
self
.
orig_module
else
:
else
:
del
sys
.
modules
[
self
.
module_name
]
unload
(
self
.
module_name
)
for
file_name
in
self
.
file_name
,
self
.
compiled_name
:
unlink
(
self
.
file_name
)
if
os
.
path
.
exists
(
file_name
):
unlink
(
self
.
compiled_name
)
os
.
remove
(
file_name
)
if
os
.
path
.
exists
(
self
.
dir_name
):
if
os
.
path
.
exists
(
self
.
dir_name
):
shutil
.
rmtree
(
self
.
dir_name
)
shutil
.
rmtree
(
self
.
dir_name
)
...
@@ -402,11 +387,10 @@ class PathsTests(unittest.TestCase):
...
@@ -402,11 +387,10 @@ class PathsTests(unittest.TestCase):
class
RelativeImportTests
(
unittest
.
TestCase
):
class
RelativeImportTests
(
unittest
.
TestCase
):
def
tearDown
(
self
):
def
tearDown
(
self
):
try
:
unload
(
"test.relimport"
)
del
sys
.
modules
[
"test.relimport"
]
setUp
=
tearDown
except
:
pass
def
test_relimport_star
(
self
):
def
test_relimport_star
(
self
):
# This will import * from .test_import.
# This will import * from .test_import.
...
@@ -432,18 +416,14 @@ class RelativeImportTests(unittest.TestCase):
...
@@ -432,18 +416,14 @@ class RelativeImportTests(unittest.TestCase):
# Check relative fails with only __package__ wrong
# Check relative fails with only __package__ wrong
ns
=
dict
(
__package__
=
'foo'
,
__name__
=
'test.notarealmodule'
)
ns
=
dict
(
__package__
=
'foo'
,
__name__
=
'test.notarealmodule'
)
with
check_warnings
(
)
as
w
:
with
check_warnings
(
(
'.+foo'
,
RuntimeWarning
))
:
check_absolute
()
check_absolute
()
self
.
assertIn
(
'foo'
,
str
(
w
.
message
))
self
.
assertEqual
(
w
.
category
,
RuntimeWarning
)
self
.
assertRaises
(
SystemError
,
check_relative
)
self
.
assertRaises
(
SystemError
,
check_relative
)
# Check relative fails with __package__ and __name__ wrong
# Check relative fails with __package__ and __name__ wrong
ns
=
dict
(
__package__
=
'foo'
,
__name__
=
'notarealpkg.notarealmodule'
)
ns
=
dict
(
__package__
=
'foo'
,
__name__
=
'notarealpkg.notarealmodule'
)
with
check_warnings
(
)
as
w
:
with
check_warnings
(
(
'.+foo'
,
RuntimeWarning
))
:
check_absolute
()
check_absolute
()
self
.
assertIn
(
'foo'
,
str
(
w
.
message
))
self
.
assertEqual
(
w
.
category
,
RuntimeWarning
)
self
.
assertRaises
(
SystemError
,
check_relative
)
self
.
assertRaises
(
SystemError
,
check_relative
)
# Check both fail with package set to a non-string
# Check both fail with package set to a non-string
...
...
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