##// END OF EJS Templates
pythonw in py3k sets std{in,out,err} to None...
pythonw in py3k sets std{in,out,err} to None The print statement works without error, even though the stdio file objects are instances of None. Since they are instances of None, however, the encoding attribute will not exist, so protect blind attribute access of std{in,out,err} by using a new function, get_stream_enc.

File last commit:

r6181:a0ad5def
r6651:40ec4c33
Show More
test_completerlib.py
83 lines | 2.8 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
import nose.tools as nt
from nose import SkipTest
Ross Jones
Failing tests for https://github.com/ipython/ipython/issues/1107
r6148 from IPython.core.completerlib import magic_run_completer, module_completion
Jörgen Stenarson
Replaced shlex_split with arg_split from _process_common....
r5688 from IPython.utils import py3compat
Ross Jones
Failing tests for https://github.com/ipython/ipython/issues/1107
r6148 from IPython.utils.tempdir import TemporaryDirectory
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()
MinRK
use ø instead of å in test_completerlib...
r5691 for fil in [u"aaø.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))
self.assertEqual(match, set([u"a.py", u"aaø.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))
self.assertEqual(match, set([u"aaø.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))
self.assertEqual(match, set([u"a.py", u"aaø.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)