##// END OF EJS Templates
Fix the rest of the colors used on Windows so they are more visible...
Fix the rest of the colors used on Windows so they are more visible This applies a hack similar to the one in 7b7d560822d4e9b6ab486393e22e305c502ff6d1 to change the prompt colors and exception colors so they are more visible as shown in issue #10238 Fixes: #10238

File last commit:

r23045:1c24cd61
r23317:baeb642e
Show More
test_completerlib.py
162 lines | 5.4 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.
"""
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import os
import shutil
import sys
import tempfile
import unittest
from os.path import join
Thomas Kluyver
Add failing test for gh-3459
r14813 import nose.tools as nt
Ross Jones
Failing tests for https://github.com/ipython/ipython/issues/1107
r6148 from IPython.core.completerlib import magic_run_completer, module_completion
Thomas Kluyver
Python 3 compatibility for os.getcwdu()
r13447 from IPython.utils import py3compat
Ross Jones
Failing tests for https://github.com/ipython/ipython/issues/1107
r6148 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):
Thomas Kluyver
Add failing test for completing arguments after '%run foo.py '
r14814 files = [u"aao.py", u"a.py", u"b.py", u"aao.txt"]
Thomas Kluyver
Fix duplicate directories in %run tab completion
r14818 dirs = [u"adir/", "bdir/"]
Thomas Kluyver
Add failing test for completing arguments after '%run foo.py '
r14814
Jörgen Stenarson
Replaced shlex_split with arg_split from _process_common....
r5688 def setUp(self):
self.BASETESTDIR = tempfile.mkdtemp()
Thomas Kluyver
Add failing test for completing arguments after '%run foo.py '
r14814 for fil in self.files:
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")
Thomas Kluyver
Add failing test for duplicate dirs in completions
r14817 for d in self.dirs:
os.mkdir(join(self.BASETESTDIR, d))
Srinivas Reddy Thatiparthy
rename py3compat.getcwd() -> os.getcwd()
r23045 self.oldpath = os.getcwd()
Jörgen Stenarson
Replaced shlex_split with arg_split from _process_common....
r5688 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
Add failing test for duplicate dirs in completions
r14817 self.assertEqual(match, {u"a.py", u"aao.py", u"adir/"})
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))
Rémy Léone
Set litteral
r21804 self.assertEqual(match, {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
Add failing test for duplicate dirs in completions
r14817 self.assertEqual(match, {u"a.py", u"aao.py", u"adir/"})
Min RK
add %run open-quote completerlib test
r5690
Thomas Kluyver
Add failing test for completing arguments after '%run foo.py '
r14814 def test_completion_more_args(self):
event = MockEvent(u'%run a.py ')
match = set(magic_run_completer(None, event))
Thomas Kluyver
Add failing test for duplicate dirs in completions
r14817 self.assertEqual(match, set(self.files + self.dirs))
Thomas Kluyver
Add failing test for completing arguments after '%run foo.py '
r14814
Thomas Kluyver
Add failing test for gh-3459
r14813 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))
Thomas Kluyver
Partially normalise paths for Windows tests
r14849 # We specifically use replace here rather than normpath, because
# at one point there were duplicates 'adir' and 'adir/', and normpath
# would hide the failure for that.
self.assertEqual(match, {join(self.BASETESTDIR, f).replace('\\','/')
for f in (u'a.py', u'aao.py', u'aao.txt', u'adir/')})
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")
Srinivas Reddy Thatiparthy
rename py3compat.getcwd() -> os.getcwd()
r23045 self.oldpath = os.getcwd()
Thomas Kluyver
Skip some more tests that require unicode paths
r12168 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))
Rémy Léone
Set litteral
r21804 self.assertEqual(match, {u"a.py", u"aaø.py"})
Thomas Kluyver
Skip some more tests that require unicode paths
r12168
@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))
Rémy Léone
Set litteral
r21804 self.assertEqual(match, {u"aaø.py"})
Thomas Kluyver
Skip some more tests that require unicode paths
r12168
@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))
Rémy Léone
Set litteral
r21804 self.assertEqual(match, {u"a.py", u"aaø.py"})
Thomas Kluyver
Add failing test for gh-3459
r14813
# module_completer:
def test_import_invalid_module():
"""Testing of issue https://github.com/ipython/ipython/issues/1107"""
Rémy Léone
Set litteral
r21804 invalid_module_names = {'foo-bar', 'foo:bar', '10foo'}
valid_module_names = {'foobar'}
Thomas Kluyver
Add failing test for gh-3459
r14813 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)
Thomas Kluyver
Handle bad __all__ for module completions...
r22618
def test_bad_module_all():
"""Test module with invalid __all__
https://github.com/ipython/ipython/issues/9678
"""
testsdir = os.path.dirname(__file__)
sys.path.insert(0, testsdir)
try:
results = module_completion('from bad_all import ')
nt.assert_in('puppies', results)
for r in results:
Srinivas Reddy Thatiparthy
convert string_types to str
r23037 nt.assert_is_instance(r, str)
Thomas Kluyver
Handle bad __all__ for module completions...
r22618 finally:
sys.path.remove(testsdir)