From faf01ee7ce1b0ac2e3392bb0fea1f3b2d1b29864 2014-01-28 00:01:16 From: Thomas Kluyver Date: 2014-01-28 00:01:16 Subject: [PATCH] Add failing test for gh-3459 --- diff --git a/IPython/core/tests/test_completerlib.py b/IPython/core/tests/test_completerlib.py index 9f2b316..383bc45 100644 --- a/IPython/core/tests/test_completerlib.py +++ b/IPython/core/tests/test_completerlib.py @@ -15,6 +15,8 @@ import tempfile import unittest from os.path import join +import nose.tools as nt + from IPython.core.completerlib import magic_run_completer, module_completion from IPython.utils import py3compat from IPython.utils.tempdir import TemporaryDirectory @@ -31,7 +33,7 @@ class MockEvent(object): class Test_magic_run_completer(unittest.TestCase): def setUp(self): self.BASETESTDIR = tempfile.mkdtemp() - for fil in [u"aao.py", u"a.py", u"b.py"]: + for fil in [u"aao.py", u"a.py", u"b.py", u"aao.txt"]: with open(join(self.BASETESTDIR, fil), "w") as sfile: sfile.write("pass\n") self.oldpath = py3compat.getcwd() @@ -64,21 +66,13 @@ class Test_magic_run_completer(unittest.TestCase): match = set(magic_run_completer(mockself, event)) self.assertEqual(match, set([u"a.py", u"aao.py"])) - def test_import_invalid_module(self): - """Testing of issue https://github.com/ipython/ipython/issues/1107""" - invalid_module_names = set(['foo-bar', 'foo:bar', '10foo']) - valid_module_names = set(['foobar']) - with TemporaryDirectory() as tmpdir: - sys.path.insert( 0, tmpdir ) - for name in invalid_module_names | valid_module_names: - filename = os.path.join(tmpdir, name + '.py') - open(filename, 'w').close() - - s = set( module_completion('import foo') ) - intersection = s.intersection(invalid_module_names) - self.assertFalse(intersection, intersection) - - assert valid_module_names.issubset(s), valid_module_names.intersection(s) + def test_completion_in_dir(self): + # Github issue #3459 + event = MockEvent(u'%run a.py {}'.format(join(self.BASETESTDIR, 'a'))) + print(repr(event.line)) + match = set(magic_run_completer(None, event)) + self.assertEqual(match, + {join(self.BASETESTDIR, f) for f in (u'a.py', u'aao.py', u'aao.txt')}) class Test_magic_run_completer_nonascii(unittest.TestCase): @onlyif_unicode_paths @@ -119,3 +113,21 @@ class Test_magic_run_completer_nonascii(unittest.TestCase): mockself = None match = set(magic_run_completer(mockself, event)) self.assertEqual(match, set([u"a.py", u"aaø.py"])) + +# module_completer: + +def test_import_invalid_module(): + """Testing of issue https://github.com/ipython/ipython/issues/1107""" + invalid_module_names = set(['foo-bar', 'foo:bar', '10foo']) + valid_module_names = set(['foobar']) + with TemporaryDirectory() as tmpdir: + sys.path.insert( 0, tmpdir ) + for name in invalid_module_names | valid_module_names: + filename = os.path.join(tmpdir, name + '.py') + open(filename, 'w').close() + + s = set( module_completion('import foo') ) + intersection = s.intersection(invalid_module_names) + nt.assert_equal(intersection, set()) + + assert valid_module_names.issubset(s), valid_module_names.intersection(s)