Просмотр исходного кода

Trim output larger than 64Kb

[SVN r32068]
Aleksey Gurtovoy 20 лет назад
Родитель
Сommit
3bcd777d1f
1 измененных файлов с 48 добавлено и 3 удалено
  1. 48 3
      tools/regression/xsl_reports/boost_wide_report.py

+ 48 - 3
tools/regression/xsl_reports/boost_wide_report.py

@@ -204,19 +204,64 @@ class merge_xml_action( action ):
 
         self.relevant_paths_.extend( [ self.source_ ] )
         self.boost_paths_.extend( [ self.expected_results_file_, self.failures_markup_file_ ] ) 
+
+
         
     def update( self ):
+        def filter_xml( src, dest ):
+            
+            class xmlgen( xml.sax.saxutils.XMLGenerator ):
+                def __init__( self, writer ):
+                   xml.sax.saxutils.XMLGenerator.__init__( self, writer )
+                  
+                   self.trimmed = 0
+                   self.character_content = ""
+
+                def startElement( self, name, attrs):
+                    self.flush()
+                    xml.sax.saxutils.XMLGenerator.startElement( self, name, attrs )
+
+                def endElement( self, name ):
+                    self.flush()
+                    xml.sax.saxutils.XMLGenerator.endElement( self, name )
+                    
+                def flush( self ):
+                    content = self.character_content
+                    self.character_content = ""
+                    self.trimmed = 0
+                    xml.sax.saxutils.XMLGenerator.characters( self, content )
+
+                def characters( self, content ):
+                    if not self.trimmed:
+                        max_size = pow( 2, 16 )
+                        self.character_content += content
+                        if len( self.character_content ) > max_size:
+                            self.character_content = self.character_content[ : max_size ] + "\n\n... content has been trimmed by the report system because it exceeds %d bytes." % max_size
+                            self.trimmed = 1
+
+            o = open( dest, "w" )
+            try: 
+                gen = xmlgen( o )
+                xml.sax.parse( src, gen )
+            finally:
+                o.close()
+
+            return dest
+
+            
         utils.log( 'Merging "%s" with expected results...' % shorten( self.source_ ) )
+        trimmed_source = filter_xml( self.source_, '%s-trimmed.xml' % os.path.splitext( self.source_ )[0] )
         utils.libxslt( 
-            utils.log
-            , self.source_
+              utils.log
+            , trimmed_source
             , xsl_path( 'add_expected_results.xsl' )
             , os.path.join( self.file_path_ )
             , {
-              "expected_results_file" : self.expected_results_file_
+                "expected_results_file" : self.expected_results_file_
               , "failures_markup_file": self.failures_markup_file_
               }
             )
+        os.unlink( trimmed_source )
         
     def _xml_timestamp( xml_path ):
 

粤ICP备19079148号