Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
test_pyshell.py149 linesDownload Raw Back to idle_test
1"Test pyshell, coverage 12%."2# Plus coverage of test_warning.  Was 20% with test_openshell.3 4from idlelib import pyshell5import unittest6from test.support import requires7from tkinter import Tk8 9 10class FunctionTest(unittest.TestCase):11    # Test stand-alone module level non-gui functions.12 13    def test_restart_line_wide(self):14        eq = self.assertEqual15        for file, mul, extra in (('', 22, ''), ('finame', 21, '=')):16            width = 6017            bar = mul * '='18            with self.subTest(file=file, bar=bar):19                file = file or 'Shell'20                line = pyshell.restart_line(width, file)21                eq(len(line), width)22                eq(line, f"{bar+extra} RESTART: {file} {bar}")23 24    def test_restart_line_narrow(self):25        expect, taglen = "= RESTART: Shell", 1626        for width in (taglen-1, taglen, taglen+1):27            with self.subTest(width=width):28                self.assertEqual(pyshell.restart_line(width, ''), expect)29        self.assertEqual(pyshell.restart_line(taglen+2, ''), expect+' =')30 31 32class PyShellFileListTest(unittest.TestCase):33 34    @classmethod35    def setUpClass(cls):36        requires('gui')37        cls.root = Tk()38        cls.root.withdraw()39 40    @classmethod41    def tearDownClass(cls):42        #cls.root.update_idletasks()43##        for id in cls.root.tk.call('after', 'info'):44##            cls.root.after_cancel(id)  # Need for EditorWindow.45        cls.root.destroy()46        del cls.root47 48    def test_init(self):49        psfl = pyshell.PyShellFileList(self.root)50        self.assertEqual(psfl.EditorWindow, pyshell.PyShellEditorWindow)51        self.assertIsNone(psfl.pyshell)52 53# The following sometimes causes 'invalid command name "109734456recolorize"'.54# Uncommenting after_cancel above prevents this, but results in55# TclError: bad window path name ".!listedtoplevel.!frame.text"56# which is normally prevented by after_cancel.57##    def test_openshell(self):58##        pyshell.use_subprocess = False59##        ps = pyshell.PyShellFileList(self.root).open_shell()60##        self.assertIsInstance(ps, pyshell.PyShell)61 62 63class PyShellRemoveLastNewlineAndSurroundingWhitespaceTest(unittest.TestCase):64    regexp = pyshell.PyShell._last_newline_re65 66    def all_removed(self, text):67        self.assertEqual('', self.regexp.sub('', text))68 69    def none_removed(self, text):70        self.assertEqual(text, self.regexp.sub('', text))71 72    def check_result(self, text, expected):73        self.assertEqual(expected, self.regexp.sub('', text))74 75    def test_empty(self):76        self.all_removed('')77 78    def test_newline(self):79        self.all_removed('\n')80 81    def test_whitespace_no_newline(self):82        self.all_removed(' ')83        self.all_removed('  ')84        self.all_removed('   ')85        self.all_removed(' ' * 20)86        self.all_removed('\t')87        self.all_removed('\t\t')88        self.all_removed('\t\t\t')89        self.all_removed('\t' * 20)90        self.all_removed('\t ')91        self.all_removed(' \t')92        self.all_removed(' \t \t ')93        self.all_removed('\t \t \t')94 95    def test_newline_with_whitespace(self):96        self.all_removed(' \n')97        self.all_removed('\t\n')98        self.all_removed(' \t\n')99        self.all_removed('\t \n')100        self.all_removed('\n ')101        self.all_removed('\n\t')102        self.all_removed('\n \t')103        self.all_removed('\n\t ')104        self.all_removed(' \n ')105        self.all_removed('\t\n ')106        self.all_removed(' \n\t')107        self.all_removed('\t\n\t')108        self.all_removed('\t \t \t\n')109        self.all_removed(' \t \t \n')110        self.all_removed('\n\t \t \t')111        self.all_removed('\n \t \t ')112 113    def test_multiple_newlines(self):114        self.check_result('\n\n', '\n')115        self.check_result('\n' * 5, '\n' * 4)116        self.check_result('\n' * 5 + '\t', '\n' * 4)117        self.check_result('\n' * 20, '\n' * 19)118        self.check_result('\n' * 20 + ' ', '\n' * 19)119        self.check_result(' \n \n ', ' \n')120        self.check_result(' \n\n ', ' \n')121        self.check_result(' \n\n', ' \n')122        self.check_result('\t\n\n', '\t\n')123        self.check_result('\n\n ', '\n')124        self.check_result('\n\n\t', '\n')125        self.check_result(' \n \n ', ' \n')126        self.check_result('\t\n\t\n\t', '\t\n')127 128    def test_non_whitespace(self):129        self.none_removed('a')130        self.check_result('a\n', 'a')131        self.check_result('a\n ', 'a')132        self.check_result('a \n ', 'a')133        self.check_result('a \n\t', 'a')134        self.none_removed('-')135        self.check_result('-\n', '-')136        self.none_removed('.')137        self.check_result('.\n', '.')138 139    def test_unsupported_whitespace(self):140        self.none_removed('\v')141        self.none_removed('\n\v')142        self.check_result('\v\n', '\v')143        self.none_removed(' \n\v')144        self.check_result('\v\n ', '\v')145 146 147if __name__ == '__main__':148    unittest.main(verbosity=2)149 
codekingpro/portable-devtools · Team Ai