diff -r 7f17c67b5bf6 Lib/idlelib/RstripExtension.py --- a/Lib/idlelib/RstripExtension.py Sun Jul 07 17:35:11 2013 +0200 +++ b/Lib/idlelib/RstripExtension.py Mon Jul 08 00:35:56 2013 -0400 @@ -27,3 +27,8 @@ text.delete('%i.%i' % (cur, cut), '%i.0 lineend' % cur) undo.undo_block_stop() + +if __name__ == "__main__": + from test import support; support.use_resources = ['gui'] + import unittest + unittest.main('idlelib.idle_test.test_rstrip', verbosity=2, exit=False) diff -r 7f17c67b5bf6 Lib/idlelib/idle_test/mock_idle.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/mock_idle.py Mon Jul 08 00:35:56 2013 -0400 @@ -0,0 +1,18 @@ +from idlelib.idle_test.mock_tk import Text + +class Editor: + """Mock class that imitates tkinter text widget""" + def __init__(self): + self.text = Text() + self.undo = mockUndoDelegator() + + def get_selection_indices(self): + first = self.text.index('1.0') + last = self.text.index('end') + return first, last + +class mockUndoDelegator: + def undo_block_start(*args): + pass + def undo_block_stop(*args): + pass diff -r 7f17c67b5bf6 Lib/idlelib/idle_test/test_rstrip.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/test_rstrip.py Mon Jul 08 00:35:56 2013 -0400 @@ -0,0 +1,30 @@ +import unittest +import idlelib.RstripExtension as rs +from idlelib.idle_test.mock_idle import Editor + +class rstripTest(unittest.TestCase): + + def test_rstrip(self): + self.editor = Editor() + self.text = self.editor.text + self.rstrip = rs.RstripExtension(self.editor) + + self.text.insert('1.0', """Line with an ending tab + Line ending in 5 spaces + Linewithnospaces + indented line + indented line with trailing space """) + + # The text widget adds a \n at the end of the text area, even + # when it holds no text + _expectedtext = ("""Line with an ending tab + Line ending in 5 spaces + Linewithnospaces + indented line + indented line with trailing space\n""") + + self.rstrip.do_rstrip() + self.assertEqual(self.text.get('1.0','end'), _expectedtext) + +if __name__ == '__main__': + unittest.main(verbosity=2, exit=2)