[Lxml-checkins] r43960 - lxml/branch/html/src/lxml

ianb at codespeak.net ianb at codespeak.net
Fri Jun 1 07:09:12 CEST 2007


Author: ianb
Date: Fri Jun  1 07:09:12 2007
New Revision: 43960

Modified:
   lxml/branch/html/src/lxml/doctestcompare.py
Log:
avoid treating a single repr() of an object like markup

Modified: lxml/branch/html/src/lxml/doctestcompare.py
==============================================================================
--- lxml/branch/html/src/lxml/doctestcompare.py	(original)
+++ lxml/branch/html/src/lxml/doctestcompare.py	Fri Jun  1 07:09:12 2007
@@ -31,6 +31,9 @@
 import doctest
 import cgi
 
+__all__ = ['PARSE_HTML', 'PARSE_XML', 'LXMLOutputChecker',
+           'LHTMLOutputChecker', 'install', 'temp_install']
+
 PARSE_HTML = doctest.register_optionflag('PARSE_HTML')
 PARSE_XML = doctest.register_optionflag('PARSE_XML')
 
@@ -42,6 +45,9 @@
     else:
         return v.strip()
 
+# We use this to distinguish repr()s from elements:
+_repr_re = re.compile(r'^<[^>]+ (at|object) ')
+
 class LXMLOutputChecker(OutputChecker):
 
     empty_tags = (
@@ -81,11 +87,16 @@
         elif (want.strip().lower().startswith('<html')
               and got.strip().startswith('<html')):
             parser = HTML
-        elif (want.strip().startswith('<')
-              and got.strip().startswith('<')):
+        elif (self._looks_like_markup(want)
+              and self._looks_like_markup(got)):
             parser = self.get_default_parser()
         return parser
 
+    def _looks_like_markup(self, s):
+        s = s.strip()
+        return (s.startswith('<')
+                and not _repr_re.search(s))
+
     def compare_docs(self, want, got):
         if want.tag != got.tag and want.tag != 'any':
             return False


More information about the lxml-checkins mailing list