##// END OF EJS Templates
Merge remote-tracking branch 'rossjones/defect-1107' into rossjones-fix-import-completion
Thomas Kluyver -
r6180:17d34f56 merge
parent child Browse files
Show More
@@ -83,10 +83,15 b' def module_list(path):'
83 83 pjoin = os.path.join
84 84 basename = os.path.basename
85 85
86 def is_importable_file(path):
87 """Returns True if the provided path is a valid importable module"""
88 name, extension = os.path.splitext( path )
89 return import_re.match(path) and py3compat.isidentifier(name)
90
86 91 # Now find actual path matches for packages or modules
87 92 folder_list = [p for p in folder_list
88 93 if isfile(pjoin(path, p,'__init__.py'))
89 or import_re.match(p) ]
94 or is_importable_file(p) ]
90 95
91 96 return [basename(p).split('.')[0] for p in folder_list]
92 97
@@ -18,8 +18,9 b' from os.path import join'
18 18 import nose.tools as nt
19 19 from nose import SkipTest
20 20
21 from IPython.core.completerlib import magic_run_completer
21 from IPython.core.completerlib import magic_run_completer, module_completion
22 22 from IPython.utils import py3compat
23 from IPython.utils.tempdir import TemporaryDirectory
23 24
24 25
25 26 class MockEvent(object):
@@ -65,3 +66,15 b' class Test_magic_run_completer(unittest.TestCase):'
65 66 match = set(magic_run_completer(mockself, event))
66 67 self.assertEqual(match, set([u"a.py", u"aaø.py"]))
67 68
69 def test_import_invalid_module(self):
70 """Testing of issue https://github.com/ipython/ipython/issues/1107"""
71 invalid_module_names = set(['foo-bar', 'foo:bar', '10foo'])
72 with TemporaryDirectory() as tmpdir:
73 sys.path.insert( 0, tmpdir )
74 for name in invalid_module_names:
75 filename = os.path.join(tmpdir, name + '.py')
76 open(filename, 'w').close()
77
78 s = set( module_completion('import foo') )
79 intersection = s.intersection(invalid_module_names)
80 self.assertFalse(intersection, intersection)
General Comments 0
You need to be logged in to leave comments. Login now