From 1b445d3fcfcc06e5360e83b978efdb9b1c980278 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Sun, 24 Nov 2002 18:53:11 +0000 Subject: Fiddled things so that test_normalization is expected to be skipped if and only if the test input file doesn't exist. --- Lib/test/regrtest.py | 12 +++++- Lib/test/test_normalization.py | 87 ++++++++++++++++++++++++------------------ 2 files changed, 60 insertions(+), 39 deletions(-) diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index e7eb73f..d0650e6 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -503,6 +503,10 @@ def printlist(x, width=70, indent=4): # test_pep277 # The _ExpectedSkips constructor adds this to the set of expected # skips if not os.path.supports_unicode_filenames. +# test_normalization +# Whether a skip is expected here depends on whether a large test +# input file has been downloaded. test_normalization.skip_expected +# controls that _expectations = { 'win32': @@ -528,7 +532,6 @@ _expectations = { test_mhlib test_mpz test_nis - test_normalization test_openpty test_poll test_pty @@ -829,12 +832,19 @@ _expectations = { class _ExpectedSkips: def __init__(self): import os.path + from test import test_normalization + self.valid = False if sys.platform in _expectations: s = _expectations[sys.platform] self.expected = Set(s.split()) + if not os.path.supports_unicode_filenames: self.expected.add('test_pep277') + + if test_normalization.skip_expected: + self.expected.add('test_normalization') + self.valid = True def isvalid(self): diff --git a/Lib/test/test_normalization.py b/Lib/test/test_normalization.py index fb88762..b673739 100644 --- a/Lib/test/test_normalization.py +++ b/Lib/test/test_normalization.py @@ -1,11 +1,10 @@ from test.test_support import verbose, TestFailed, TestSkipped, verify import sys +import os from unicodedata import normalize -try: - data = open("NormalizationTest.txt", "r").readlines() -except IOError: - raise TestSkipped("NormalizationTest.txt not found, download from " - "http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt") + +TESTDATAFILE = "NormalizationTest.txt" +skip_expected = not os.path.exists(TESTDATAFILE) class RangeError: pass @@ -29,40 +28,52 @@ def unistr(data): raise RangeError return u"".join([unichr(x) for x in data]) -part1_data = {} -for line in data: - if '#' in line: - line = line.split('#')[0] - line = line.strip() - if not line: - continue - if line.startswith("@Part"): - part = line - continue - try: - c1,c2,c3,c4,c5 = [unistr(x) for x in line.split(';')[:-1]] - except RangeError: - # Skip unsupported characters - continue +def test_main(): + if skip_expected: + raise TestSkipped(TESTDATAFILE + " not found, download from " + + "http://www.unicode.org/Public/UNIDATA/" + TESTDATAFILE) + + data = open(TESTDATAFILE).readlines() + + part1_data = {} + for line in data: + if '#' in line: + line = line.split('#')[0] + line = line.strip() + if not line: + continue + if line.startswith("@Part"): + part = line + continue + try: + c1,c2,c3,c4,c5 = [unistr(x) for x in line.split(';')[:-1]] + except RangeError: + # Skip unsupported characters + continue + + if verbose: + print line - if verbose: - print line + # Perform tests + verify(c2 == NFC(c1) == NFC(c2) == NFC(c3), line) + verify(c4 == NFC(c4) == NFC(c5), line) + verify(c3 == NFD(c1) == NFD(c2) == NFD(c3), line) + verify(c5 == NFD(c4) == NFD(c5), line) + verify(c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5), + line) + verify(c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5), + line) - # Perform tests - verify(c2 == NFC(c1) == NFC(c2) == NFC(c3), line) - verify(c4 == NFC(c4) == NFC(c5), line) - verify(c3 == NFD(c1) == NFD(c2) == NFD(c3), line) - verify(c5 == NFD(c4) == NFD(c5), line) - verify(c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5), line) - verify(c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5), line) + # Record part 1 data + if part == "@Part1": + part1_data[c1] = 1 - # Record part 1 data - if part == "@Part1": - part1_data[c1] = 1 + # Perform tests for all other data + for c in range(sys.maxunicode+1): + X = unichr(c) + if X in part1_data: + continue + assert X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c -# Perform tests for all other data -for c in range(sys.maxunicode+1): - X = unichr(c) - if X in part1_data: - continue - assert X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c +if __name__ == "__main__": + test_main() -- cgit v0.12