[Erp5-report] r27834 - /erp5/trunk/products/ERP5/tests/testXHTML.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Jun 30 11:59:08 CEST 2009


Author: jm
Date: Tue Jun 30 11:59:01 2009
New Revision: 27834

URL: http://svn.erp5.org?rev=27834&view=rev
Log:
TestXHTML: Handle general error/warning reported by validator (ie. when there is no line/column).

Modified:
    erp5/trunk/products/ERP5/tests/testXHTML.py

Modified: erp5/trunk/products/ERP5/tests/testXHTML.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testXHTML.py?rev=27834&r1=27833&r2=27834&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testXHTML.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testXHTML.py [utf8] Tue Jun 30 11:59:01 2009
@@ -187,20 +187,21 @@
     parses the validation results, returns a list of tuples:
     line_number, col_number, error description
     """
-    error_list=[]
-    warning_list=[]
+    result_list_list = []
     xml_doc = minidom.parseString(result)
-    for error in xml_doc.getElementsByTagName('m:error'):
-      error_line = error.getElementsByTagName('m:line')[0].firstChild.nodeValue
-      error_col = error.getElementsByTagName('m:col')[0].firstChild.nodeValue
-      error_message = error.getElementsByTagName('m:message')[0].firstChild.nodeValue
-      error_list.append((error_line,error_col,error_message))
-    for warning in xml_doc.getElementsByTagName('m:warning'):
-      warning_line = warning.getElementsByTagName('m:line')[0].firstChild.nodeValue
-      warning_col = warning.getElementsByTagName('m:col')[0].firstChild.nodeValue
-      warning_message = warning.getElementsByTagName('m:message')[0].firstChild.nodeValue
-      warning_list.append((warning_line, warning_col, warning_message))
-    return error_list, warning_list
+    for severity in 'm:error', 'm:warning':
+      result_list = []
+      for error in xml_doc.getElementsByTagName(severity):
+        result = []
+        for name in 'm:line', 'm:col', 'm:message':
+          element_list = error.getElementsByTagName(name)
+          if element_list:
+            result.append(element_list[0].firstChild.nodeValue)
+          else:
+            result.append(None)
+        result_list.append(tuple(result))
+      result_list_list.append(result_list)
+    return result_list_list
 
   def getErrorAndWarningList(self, page_source):
     '''
@@ -270,29 +271,27 @@
     validator object, and there is some warning on the page, the function 
     return False, even if there is no error.
   '''
-
   # display some information when test faild to facilitate debugging
-  message = []
-  message.append('Using %s validator to parse the view "%s" (from %s bt) with warning %sdisplayed :' %\
-      (validator.name, view_name, bt_name, 
-        validator.show_warnings and ' ' or 'NOT '))
-
-  error_list, warning_list = validator.getErrorAndWarningList(source)
-
-  if error_list:
-    # build error message
-    for error in error_list:
-      message.append('Error: line %s column %s : %s' % error)
-
-  if warning_list and validator.show_warnings:
-    # build error message
-    for warning in warning_list:
-      message.append('Warning: line %s column %s : %s' % warning)
-
-  message = '\n'.join(message)
+  message = ['Using %s validator to parse the view "%s" (from %s bt)'
+             ' with warning%sdisplayed :'
+             % (validator.name, view_name, bt_name,
+                validator.show_warnings and ' ' or 'NOT ')]
+
+  result_list_list = validator.getErrorAndWarningList(source)
+
+  severity_list = ['Error']
   if validator.show_warnings:
-    return ((not (len(error_list) or len(warning_list))), message)
-  return ((not len(error_list)), message)
+    severity_list.append('Warning')
+
+  for i, severity in enumerate(severity_list):
+    for line, column, msg in result_list_list[i]:
+      if line is None and column is None:
+        message.append('%s: %s' % (severity, msg))
+      else:
+        message.append('%s: line %s column %s : %s' %
+                       (severity, line, column, msg))
+
+  return len(message) == 1, '\n'.join(message)
 
 
 def makeTestMethod(validator, module_id, portal_type, view_name, bt_name):




More information about the Erp5-report mailing list