]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fiddled things so that test_normalization is expected to be skipped if
authorTim Peters <tim.peters@gmail.com>
Sun, 24 Nov 2002 18:53:11 +0000 (18:53 +0000)
committerTim Peters <tim.peters@gmail.com>
Sun, 24 Nov 2002 18:53:11 +0000 (18:53 +0000)
and only if the test input file doesn't exist.

Lib/test/regrtest.py
Lib/test/test_normalization.py

index e7eb73f806a88626e8e0b2d1d8a76d7eb20c6da8..d0650e6aace1f24676a6c0f4867f69abc71f2ee9 100755 (executable)
@@ -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):
index fb88762bb34e71eae77fa23a87579c398ea5a65d..b6737391cb56bd96eadb5ca1b2de2691b42f790e 100644 (file)
@@ -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()