From ac1593ff7570b800acbe831e7fd460d19b2d4b5d Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Wed, 14 Jul 2010 09:19:34 +0200 Subject: [PATCH] [#95 state:fixed] Fixed a crash on results save when it contained invalid characters. --- core/results.py | 7 +++++-- core/tests/results_test.py | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core/results.py b/core/results.py index 500141b2..9c74f1de 100644 --- a/core/results.py +++ b/core/results.py @@ -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') diff --git a/core/tests/results_test.py b/core/tests/results_test.py index cdc682e7..e03bd339 100644 --- a/core/tests/results_test.py +++ b/core/tests/results_test.py @@ -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):