def test_html_diff(self): self.assertEqual(html_diff('one\ntoo\nthree\n', 'one\ntwo\nthree\n'), ( '<html>\n' '<head>\n' '<style>.del { background: #faa; } .add { background: #afa; }</style>\n' '</head>\n' '<body>\n' '<pre>one\n' '<span class="del">too\n' '</span><span class="add">two\n' '</span>three\n' '</pre>\n' '</body>\n' '</html>\n'))
def test_html_diff(self): self.assertEqual(html_diff('one\ntoo\nthree\n', 'one\ntwo\nthree\n'), ( '<html>\n' '<head>\n' '<style>\n' 'table { white-space: pre-wrap; font-family: monospace; border-collapse: collapse; }\n' 'th { color: #444; background: #eed; text-align: right; vertical-align: baseline; padding: 1px 4px 1px 4px; }\n' '.del { background: #faa; }\n' '.add { background: #afa; }\n' '</style>\n' '</head>\n' '<body><table>' '<tr><th>1<th>1<td>one\n</tr>' '<tr><th>2<th><td class="del">too\n</tr>' '<tr><th><th>2<td class="add">two\n</tr>' '<tr><th>3<th>3<td>three\n</tr>' '</table></body>\n' '</html>\n'))
def create_text_diff_and_write_result(self, actual_text, expected_text): # FIXME: This function is actually doing the diffs as well as writing results. # It might be better to extract code which does 'diff' and make it a separate function. if not actual_text or not expected_text: return # Output a plain-text diff file. file_type = '.txt' actual_filename = self.output_filename(self.FILENAME_SUFFIX_ACTUAL + file_type) expected_filename = self.output_filename( self.FILENAME_SUFFIX_EXPECTED + file_type) diff = unified_diff(expected_text, actual_text, expected_filename, actual_filename) diff_filename = self.output_filename(self.FILENAME_SUFFIX_DIFF + file_type) self._write_file(diff_filename, diff) # Output a HTML diff file. html_diff_filename = self.output_filename( self.FILENAME_SUFFIX_HTML_DIFF) html_diff_contents = html_diff(expected_text, actual_text) self._write_file(html_diff_filename, html_diff_contents)