Index: Lib/doctest.py =================================================================== --- Lib/doctest.py (revision 62744) +++ Lib/doctest.py (working copy) @@ -1444,6 +1444,13 @@ 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`) @@ -1454,6 +1461,15 @@ 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: