@@ -104,11 +104,11 @@ def _process_value(self, name, value):
104104 if value == self ._get_default_value (name ):
105105 return value
106106 if name == 'Doc' :
107- return self ._escape_as_data (value )
108- if name in [ 'Metadata' , 'TagDoc' ] :
109- if name == 'Metadata' :
110- value = [ self . _escape_as_data ( v ) for v in value ]
111- return [self ._process_metadata_or_tagdoc (v ) for v in value ]
107+ return self ._process_doc (value )
108+ if name == 'Metadata' :
109+ return [ self . _process_metadata ( v ) for v in value ]
110+ if name == 'TagDoc' :
111+ return [self ._process_tagdoc (v ) for v in value ]
112112 if name in ['Include' , 'Exclude' ]:
113113 return [self ._format_tag_patterns (v ) for v in value ]
114114 if name in self ._output_opts and (not value or value .upper () == 'NONE' ):
@@ -139,7 +139,17 @@ def _process_value(self, name, value):
139139 return tuple (ext .lower ().lstrip ('.' ) for ext in value .split (':' ))
140140 return value
141141
142- def _escape_as_data (self , value ):
142+ def _process_doc (self , value ):
143+ if os .path .exists (value ):
144+ try :
145+ with open (value ) as f :
146+ value = f .read ()
147+ except (OSError , IOError ) as err :
148+ raise DataError ('Reading documentation from an external file failed: %s'
149+ % err )
150+ return self ._escape_doc (value ).strip ()
151+
152+ def _escape_doc (self , value ):
143153 return value
144154
145155 def _process_log_level (self , level ):
@@ -235,11 +245,18 @@ def _get_output_extension(self, ext, type_):
235245 return '.txt'
236246 raise FrameworkError ("Invalid output file type: %s" % type_ )
237247
238- def _process_metadata_or_tagdoc (self , value ):
248+ def _process_metadata (self , value ):
249+ name , value = self ._split_from_colon (value )
250+ return name , self ._process_doc (value )
251+
252+ def _split_from_colon (self , value ):
239253 if ':' in value :
240254 return value .split (':' , 1 )
241255 return value , ''
242256
257+ def _process_tagdoc (self , value ):
258+ return self ._split_from_colon (value )
259+
243260 def _process_report_background (self , colors ):
244261 if colors .count (':' ) not in [1 , 2 ]:
245262 raise DataError ("Invalid report background colors '%s'." % colors )
@@ -429,7 +446,7 @@ def get_rebot_settings(self):
429446 def _output_disabled (self ):
430447 return self .output is None
431448
432- def _escape_as_data (self , value ):
449+ def _escape_doc (self , value ):
433450 return escape (value )
434451
435452 @property
0 commit comments