summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
authorThomas Wouters <thomas@python.org>2006-04-27 23:13:20 +0000
committerThomas Wouters <thomas@python.org>2006-04-27 23:13:20 +0000
commit9df4e6f6735af274813cf1b611ee1a342955ad63 (patch)
treec0ab6329dd61fc03a46932435828210b3d0d3db8 /Lib/test
parent2c1e63f8a48bf0f530a922219e85443c4e12882d (diff)
downloadcpython-git-9df4e6f6735af274813cf1b611ee1a342955ad63.tar.gz
- Add new Warning class, ImportWarning
- Warn-raise ImportWarning when importing would have picked up a directory as package, if only it'd had an __init__.py. This swaps two tests (for case-ness and __init__-ness), but case-test is not really more expensive, and it's not in a speed-critical section. - Test for the new warning by importing a common non-package directory on sys.path: site-packages - In regrtest.py, silence warnings generated by the build-environment because Modules/ (which is added to sys.path for Setup-created modules) has 'zlib' and '_ctypes' directories without __init__.py's.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/exception_hierarchy.txt1
-rwxr-xr-xLib/test/regrtest.py6
-rw-r--r--Lib/test/test_import.py17
3 files changed, 24 insertions, 0 deletions
diff --git a/Lib/test/exception_hierarchy.txt b/Lib/test/exception_hierarchy.txt
index 9ed92d0a9f..5fff7d92b3 100644
--- a/Lib/test/exception_hierarchy.txt
+++ b/Lib/test/exception_hierarchy.txt
@@ -44,3 +44,4 @@ BaseException
+-- UserWarning
+-- FutureWarning
+-- OverflowWarning [not generated by the interpreter]
+ +-- ImportWarning
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 7db94aaad3..be06d9dad0 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -138,6 +138,12 @@ if sys.maxint > 0x7fffffff:
warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning,
"<string>")
+# Ignore ImportWarnings that only occur in the source tree,
+# (because of modules with the same name as source-directories in Modules/)
+for mod in ("ctypes", "gzip", "test.test_zipimport", "test.test_zlib"):
+ warnings.filterwarnings(module=".*%s$" % (mod,),
+ action="ignore", category=ImportWarning)
+
# MacOSX (a.k.a. Darwin) has a default stack size that is too small
# for deeply recursive regular expressions. We see this as crashes in
# the Python test suite when running test_re.py and test_sre.py. The
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index a72b8bd072..effba3cc11 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -205,3 +205,20 @@ def test_import_name_binding():
assert y is test.test_support, y.__name__
test_import_name_binding()
+
+def test_import_initless_directory_warning():
+ import warnings
+ oldfilters = warnings.filters[:]
+ warnings.simplefilter('error', ImportWarning);
+ try:
+ # Just a random non-package directory we always expect to be
+ # somewhere in sys.path...
+ __import__("site-packages")
+ except ImportWarning:
+ pass
+ else:
+ raise AssertionError
+ finally:
+ warnings.filters = oldfilters
+
+test_import_initless_directory_warning()