[Python-checkins] r79094 - in python/branches/py3k: Lib/test/support.py Lib/test/test_normalization.py Misc/NEWS Tools/unicode/gencodec.py Tools/unicode/makeunicodedata.py
florent.xicluna
python-checkins at python.org
Fri Mar 19 15:25:03 CET 2010
Author: florent.xicluna
Date: Fri Mar 19 15:25:03 2010
New Revision: 79094
Log:
Merged revisions 78982,78986 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78982 | florent.xicluna | 2010-03-15 15:00:58 +0100 (lun, 15 mar 2010) | 2 lines
Remove py3k deprecation warnings from these Unicode tools.
........
r78986 | florent.xicluna | 2010-03-15 19:08:58 +0100 (lun, 15 mar 2010) | 3 lines
Issue #7783 and #7787: open_urlresource invalidates the outdated files from the local cache.
Use this feature to fix test_normalization.
........
Modified:
python/branches/py3k/ (props changed)
python/branches/py3k/Lib/test/support.py
python/branches/py3k/Lib/test/test_normalization.py
python/branches/py3k/Misc/NEWS
python/branches/py3k/Tools/unicode/gencodec.py
python/branches/py3k/Tools/unicode/makeunicodedata.py
Modified: python/branches/py3k/Lib/test/support.py
==============================================================================
--- python/branches/py3k/Lib/test/support.py (original)
+++ python/branches/py3k/Lib/test/support.py Fri Mar 19 15:25:03 2010
@@ -33,6 +33,7 @@
"reap_children", "cpython_only", "check_impl_detail", "get_attribute",
"swap_item", "swap_attr"]
+
class Error(Exception):
"""Base class for regression test exceptions."""
@@ -444,12 +445,29 @@
def open_urlresource(url, *args, **kw):
import urllib.request, urllib.parse
- requires('urlfetch')
+ check = kw.pop('check', None)
+
filename = urllib.parse.urlparse(url)[2].split('/')[-1] # '/': it's URL!
fn = os.path.join(os.path.dirname(__file__), "data", filename)
+
+ def check_valid_file(fn):
+ f = open(fn, *args, **kw)
+ if check is None:
+ return f
+ elif check(f):
+ f.seek(0)
+ return f
+ f.close()
+
if os.path.exists(fn):
- return open(fn, *args, **kw)
+ f = check_valid_file(fn)
+ if f is not None:
+ return f
+ unlink(fn)
+
+ # Verify the requirement before downloading the file
+ requires('urlfetch')
print('\tfetching %s ...' % url, file=get_original_stdout())
f = urllib.request.urlopen(url, timeout=15)
@@ -461,7 +479,12 @@
s = f.read()
finally:
f.close()
- return open(fn, *args, **kw)
+
+ f = check_valid_file(fn)
+ if f is not None:
+ return f
+ raise TestFailed('invalid resource "%s"' % fn)
+
class WarningsRecorder(object):
"""Convenience wrapper for the warnings list returned on
Modified: python/branches/py3k/Lib/test/test_normalization.py
==============================================================================
--- python/branches/py3k/Lib/test/test_normalization.py (original)
+++ python/branches/py3k/Lib/test/test_normalization.py Fri Mar 19 15:25:03 2010
@@ -9,14 +9,9 @@
TESTDATAFILE = "NormalizationTest.txt"
TESTDATAURL = "http://www.unicode.org/Public/" + unidata_version + "/ucd/" + TESTDATAFILE
-# Verify we have the correct version of the test data file.
-TESTDATAPATH = os.path.join(os.path.dirname(__file__), "data", TESTDATAFILE)
-if os.path.exists(TESTDATAPATH):
- f = open(TESTDATAPATH, encoding='utf-8')
- l = f.readline()
- f.close()
- if not unidata_version in l:
- os.unlink(testdatafile)
+def check_version(testfile):
+ hdr = testfile.readline()
+ return unidata_version in hdr
class RangeError(Exception):
pass
@@ -42,13 +37,15 @@
class NormalizationTest(unittest.TestCase):
def test_main(self):
+ part = None
part1_data = {}
# Hit the exception early
try:
- open_urlresource(TESTDATAURL, encoding="utf-8")
+ testdata = open_urlresource(TESTDATAURL, encoding="utf-8",
+ check=check_version)
except (IOError, HTTPException):
self.skipTest("Could not retrieve " + TESTDATAURL)
- for line in open_urlresource(TESTDATAURL, encoding="utf-8"):
+ for line in testdata:
if '#' in line:
line = line.split('#')[0]
line = line.strip()
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Fri Mar 19 15:25:03 2010
@@ -903,13 +903,16 @@
- Issue #6556: Fixed the Distutils configuration files location explanation
for Windows.
-
+
- Update python manual page (options -B, -O0, -s, environment variables
PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE).
Tests
-----
+- Issue #7783: test.test_support.open_urlresource invalidates the outdated
+ files from the local cache.
+
- Issue #7849: Now the utility ``check_warnings`` verifies if the warnings are
effectively raised.
Modified: python/branches/py3k/Tools/unicode/gencodec.py
==============================================================================
--- python/branches/py3k/Tools/unicode/gencodec.py (original)
+++ python/branches/py3k/Tools/unicode/gencodec.py Fri Mar 19 15:25:03 2010
@@ -40,8 +40,7 @@
'\s*'
'(#.+)?')
-def parsecodes(codes,
- len=len, filter=filter,range=range):
+def parsecodes(codes, len=len, range=range):
""" Converts code combinations to either a single code integer
or a tuple of integers.
Modified: python/branches/py3k/Tools/unicode/makeunicodedata.py
==============================================================================
--- python/branches/py3k/Tools/unicode/makeunicodedata.py (original)
+++ python/branches/py3k/Tools/unicode/makeunicodedata.py Fri Mar 19 15:25:03 2010
@@ -517,8 +517,7 @@
haswide = False
hasnonewide = False
- spaces.sort()
- for codepoint in spaces:
+ for codepoint in sorted(spaces):
if codepoint < 0x10000:
hasnonewide = True
if codepoint >= 0x10000 and not haswide:
@@ -546,8 +545,7 @@
print(' switch (ch) {', file=fp)
haswide = False
hasnonewide = False
- linebreaks.sort()
- for codepoint in linebreaks:
+ for codepoint in sorted(linebreaks):
if codepoint < 0x10000:
hasnonewide = True
if codepoint >= 0x10000 and not haswide:
More information about the Python-checkins
mailing list