summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/idle_test
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2019-11-24 21:29:29 (GMT)
committerGitHub <noreply@github.com>2019-11-24 21:29:29 (GMT)
commit6bf644ec82f14cceae68278dc35bafb00875efae (patch)
tree79a913bdabfec4c9d3c30ec112f185336ce34eb0 /Lib/idlelib/idle_test
parent6f03b236c17c96bc9f8a004ffa7e7ae0542e9cac (diff)
downloadcpython-6bf644ec82f14cceae68278dc35bafb00875efae.zip
cpython-6bf644ec82f14cceae68278dc35bafb00875efae.tar.gz
cpython-6bf644ec82f14cceae68278dc35bafb00875efae.tar.bz2
bpo-38862: IDLE Strip Trailing Whitespace fixes end newlines (GH-17366)
Extra newlines are removed at the end of non-shell files. If the file only has newlines after stripping other trailing whitespace, all are removed, as is done by patchcheck.py.
Diffstat (limited to 'Lib/idlelib/idle_test')
-rw-r--r--Lib/idlelib/idle_test/mock_idle.py5
-rw-r--r--Lib/idlelib/idle_test/test_format.py62
2 files changed, 39 insertions, 28 deletions
diff --git a/Lib/idlelib/idle_test/mock_idle.py b/Lib/idlelib/idle_test/mock_idle.py
index f279a52..71fa480 100644
--- a/Lib/idlelib/idle_test/mock_idle.py
+++ b/Lib/idlelib/idle_test/mock_idle.py
@@ -40,8 +40,9 @@ class Func:
class Editor:
'''Minimally imitate editor.EditorWindow class.
'''
- def __init__(self, flist=None, filename=None, key=None, root=None):
- self.text = Text()
+ def __init__(self, flist=None, filename=None, key=None, root=None,
+ text=None): # Allow real Text with mock Editor.
+ self.text = text or Text()
self.undo = UndoDelegator()
def get_selection_indices(self):
diff --git a/Lib/idlelib/idle_test/test_format.py b/Lib/idlelib/idle_test/test_format.py
index 20b5970..a79bb51 100644
--- a/Lib/idlelib/idle_test/test_format.py
+++ b/Lib/idlelib/idle_test/test_format.py
@@ -611,37 +611,33 @@ class IndentsTest(unittest.TestCase):
class RstripTest(unittest.TestCase):
- def test_rstrip_line(self):
- editor = MockEditor()
- text = editor.text
- do_rstrip = ft.Rstrip(editor).do_rstrip
- eq = self.assertEqual
+ @classmethod
+ def setUpClass(cls):
+ requires('gui')
+ cls.root = Tk()
+ cls.root.withdraw()
+ cls.text = Text(cls.root)
+ cls.editor = MockEditor(text=cls.text)
+ cls.do_rstrip = ft.Rstrip(cls.editor).do_rstrip
+
+ @classmethod
+ def tearDownClass(cls):
+ del cls.text, cls.do_rstrip, cls.editor
+ cls.root.update_idletasks()
+ cls.root.destroy()
+ del cls.root
- do_rstrip()
- eq(text.get('1.0', 'insert'), '')
- text.insert('1.0', ' ')
- do_rstrip()
- eq(text.get('1.0', 'insert'), '')
- text.insert('1.0', ' \n')
- do_rstrip()
- eq(text.get('1.0', 'insert'), '\n')
-
- def test_rstrip_multiple(self):
- editor = MockEditor()
- # Comment above, uncomment 3 below to test with real Editor & Text.
- #from idlelib.editor import EditorWindow as Editor
- #from tkinter import Tk
- #editor = Editor(root=Tk())
- text = editor.text
- do_rstrip = ft.Rstrip(editor).do_rstrip
+ def tearDown(self):
+ self.text.delete('1.0', 'end-1c')
+ def test_rstrip_lines(self):
original = (
"Line with an ending tab \n"
"Line ending in 5 spaces \n"
"Linewithnospaces\n"
" indented line\n"
" indented line with trailing space \n"
- " ")
+ " \n")
stripped = (
"Line with an ending tab\n"
"Line ending in 5 spaces\n"
@@ -649,9 +645,23 @@ class RstripTest(unittest.TestCase):
" indented line\n"
" indented line with trailing space\n")
- text.insert('1.0', original)
- do_rstrip()
- self.assertEqual(text.get('1.0', 'insert'), stripped)
+ self.text.insert('1.0', original)
+ self.do_rstrip()
+ self.assertEqual(self.text.get('1.0', 'insert'), stripped)
+
+ def test_rstrip_end(self):
+ text = self.text
+ for code in ('', '\n', '\n\n\n'):
+ with self.subTest(code=code):
+ text.insert('1.0', code)
+ self.do_rstrip()
+ self.assertEqual(text.get('1.0','end-1c'), '')
+ for code in ('a\n', 'a\n\n', 'a\n\n\n'):
+ with self.subTest(code=code):
+ text.delete('1.0', 'end-1c')
+ text.insert('1.0', code)
+ self.do_rstrip()
+ self.assertEqual(text.get('1.0','end-1c'), 'a\n')
if __name__ == '__main__':