##// END OF EJS Templates
update notebook api tests...
update notebook api tests with creation URL changes also use unicode as the default name in tests, to increase likelihood of catching unicode bugs.

File last commit:

r12168:706dd916
r13130:76f76016
Show More
test_completerlib.py
120 lines | 4.1 KiB | text/x-python | PythonLexer
/ IPython / core / tests / test_completerlib.py
Jörgen Stenarson
Replaced shlex_split with arg_split from _process_common....
r5688 # -*- coding: utf-8 -*-
"""Tests for completerlib.
"""
from __future__ import absolute_import
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import os
import shutil
import sys
import tempfile
import unittest
from os.path import join
Ross Jones
Failing tests for https://github.com/ipython/ipython/issues/1107
r6148 from IPython.core.completerlib import magic_run_completer, module_completion
from IPython.utils.tempdir import TemporaryDirectory
Thomas Kluyver
Skip some more tests that require unicode paths
r12168 from IPython.testing.decorators import onlyif_unicode_paths
Jörgen Stenarson
Replaced shlex_split with arg_split from _process_common....
r5688
class MockEvent(object):
def __init__(self, line):
self.line = line
#-----------------------------------------------------------------------------
# Test functions begin
#-----------------------------------------------------------------------------
class Test_magic_run_completer(unittest.TestCase):
def setUp(self):
self.BASETESTDIR = tempfile.mkdtemp()
Thomas Kluyver
Skip some more tests that require unicode paths
r12168 for fil in [u"aao.py", u"a.py", u"b.py"]:
Jörgen Stenarson
Replaced shlex_split with arg_split from _process_common....
r5688 with open(join(self.BASETESTDIR, fil), "w") as sfile:
sfile.write("pass\n")
self.oldpath = os.getcwdu()
os.chdir(self.BASETESTDIR)
def tearDown(self):
os.chdir(self.oldpath)
shutil.rmtree(self.BASETESTDIR)
def test_1(self):
"""Test magic_run_completer, should match two alterntives
"""
event = MockEvent(u"%run a")
mockself = None
MinRK
use sets in test_completerlib, to be insensitive to ordering
r5692 match = set(magic_run_completer(mockself, event))
Thomas Kluyver
Skip some more tests that require unicode paths
r12168 self.assertEqual(match, set([u"a.py", u"aao.py"]))
Jörgen Stenarson
Replaced shlex_split with arg_split from _process_common....
r5688
def test_2(self):
"""Test magic_run_completer, should match one alterntive
"""
event = MockEvent(u"%run aa")
mockself = None
MinRK
use sets in test_completerlib, to be insensitive to ordering
r5692 match = set(magic_run_completer(mockself, event))
Thomas Kluyver
Skip some more tests that require unicode paths
r12168 self.assertEqual(match, set([u"aao.py"]))
Min RK
add %run open-quote completerlib test
r5690
def test_3(self):
MinRK
use sets in test_completerlib, to be insensitive to ordering
r5692 """Test magic_run_completer with unterminated " """
Min RK
add %run open-quote completerlib test
r5690 event = MockEvent(u'%run "a')
mockself = None
MinRK
use sets in test_completerlib, to be insensitive to ordering
r5692 match = set(magic_run_completer(mockself, event))
Thomas Kluyver
Skip some more tests that require unicode paths
r12168 self.assertEqual(match, set([u"a.py", u"aao.py"]))
Min RK
add %run open-quote completerlib test
r5690
Ross Jones
Failing tests for https://github.com/ipython/ipython/issues/1107
r6148 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'])
Thomas Kluyver
Test that valid local module names are found for import completions.
r6181 valid_module_names = set(['foobar'])
Ross Jones
Failing tests for https://github.com/ipython/ipython/issues/1107
r6148 with TemporaryDirectory() as tmpdir:
sys.path.insert( 0, tmpdir )
Thomas Kluyver
Test that valid local module names are found for import completions.
r6181 for name in invalid_module_names | valid_module_names:
Ross Jones
Failing tests for https://github.com/ipython/ipython/issues/1107
r6148 filename = os.path.join(tmpdir, name + '.py')
open(filename, 'w').close()
s = set( module_completion('import foo') )
Ross Jones
Implemented fix for https://github.com/ipython/ipython/issues/1107 by checking that the module list only returns importable modules.
r6150 intersection = s.intersection(invalid_module_names)
self.assertFalse(intersection, intersection)
Thomas Kluyver
Test that valid local module names are found for import completions.
r6181
assert valid_module_names.issubset(s), valid_module_names.intersection(s)
Thomas Kluyver
Skip some more tests that require unicode paths
r12168
class Test_magic_run_completer_nonascii(unittest.TestCase):
@onlyif_unicode_paths
def setUp(self):
self.BASETESTDIR = tempfile.mkdtemp()
for fil in [u"aaø.py", u"a.py", u"b.py"]:
with open(join(self.BASETESTDIR, fil), "w") as sfile:
sfile.write("pass\n")
self.oldpath = os.getcwdu()
os.chdir(self.BASETESTDIR)
def tearDown(self):
os.chdir(self.oldpath)
shutil.rmtree(self.BASETESTDIR)
@onlyif_unicode_paths
def test_1(self):
"""Test magic_run_completer, should match two alterntives
"""
event = MockEvent(u"%run a")
mockself = None
match = set(magic_run_completer(mockself, event))
self.assertEqual(match, set([u"a.py", u"aaø.py"]))
@onlyif_unicode_paths
def test_2(self):
"""Test magic_run_completer, should match one alterntive
"""
event = MockEvent(u"%run aa")
mockself = None
match = set(magic_run_completer(mockself, event))
self.assertEqual(match, set([u"aaø.py"]))
@onlyif_unicode_paths
def test_3(self):
"""Test magic_run_completer with unterminated " """
event = MockEvent(u'%run "a')
mockself = None
match = set(magic_run_completer(mockself, event))
self.assertEqual(match, set([u"a.py", u"aaø.py"]))