PATH:
opt
/
bitninja-python-dojo
/
embedded
/
lib
/
python3.9
/
idlelib
/
idle_test
""" !Changing this line will break Test_findfile.test_found! Non-gui unit tests for grep.GrepDialog methods. dummy_command calls grep_it calls findfiles. An exception raised in one method will fail callers. Otherwise, tests are mostly independent. Currently only test grep_it, coverage 51%. """ from idlelib import grep import unittest from test.support import captured_stdout from idlelib.idle_test.mock_tk import Var import os import re class Dummy_searchengine: '''GrepDialog.__init__ calls parent SearchDiabolBase which attaches the passed in SearchEngine instance as attribute 'engine'. Only a few of the many possible self.engine.x attributes are needed here. ''' def getpat(self): return self._pat searchengine = Dummy_searchengine() class Dummy_grep: # Methods tested #default_command = GrepDialog.default_command grep_it = grep.GrepDialog.grep_it # Other stuff needed recvar = Var(False) engine = searchengine def close(self): # gui method pass _grep = Dummy_grep() class FindfilesTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.realpath = os.path.realpath(__file__) cls.path = os.path.dirname(cls.realpath) @classmethod def tearDownClass(cls): del cls.realpath, cls.path def test_invaliddir(self): with captured_stdout() as s: filelist = list(grep.findfiles('invaliddir', '*.*', False)) self.assertEqual(filelist, []) self.assertIn('invalid', s.getvalue()) def test_curdir(self): # Test os.curdir. ff = grep.findfiles save_cwd = os.getcwd() os.chdir(self.path) filename = 'test_grep.py' filelist = list(ff(os.curdir, filename, False)) self.assertIn(os.path.join(os.curdir, filename), filelist) os.chdir(save_cwd) def test_base(self): ff = grep.findfiles readme = os.path.join(self.path, 'README.txt') # Check for Python files in path where this file lives. filelist = list(ff(self.path, '*.py', False)) # This directory has many Python files. self.assertGreater(len(filelist), 10) self.assertIn(self.realpath, filelist) self.assertNotIn(readme, filelist) # Look for .txt files in path where this file lives. filelist = list(ff(self.path, '*.txt', False)) self.assertNotEqual(len(filelist), 0) self.assertNotIn(self.realpath, filelist) self.assertIn(readme, filelist) # Look for non-matching pattern. filelist = list(ff(self.path, 'grep.*', False)) self.assertEqual(len(filelist), 0) self.assertNotIn(self.realpath, filelist) def test_recurse(self): ff = grep.findfiles parent = os.path.dirname(self.path) grepfile = os.path.join(parent, 'grep.py') pat = '*.py' # Get Python files only in parent directory. filelist = list(ff(parent, pat, False)) parent_size = len(filelist) # Lots of Python files in idlelib. self.assertGreater(parent_size, 20) self.assertIn(grepfile, filelist) # Without subdirectories, this file isn't returned. self.assertNotIn(self.realpath, filelist) # Include subdirectories. filelist = list(ff(parent, pat, True)) # More files found now. self.assertGreater(len(filelist), parent_size) self.assertIn(grepfile, filelist) # This file exists in list now. self.assertIn(self.realpath, filelist) # Check another level up the tree. parent = os.path.dirname(parent) filelist = list(ff(parent, '*.py', True)) self.assertIn(self.realpath, filelist) class Grep_itTest(unittest.TestCase): # Test captured reports with 0 and some hits. # Should test file names, but Windows reports have mixed / and \ separators # from incomplete replacement, so 'later'. def report(self, pat): _grep.engine._pat = pat with captured_stdout() as s: _grep.grep_it(re.compile(pat), __file__) lines = s.getvalue().split('\n') lines.pop() # remove bogus '' after last \n return lines def test_unfound(self): pat = 'xyz*'*7 lines = self.report(pat) self.assertEqual(len(lines), 2) self.assertIn(pat, lines[0]) self.assertEqual(lines[1], 'No hits.') def test_found(self): pat = '""" !Changing this line will break Test_findfile.test_found!' lines = self.report(pat) self.assertEqual(len(lines), 5) self.assertIn(pat, lines[0]) self.assertIn('py: 1:', lines[1]) # line number 1 self.assertIn('2', lines[3]) # hits found 2 self.assertTrue(lines[4].startswith('(Hint:')) class Default_commandTest(unittest.TestCase): # To write this, move outwin import to top of GrepDialog # so it can be replaced by captured_stdout in class setup/teardown. pass if __name__ == '__main__': unittest.main(verbosity=2)
[-] test_run.py
[edit]
[-] test_configdialog.py
[edit]
[-] test_help.py
[edit]
[-] test_macosx.py
[edit]
[-] test_searchbase.py
[edit]
[-] test_pathbrowser.py
[edit]
[-] test_outwin.py
[edit]
[-] test_delegator.py
[edit]
[-] test_redirector.py
[edit]
[-] test_config_key.py
[edit]
[-] test_history.py
[edit]
[-] test_rpc.py
[edit]
[-] test_tooltip.py
[edit]
[-] test_textview.py
[edit]
[-] test_grep.py
[edit]
[+]
..
[-] test_colorizer.py
[edit]
[-] test_parenmatch.py
[edit]
[-] test_debugger_r.py
[edit]
[-] test_browser.py
[edit]
[-] test_autocomplete_w.py
[edit]
[-] test_codecontext.py
[edit]
[-] template.py
[edit]
[-] test_mainmenu.py
[edit]
[-] test_zoomheight.py
[edit]
[-] test_scrolledlist.py
[edit]
[-] mock_idle.py
[edit]
[-] README.txt
[edit]
[-] test_calltip_w.py
[edit]
[-] test_help_about.py
[edit]
[-] test_replace.py
[edit]
[-] test_hyperparser.py
[edit]
[-] test_sidebar.py
[edit]
[-] test_window.py
[edit]
[-] test_debugobj.py
[edit]
[-] test_squeezer.py
[edit]
[-] test_editmenu.py
[edit]
[-] test_runscript.py
[edit]
[-] test_iomenu.py
[edit]
[+]
__pycache__
[-] mock_tk.py
[edit]
[-] test_format.py
[edit]
[-] test_searchengine.py
[edit]
[-] test_text.py
[edit]
[-] test_autocomplete.py
[edit]
[-] test_multicall.py
[edit]
[-] test_warning.py
[edit]
[-] test_debugobj_r.py
[edit]
[-] test_debugger.py
[edit]
[-] test_query.py
[edit]
[-] test_zzdummy.py
[edit]
[-] __init__.py
[edit]
[-] test_percolator.py
[edit]
[-] htest.py
[edit]
[-] test_filelist.py
[edit]
[-] test_pyparse.py
[edit]
[-] test_stackviewer.py
[edit]
[-] test_autoexpand.py
[edit]
[-] test_undo.py
[edit]
[-] test_search.py
[edit]
[-] test_tree.py
[edit]
[-] test_editor.py
[edit]
[-] test_calltip.py
[edit]
[-] test_pyshell.py
[edit]
[-] test_config.py
[edit]
[-] test_statusbar.py
[edit]