diff -r 942a7061e8ad Lib/idlelib/RstripExtension.py --- a/Lib/idlelib/RstripExtension.py Fri Jun 21 19:08:06 2013 +0200 +++ b/Lib/idlelib/RstripExtension.py Fri Jun 21 17:44:53 2013 -0400 @@ -27,3 +27,7 @@ text.delete('%i.%i' % (cur, cut), '%i.0 lineend' % cur) undo.undo_block_stop() + +if __name__ == '__main__': + import unittest + unittest.main('idlelib.idle_test.test_rstripextension', verbosity=2, exit=False) diff -r 942a7061e8ad Lib/idlelib/idle_test/mock_ewin.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/mock_ewin.py Fri Jun 21 17:44:53 2013 -0400 @@ -0,0 +1,17 @@ +import tkinter +from idlelib.UndoDelegator import UndoDelegator +from tkinter.ttk import setup_master + +class Ewin: + def __init__(self, flist=None, filename=None, key=None, root=None): + self.flist = flist + self.filename = filename + self.key = key + self.root = setup_master() + self.text = tkinter.Text() + self.undo = UndoDelegator() + + def _close(self): + self.text = None + self.undo = None + self.root.destroy() diff -r 942a7061e8ad Lib/idlelib/idle_test/test_rstripextension.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/test_rstripextension.py Fri Jun 21 17:44:53 2013 -0400 @@ -0,0 +1,42 @@ +import unittest +import idlelib.RstripExtension as rs +import textwrap +from idlelib.idle_test.mock_ewin import Ewin +from test.support import requires + +requires('gui') +class Test_rstripextension(unittest.TestCase): + + def setUp(self): + self.mockEditorWindow = Ewin() + self.rstripextension = rs.RstripExtension(self.mockEditorWindow) + + def tearDown(self): + self.rstripextension = None + self.mockEditorWindow._close() + + def test_do_rstrip(self): + # Note: Tkinter always adds a newline at the end of the text widget, + # hence the newline in the expected_text string + + test_text = textwrap.dedent("""\ + Here is + some text + that has + whitespace at the end + of each line. """) + + expected_text = textwrap.dedent("""\ + Here is + some text + that has + whitespace at the end + of each line.\n""") + + self.mockEditorWindow.text.insert(1.0, test_text) + self.rstripextension.do_rstrip() + test_text = self.mockEditorWindow.text.get(1.0, "end") + self.assertEqual(test_text, expected_text) + +if __name__ == '__main__': + unittest.main(verbosity=2, exit=False)