@@ -269,13 +269,33 @@ def test_range_format_context(self):
269269self.assertEqual(fmt(3,6), '4,6')
270270self.assertEqual(fmt(0,0), '0')
271271272+class TestJunkAPIs(unittest.TestCase):
273+def test_is_line_junk_true(self):
274+for line in ['#', ' ', ' #', '# ', ' # ', '']:
275+self.assertTrue(difflib.IS_LINE_JUNK(line), repr(line))
276+277+def test_is_line_junk_false(self):
278+for line in ['##', ' ##', '## ', 'abc ', 'abc #', 'Mr. Moose is up!']:
279+self.assertFalse(difflib.IS_LINE_JUNK(line), repr(line))
280+281+def test_is_line_junk_REDOS(self):
282+evil_input = ('\t' * 1000000) + '##'
283+self.assertFalse(difflib.IS_LINE_JUNK(evil_input))
284+285+def test_is_character_junk_true(self):
286+for char in [' ', '\t']:
287+self.assertTrue(difflib.IS_CHARACTER_JUNK(char), repr(char))
288+289+def test_is_character_junk_false(self):
290+for char in ['a', '#', '\n', '\f', '\r', '\v']:
291+self.assertFalse(difflib.IS_CHARACTER_JUNK(char), repr(char))
272292273293def test_main():
274294difflib.HtmlDiff._default_prefix = 0
275295Doctests = doctest.DocTestSuite(difflib)
276296run_unittest(
277297TestWithAscii, TestAutojunk, TestSFpatches, TestSFbugs,
278-TestOutputFormat, Doctests)
298+TestOutputFormat, TestJunkAPIs)
279299280300if __name__ == '__main__':
281301test_main()