summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/doctest.py16
-rwxr-xr-xLib/test/test_array.py2
-rw-r--r--Lib/test/test_builtin.py3
-rw-r--r--Lib/test/test_exceptions.py8
-rw-r--r--Lib/test/test_format.py6
-rw-r--r--Lib/test/test_pyexpat.py2
-rw-r--r--Lib/test/test_unicode.py22
7 files changed, 43 insertions, 16 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py
index dad8333..772e142 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -1441,6 +1441,13 @@ class OutputChecker:
and returns true if they match; and `output_difference`, which
returns a string describing the differences between two outputs.
"""
+
+ def _toAscii(self, s):
+ """
+ Convert string to hex-escaped ASCII string.
+ """
+ return str(s.encode('ASCII', 'backslashreplace'), "ASCII")
+
def check_output(self, want, got, optionflags):
"""
Return True iff the actual output from an example (`got`)
@@ -1451,6 +1458,15 @@ class OutputChecker:
documentation for `TestRunner` for more information about
option flags.
"""
+
+ # If `want` contains hex-escaped character such as "\u1234",
+ # then `want` is a string of six characters(e.g. [\,u,1,2,3,4]).
+ # On the other hand, `got` could be an another sequence of
+ # characters such as [\u1234], so `want` and `got` should
+ # be folded to hex-escaped ASCII string to compare.
+ got = self._toAscii(got)
+ want = self._toAscii(want)
+
# Handle the common case first, for efficiency:
# if they're string-identical, always return true.
if got == want:
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
index 66ce2ad..3f8b683 100755
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -768,7 +768,7 @@ class UnicodeTest(StringTest):
a = array.array('u', s)
self.assertEqual(
repr(a),
- "array('u', '\\x00=\"\\'a\\\\b\\x80\\xff\\x00\\x01\\u1234')")
+ "array('u', '\\x00=\"\\'a\\\\b\\x80\xff\\x00\\x01\u1234')")
self.assertRaises(TypeError, a.fromunicode)
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index ef562db..557d56c 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -159,6 +159,9 @@ class BuiltinTest(unittest.TestCase):
S = [10, 20, 30]
self.assertEqual(any(x > 42 for x in S), False)
+ def test_ascii(self):
+ self.assertEqual(ascii("\u0370"), "'\\u0370'")
+
def test_neg(self):
x = -sys.maxsize-1
self.assert_(isinstance(x, int))
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 619b7e3..41b9413 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -80,10 +80,10 @@ class ExceptionTests(unittest.TestCase):
self.raise_catch(IndentationError, "IndentationError")
self.raise_catch(TabError, "TabError")
- # can only be tested under -tt, and is the only test for -tt
- #try: compile("try:\n\t1/0\n \t1/0\nfinally:\n pass\n", '<string>', 'exec')
- #except TabError: pass
- #else: self.fail("TabError not raised")
+ try: compile("try:\n\t1/0\n \t1/0\nfinally:\n pass\n",
+ '<string>', 'exec')
+ except TabError: pass
+ else: self.fail("TabError not raised")
self.raise_catch(SystemError, "SystemError")
diff --git a/Lib/test/test_format.py b/Lib/test/test_format.py
index fb91475..8bc47d4 100644
--- a/Lib/test/test_format.py
+++ b/Lib/test/test_format.py
@@ -216,6 +216,8 @@ class FormatTest(unittest.TestCase):
testformat("%o", 0o42, "42")
testformat("%o", -0o42, "-42")
testformat("%o", float(0o42), "42")
+ testformat("%r", "\u0370", "'\u0370'")
+ testformat("%a", "\u0370", "'\\u0370'")
# Test exception for unknown format characters
if verbose:
print('Testing exceptions')
@@ -235,8 +237,8 @@ class FormatTest(unittest.TestCase):
raise
else:
raise TestFailed('did not get expected exception: %s' % excmsg)
- test_exc('abc %a', 1, ValueError,
- "unsupported format character 'a' (0x61) at index 5")
+ test_exc('abc %b', 1, ValueError,
+ "unsupported format character 'b' (0x62) at index 5")
#test_exc(unicode('abc %\u3000','raw-unicode-escape'), 1, ValueError,
# "unsupported format character '?' (0x3000) at index 5")
test_exc('%d', '1', TypeError, "%d format: a number is required, not str")
diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py
index c252134..4947c8b 100644
--- a/Lib/test/test_pyexpat.py
+++ b/Lib/test/test_pyexpat.py
@@ -131,7 +131,7 @@ class ParseTest(unittest.TestCase):
self.assertEquals(op[1], "Comment: ' comment data '")
self.assertEquals(op[2], "Notation declared: ('notation', None, 'notation.jpeg', None)")
self.assertEquals(op[3], "Unparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')")
- self.assertEquals(op[4], "Start element: 'root' {'attr1': 'value1', 'attr2': 'value2\\u1f40'}")
+ self.assertEquals(op[4], "Start element: 'root' {'attr1': 'value1', 'attr2': 'value2\u1f40'}")
self.assertEquals(op[5], "NS decl: 'myns' 'http://www.python.org/namespace'")
self.assertEquals(op[6], "Start element: 'http://www.python.org/namespace!subelement' {}")
self.assertEquals(op[7], "Character data: 'Contents of subelements'")
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 2f9add5..a267cf6 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -94,14 +94,14 @@ class UnicodeTest(
"JKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\x7f"
"\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8a\\x8b\\x8c\\x8d"
"\\x8e\\x8f\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9a\\x9b"
- "\\x9c\\x9d\\x9e\\x9f\\xa0\\xa1\\xa2\\xa3\\xa4\\xa5\\xa6\\xa7\\xa8\\xa9"
- "\\xaa\\xab\\xac\\xad\\xae\\xaf\\xb0\\xb1\\xb2\\xb3\\xb4\\xb5\\xb6\\xb7"
- "\\xb8\\xb9\\xba\\xbb\\xbc\\xbd\\xbe\\xbf\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5"
- "\\xc6\\xc7\\xc8\\xc9\\xca\\xcb\\xcc\\xcd\\xce\\xcf\\xd0\\xd1\\xd2\\xd3"
- "\\xd4\\xd5\\xd6\\xd7\\xd8\\xd9\\xda\\xdb\\xdc\\xdd\\xde\\xdf\\xe0\\xe1"
- "\\xe2\\xe3\\xe4\\xe5\\xe6\\xe7\\xe8\\xe9\\xea\\xeb\\xec\\xed\\xee\\xef"
- "\\xf0\\xf1\\xf2\\xf3\\xf4\\xf5\\xf6\\xf7\\xf8\\xf9\\xfa\\xfb\\xfc\\xfd"
- "\\xfe\\xff'")
+ "\\x9c\\x9d\\x9e\\x9f\\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9"
+ "\xaa\xab\xac\\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
+ "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5"
+ "\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3"
+ "\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1"
+ "\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
+ "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd"
+ "\xfe\xff'")
testrepr = repr(''.join(map(chr, range(256))))
self.assertEqual(testrepr, latin1repr)
# Test repr works on wide unicode escapes without overflow.
@@ -374,6 +374,12 @@ class UnicodeTest(
self.assertFalse("[".isidentifier())
self.assertFalse("©".isidentifier())
+ def test_isprintable(self):
+ self.assertTrue("abcdefg".isprintable())
+ self.assertFalse("abcdefg\n".isprintable())
+ self.assertTrue("\u0370".isprintable())
+ self.assertFalse("\ud800".isprintable())
+
def test_contains(self):
# Testing Unicode contains method
self.assert_('a' in 'abdb')