[#95 state:fixed] Fixed a crash on results save when it contained invalid characters.

This commit is contained in:
Virgil Dupras 2010-07-14 09:19:34 +02:00
parent 4d66b4667c
commit ac1593ff75
2 changed files with 11 additions and 2 deletions

View File

@ -284,9 +284,12 @@ class Results(Markable):
except AttributeError:
words = ()
file_elem = etree.SubElement(group_elem, 'file')
file_elem.set('path', unicode(d.path))
try:
file_elem.set('path', unicode(d.path))
file_elem.set('words', ','.join(words))
except ValueError: # If there's an invalid character, just skip the file
file_elem.set('path', '')
file_elem.set('is_ref', ('y' if d.is_ref else 'n'))
file_elem.set('words', ','.join(words))
file_elem.set('marked', ('y' if self.is_marked(d) else 'n'))
for match in g.matches:
match_elem = etree.SubElement(group_elem, 'match')

View File

@ -574,6 +574,12 @@ class TCResultsXML(TestCase):
# apply_filter() searches on the whole path, not just on the filename.
self.results.apply_filter(u'basepath')
eq_(len(self.results.groups), 2)
def test_save_xml_with_invalid_characters(self):
# Don't crash when saving files that have invalid xml characters in their path
self.objects[0].name = u'foo\x19'
self.results.save_to_xml(StringIO.StringIO()) # don't crash
class TCResultsFilter(TestCase):
def setUp(self):