From d9c89394c5b46b0c403c3d433130399f25c7a06b Mon Sep 17 00:00:00 2001 From: "r.david.murray" Date: Mon, 30 Mar 2009 23:05:48 +0000 Subject: [PATCH] Change more tests to use import_module for the modules that should cause tests to be skipped. Also rename import_function to the more descriptive get_attribute and add a docstring. git-svn-id: http://svn.python.org/projects/python/trunk@70775 6015fed2-1504-0410-9fe1-9d1591cc4771 --- Lib/test/test_bsddb3.py | 6 +++++- Lib/test/test_bz2.py | 4 ++-- Lib/test/test_ctypes.py | 5 ++++- Lib/test/test_curses.py | 7 ++++--- Lib/test/test_dbm.py | 2 +- Lib/test/test_fork1.py | 4 ++-- Lib/test/test_gdbm.py | 5 +++-- Lib/test/test_ioctl.py | 11 ++++------- Lib/test/test_multiprocessing.py | 9 ++++----- Lib/test/test_nis.py | 3 ++- Lib/test/test_ossaudiodev.py | 3 ++- Lib/test/test_resource.py | 4 ++-- Lib/test/test_sqlite.py | 9 ++++----- Lib/test/test_startfile.py | 2 +- Lib/test/test_support.py | 17 ++++++++++------- Lib/test/test_xml_etree_c.py | 2 +- Lib/test/test_zlib.py | 3 ++- 17 files changed, 53 insertions(+), 43 deletions(-) diff --git a/Lib/test/test_bsddb3.py b/Lib/test/test_bsddb3.py index 5925e15b53..b290a6edb5 100644 --- a/Lib/test/test_bsddb3.py +++ b/Lib/test/test_bsddb3.py @@ -7,7 +7,11 @@ import sys import tempfile import time import unittest -from test.test_support import requires, verbose, run_unittest, unlink, rmtree +from test.test_support import (requires, verbose, run_unittest, unlink, rmtree, + import_module) + +#Skip test if bsddb cannot import _bsddb. +import_module('bsddb') # When running as a script instead of within the regrtest framework, skip the # requires test, since it's obvious we want to run them. diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index 2f627c3201..215a04e99c 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -1,6 +1,6 @@ #!/usr/bin/python from test import test_support -from test.test_support import TESTFN +from test.test_support import TESTFN, import_module import unittest from cStringIO import StringIO @@ -8,7 +8,7 @@ import os import subprocess import sys -import bz2 +bz2 = import_module('bz2') from bz2 import BZ2File, BZ2Compressor, BZ2Decompressor has_cmdline_bunzip2 = sys.platform not in ("win32", "os2emx", "riscos") diff --git a/Lib/test/test_ctypes.py b/Lib/test/test_ctypes.py index 7a81ab4c55..85f137e45e 100644 --- a/Lib/test/test_ctypes.py +++ b/Lib/test/test_ctypes.py @@ -1,6 +1,9 @@ import unittest -from test.test_support import run_unittest +from test.test_support import run_unittest, import_module +#Skip tests if _ctypes module does not exist +import_module('_ctypes') + import ctypes.test def test_main(): diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 26cfc8106a..e13c553027 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -9,15 +9,16 @@ # Only called, not tested: getmouse(), ungetmouse() # -import curses, sys, tempfile, os -import curses.panel +import sys, tempfile, os # Optionally test curses module. This currently requires that the # 'curses' resource be given on the regrtest command line using the -u # option. If not available, nothing after this line will be executed. -from test.test_support import requires +from test.test_support import requires, import_module requires('curses') +curses = import_module('curses') +curses.panel = import_module('curses.panel') # XXX: if newterm was supported we could use it instead of initscr and not exit term = os.environ.get('TERM') diff --git a/Lib/test/test_dbm.py b/Lib/test/test_dbm.py index 0541f866ce..1627fff27f 100755 --- a/Lib/test/test_dbm.py +++ b/Lib/test/test_dbm.py @@ -1,6 +1,6 @@ from test import test_support import unittest -import dbm +dbm = test_support.import_module('dbm') class DbmTestCase(unittest.TestCase): diff --git a/Lib/test/test_fork1.py b/Lib/test/test_fork1.py index 9306242120..b42304bedb 100644 --- a/Lib/test/test_fork1.py +++ b/Lib/test/test_fork1.py @@ -4,10 +4,10 @@ import os import time from test.fork_wait import ForkWait -from test.test_support import run_unittest, reap_children, import_function +from test.test_support import run_unittest, reap_children, get_attribute #Skip test if fork does not exist. -import_function(os, 'fork') +get_attribute(os, 'fork') class ForkTest(ForkWait): diff --git a/Lib/test/test_gdbm.py b/Lib/test/test_gdbm.py index 76689f0695..131d22b16b 100755 --- a/Lib/test/test_gdbm.py +++ b/Lib/test/test_gdbm.py @@ -1,7 +1,8 @@ -import gdbm import unittest import os -from test.test_support import verbose, TESTFN, run_unittest, unlink +from test.test_support import (verbose, TESTFN, run_unittest, unlink, + import_module) +gdbm = import_module('gdbm') filename = TESTFN diff --git a/Lib/test/test_ioctl.py b/Lib/test/test_ioctl.py index 4da209d13a..823d95412c 100644 --- a/Lib/test/test_ioctl.py +++ b/Lib/test/test_ioctl.py @@ -1,12 +1,9 @@ import unittest -from test.test_support import run_unittest +from test.test_support import run_unittest, import_module, get_attribute import os, struct -try: - import fcntl, termios -except ImportError: - raise unittest.SkipTest("No fcntl or termios module") -if not hasattr(termios,'TIOCGPGRP'): - raise unittest.SkipTest("termios module doesn't have TIOCGPGRP") +fcntl = import_module('fcntl') +termios = import_module('termios') +get_attribute(termios, 'TIOCGPGRP') #Can't run tests without this feature try: tty = open("/dev/tty", "r") diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py index 4388fe0523..105a7433c0 100644 --- a/Lib/test/test_multiprocessing.py +++ b/Lib/test/test_multiprocessing.py @@ -17,20 +17,19 @@ import copy import socket import random import logging +import test_support +_multiprocessing = test_support.import_module('_multiprocessing') + # Work around broken sem_open implementations -try: - import multiprocessing.synchronize -except ImportError, e: - raise unittest.SkipTest(e) +test_support.import_module('multiprocessing.synchronize') import multiprocessing.dummy import multiprocessing.connection import multiprocessing.managers import multiprocessing.heap import multiprocessing.pool -import _multiprocessing from multiprocessing import util diff --git a/Lib/test/test_nis.py b/Lib/test/test_nis.py index 0026953f9e..8d495505d1 100644 --- a/Lib/test/test_nis.py +++ b/Lib/test/test_nis.py @@ -1,6 +1,7 @@ from test import test_support import unittest -import nis + +nis = test_support.import_module('nis') class NisTests(unittest.TestCase): def test_maps(self): diff --git a/Lib/test/test_ossaudiodev.py b/Lib/test/test_ossaudiodev.py index ddee6db714..34893f1348 100644 --- a/Lib/test/test_ossaudiodev.py +++ b/Lib/test/test_ossaudiodev.py @@ -3,8 +3,9 @@ test_support.requires('audio') from test.test_support import findfile +ossaudiodev = test_support.import_module('ossaudiodev') + import errno -import ossaudiodev import sys import sunau import time diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py index f354a1b637..52692a71ce 100644 --- a/Lib/test/test_resource.py +++ b/Lib/test/test_resource.py @@ -1,9 +1,9 @@ import unittest from test import test_support - -import resource import time +resource = test_support.import_module('resource') + # This test is checking a few specific problem spots with the resource module. class ResourceTest(unittest.TestCase): diff --git a/Lib/test/test_sqlite.py b/Lib/test/test_sqlite.py index 37481c0e56..f8b2f9816b 100644 --- a/Lib/test/test_sqlite.py +++ b/Lib/test/test_sqlite.py @@ -1,10 +1,9 @@ import unittest -from test.test_support import run_unittest +from test.test_support import run_unittest, import_module + +#Skip test of _sqlite3 module not installed +import_module('_sqlite3') -try: - import _sqlite3 -except ImportError: - raise unittest.SkipTest('no sqlite available') from sqlite3.test import (dbapi, types, userfunctions, py25tests, factory, transactions, hooks, regression, dump) diff --git a/Lib/test/test_startfile.py b/Lib/test/test_startfile.py index 23e2708cc1..8eeae72eab 100644 --- a/Lib/test/test_startfile.py +++ b/Lib/test/test_startfile.py @@ -12,7 +12,7 @@ from test import test_support import os from os import path -startfile = test_support.import_function(os, 'startfile') +startfile = test_support.get_attribute(os, 'startfile') class TestCase(unittest.TestCase): diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 90bd8e6a05..435333946d 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -12,6 +12,7 @@ import platform import shutil import warnings import unittest +import importlib __all__ = ["Error", "TestFailed", "ResourceDenied", "import_module", "verbose", "use_resources", "max_memuse", "record_original_stdout", @@ -25,7 +26,7 @@ __all__ = ["Error", "TestFailed", "ResourceDenied", "import_module", "run_with_locale", "set_memlimit", "bigmemtest", "bigaddrspacetest", "BasicTestRunner", "run_unittest", "run_doctest", "threading_setup", "threading_cleanup", "reap_children", "cpython_only", - "check_impl_detail"] + "check_impl_detail", "get_attribute"] class Error(Exception): """Base class for regression test exceptions.""" @@ -49,24 +50,26 @@ def import_module(name, deprecated=False): warnings.filterwarnings("ignore", ".+ (module|package)", DeprecationWarning) try: - module = __import__(name, level=0) + module = importlib.import_module(name) except ImportError: raise unittest.SkipTest("No module named " + name) else: return module -def import_function(module, name, deprecated=False): +def get_attribute(module, name, deprecated=False): + """Get an attribute from the module, raising SkipTest if it is + not available.""" with warnings.catch_warnings(): if deprecated: warnings.filterwarnings("ignore", ".+ (module|package)", DeprecationWarning) try: - function = getattr(module, name) + attribute = getattr(module, name) except AttributeError: - raise unittest.SkipTest("No function named %s in module %s" % ( - name, module.__name__)) + raise unittest.SkipTest("module %s has no attribute %s" % ( + module.__name__, name)) else: - return function + return attribute verbose = 1 # Flag set to 0 by regrtest.py diff --git a/Lib/test/test_xml_etree_c.py b/Lib/test/test_xml_etree_c.py index 7ddd44bf81..3d5c14fae6 100644 --- a/Lib/test/test_xml_etree_c.py +++ b/Lib/test/test_xml_etree_c.py @@ -5,7 +5,7 @@ import sys from test import test_support -from xml.etree import cElementTree as ET +ET = test_support.import_module('xml.etree.cElementTree') SAMPLE_XML = """ diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py index adb87ff0fa..cbf844ffc2 100644 --- a/Lib/test/test_zlib.py +++ b/Lib/test/test_zlib.py @@ -1,9 +1,10 @@ import unittest from test import test_support -import zlib import binascii import random +zlib = test_support.import_module('zlib') + class ChecksumTestCase(unittest.TestCase): # checksum test cases -- 2.11.4.GIT