diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2013-09-08 01:40:34 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2013-09-08 01:40:34 (GMT) |
commit | 0494c2ae7f6a347590d66bb4fe7980dc0dc9ccda (patch) | |
tree | 68a893905963131f681077d768c51800f4518744 | |
parent | 21101f7038331984eee88fb6f876a3c6e2c3dfbb (diff) | |
download | cpython-0494c2ae7f6a347590d66bb4fe7980dc0dc9ccda.zip cpython-0494c2ae7f6a347590d66bb4fe7980dc0dc9ccda.tar.gz cpython-0494c2ae7f6a347590d66bb4fe7980dc0dc9ccda.tar.bz2 |
Close #18952: correctly download test support data
When test.support was converted to a package, it started silently
skipping the tests which needed to download support data to run.
This change refactors the affected code, and also tidies up
test.support.findfile to remove the unused *here* parameter, document
the *subdir* parameter and rename the *filename* parameter to avoid
shadowing the file builtin and be consistent with the documentation.
The unexpected skips were noticed and reported by Zachary Ware
-rw-r--r-- | Doc/library/test.rst | 5 | ||||
-rw-r--r-- | Lib/test/support/__init__.py | 31 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 27 insertions, 13 deletions
diff --git a/Doc/library/test.rst b/Doc/library/test.rst index bce0f64..c1270f4 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -263,12 +263,15 @@ The :mod:`test.support` module defines the following functions: Used when tests are executed by :mod:`test.regrtest`. -.. function:: findfile(filename) +.. function:: findfile(filename, subdir=None) Return the path to the file named *filename*. If no match is found *filename* is returned. This does not equal a failure since it could be the path to the file. + Setting *subdir* indicates a relative path to use to find the file + rather than looking directly in the path directories. + .. function:: run_unittest(\*classes) diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 956fe98..dbd7846 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -853,24 +853,31 @@ if hasattr(os, "umask"): finally: os.umask(oldmask) -# TEST_HOME refers to the top level directory of the "test" package +# TEST_HOME_DIR refers to the top level directory of the "test" package # that contains Python's regression test suite -TEST_HOME = os.path.dirname(os.path.abspath(__file__)) +TEST_SUPPORT_DIR = os.path.dirname(os.path.abspath(__file__)) +TEST_HOME_DIR = os.path.dirname(TEST_SUPPORT_DIR) -def findfile(file, here=TEST_HOME, subdir=None): +# TEST_DATA_DIR is used as a target download location for remote resources +TEST_DATA_DIR = os.path.join(TEST_HOME_DIR, "data") + +def findfile(filename, subdir=None): """Try to find a file on sys.path or in the test directory. If it is not found the argument passed to the function is returned (this does not - necessarily signal failure; could still be the legitimate path).""" - if os.path.isabs(file): - return file + necessarily signal failure; could still be the legitimate path). + + Setting *subdir* indicates a relative path to use to find the file + rather than looking directly in the path directories. + """ + if os.path.isabs(filename): + return filename if subdir is not None: - file = os.path.join(subdir, file) - path = sys.path - path = [os.path.dirname(here)] + path + filename = os.path.join(subdir, filename) + path = [TEST_HOME_DIR] + sys.path for dn in path: - fn = os.path.join(dn, file) + fn = os.path.join(dn, filename) if os.path.exists(fn): return fn - return file + return filename def create_empty_file(filename): """Create an empty file. If the file already exists, truncate it.""" @@ -907,7 +914,7 @@ def open_urlresource(url, *args, **kw): filename = urllib.parse.urlparse(url)[2].split('/')[-1] # '/': it's URL! - fn = os.path.join(os.path.dirname(__file__), "data", filename) + fn = os.path.join(TEST_DATA_DIR, filename) def check_valid_file(fn): f = open(fn, *args, **kw) @@ -332,6 +332,10 @@ IDLE Tests ----- +- Issue #18952: Fix regression in support data downloads introduced when + test.support was converted to a package. Regression noticed by Zachary + Ware. + - Issue #12037: Fix test_email for desktop Windows. - Issue #15507: test_subprocess's test_send_signal could fail if the test |