mirror of
https://github.com/python/cpython.git
synced 2025-07-31 07:04:42 +00:00
Use this feature to fix test_normalization.
This commit is contained in:
parent
fae23dc9dc
commit
3cc8f211ed
3 changed files with 37 additions and 13 deletions
|
@ -6,15 +6,12 @@ import sys
|
||||||
import os
|
import os
|
||||||
from unicodedata import normalize, unidata_version
|
from unicodedata import normalize, unidata_version
|
||||||
|
|
||||||
TESTDATAFILE = "NormalizationTest" + os.extsep + "txt"
|
TESTDATAFILE = "NormalizationTest.txt"
|
||||||
TESTDATAURL = "http://www.unicode.org/Public/" + unidata_version + "/ucd/" + TESTDATAFILE
|
TESTDATAURL = "http://www.unicode.org/Public/" + unidata_version + "/ucd/" + TESTDATAFILE
|
||||||
|
|
||||||
if os.path.exists(TESTDATAFILE):
|
def check_version(testfile):
|
||||||
f = open(TESTDATAFILE)
|
hdr = testfile.readline()
|
||||||
l = f.readline()
|
return unidata_version in hdr
|
||||||
f.close()
|
|
||||||
if not unidata_version in l:
|
|
||||||
os.unlink(TESTDATAFILE)
|
|
||||||
|
|
||||||
class RangeError(Exception):
|
class RangeError(Exception):
|
||||||
pass
|
pass
|
||||||
|
@ -40,13 +37,14 @@ def unistr(data):
|
||||||
|
|
||||||
class NormalizationTest(unittest.TestCase):
|
class NormalizationTest(unittest.TestCase):
|
||||||
def test_main(self):
|
def test_main(self):
|
||||||
|
part = None
|
||||||
part1_data = {}
|
part1_data = {}
|
||||||
# Hit the exception early
|
# Hit the exception early
|
||||||
try:
|
try:
|
||||||
open_urlresource(TESTDATAURL)
|
testdata = open_urlresource(TESTDATAURL, check_version)
|
||||||
except (IOError, HTTPException):
|
except (IOError, HTTPException):
|
||||||
self.skipTest("Could not retrieve " + TESTDATAURL)
|
self.skipTest("Could not retrieve " + TESTDATAURL)
|
||||||
for line in open_urlresource(TESTDATAURL):
|
for line in testdata:
|
||||||
if '#' in line:
|
if '#' in line:
|
||||||
line = line.split('#')[0]
|
line = line.split('#')[0]
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
|
|
|
@ -32,6 +32,7 @@ __all__ = ["Error", "TestFailed", "ResourceDenied", "import_module",
|
||||||
"threading_cleanup", "reap_children", "cpython_only",
|
"threading_cleanup", "reap_children", "cpython_only",
|
||||||
"check_impl_detail", "get_attribute", "py3k_bytes"]
|
"check_impl_detail", "get_attribute", "py3k_bytes"]
|
||||||
|
|
||||||
|
|
||||||
class Error(Exception):
|
class Error(Exception):
|
||||||
"""Base class for regression test exceptions."""
|
"""Base class for regression test exceptions."""
|
||||||
|
|
||||||
|
@ -463,15 +464,30 @@ def check_syntax_error(testcase, statement):
|
||||||
testcase.assertRaises(SyntaxError, compile, statement,
|
testcase.assertRaises(SyntaxError, compile, statement,
|
||||||
'<test string>', 'exec')
|
'<test string>', 'exec')
|
||||||
|
|
||||||
def open_urlresource(url):
|
def open_urlresource(url, check=None):
|
||||||
import urlparse, urllib2
|
import urlparse, urllib2
|
||||||
|
|
||||||
requires('urlfetch')
|
|
||||||
filename = urlparse.urlparse(url)[2].split('/')[-1] # '/': it's URL!
|
filename = urlparse.urlparse(url)[2].split('/')[-1] # '/': it's URL!
|
||||||
|
|
||||||
fn = os.path.join(os.path.dirname(__file__), "data", filename)
|
fn = os.path.join(os.path.dirname(__file__), "data", filename)
|
||||||
|
|
||||||
|
def check_valid_file(fn):
|
||||||
|
f = open(fn)
|
||||||
|
if check is None:
|
||||||
|
return f
|
||||||
|
elif check(f):
|
||||||
|
f.seek(0)
|
||||||
|
return f
|
||||||
|
f.close()
|
||||||
|
|
||||||
if os.path.exists(fn):
|
if os.path.exists(fn):
|
||||||
return open(fn)
|
f = check_valid_file(fn)
|
||||||
|
if f is not None:
|
||||||
|
return f
|
||||||
|
unlink(fn)
|
||||||
|
|
||||||
|
# Verify the requirement before downloading the file
|
||||||
|
requires('urlfetch')
|
||||||
|
|
||||||
print >> get_original_stdout(), '\tfetching %s ...' % url
|
print >> get_original_stdout(), '\tfetching %s ...' % url
|
||||||
f = urllib2.urlopen(url, timeout=15)
|
f = urllib2.urlopen(url, timeout=15)
|
||||||
|
@ -483,7 +499,11 @@ def open_urlresource(url):
|
||||||
s = f.read()
|
s = f.read()
|
||||||
finally:
|
finally:
|
||||||
f.close()
|
f.close()
|
||||||
return open(fn)
|
|
||||||
|
f = check_valid_file(fn)
|
||||||
|
if f is not None:
|
||||||
|
return f
|
||||||
|
raise TestFailed('invalid resource "%s"' % fn)
|
||||||
|
|
||||||
|
|
||||||
class WarningsRecorder(object):
|
class WarningsRecorder(object):
|
||||||
|
|
|
@ -76,6 +76,12 @@ Build
|
||||||
|
|
||||||
- Issue #7705: Fix linking on FreeBSD.
|
- Issue #7705: Fix linking on FreeBSD.
|
||||||
|
|
||||||
|
Tests
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Issue #7783: test.test_support.open_urlresource invalidates the outdated
|
||||||
|
files from the local cache.
|
||||||
|
|
||||||
|
|
||||||
What's New in Python 2.7 alpha 4?
|
What's New in Python 2.7 alpha 4?
|
||||||
=================================
|
=================================
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue