test_compilerop.py
73 lines
| 2.2 KiB
| text/x-python
|
PythonLexer
Thomas Kluyver
|
r3449 | # coding: utf-8 | ||
Fernando Perez
|
r3175 | """Tests for the compilerop module. | ||
""" | ||||
#----------------------------------------------------------------------------- | ||||
Matthias BUSSONNIER
|
r5390 | # Copyright (C) 2010-2011 The IPython Development Team. | ||
Fernando Perez
|
r3175 | # | ||
# Distributed under the terms of the BSD License. | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
# Stdlib imports | ||||
import linecache | ||||
Thomas Kluyver
|
r3458 | import sys | ||
Fernando Perez
|
r3175 | |||
# Third-party imports | ||||
Tomasz Kłoczko
|
r26749 | import pytest | ||
Fernando Perez
|
r3175 | |||
# Our own imports | ||||
from IPython.core import compilerop | ||||
#----------------------------------------------------------------------------- | ||||
# Test functions | ||||
#----------------------------------------------------------------------------- | ||||
def test_code_name(): | ||||
code = 'x=1' | ||||
name = compilerop.code_name(code) | ||||
Blazej Michalik
|
r26750 | assert name.startswith("<ipython-input-0") | ||
Fernando Perez
|
r3175 | |||
def test_code_name2(): | ||||
code = 'x=1' | ||||
name = compilerop.code_name(code, 9) | ||||
Blazej Michalik
|
r26750 | assert name.startswith("<ipython-input-9") | ||
Fernando Perez
|
r3175 | |||
Thomas Kluyver
|
r3530 | def test_cache(): | ||
Fernando Perez
|
r3175 | """Test the compiler correctly compiles and caches inputs | ||
""" | ||||
cp = compilerop.CachingCompiler() | ||||
ncache = len(linecache.cache) | ||||
Thomas Kluyver
|
r3530 | cp.cache('x=1') | ||
Tomasz Kłoczko
|
r26749 | assert len(linecache.cache) > ncache | ||
Fernando Perez
|
r3175 | |||
Matthias Bussonnier
|
r25082 | def test_proper_default_encoding(): | ||
Thomas Kluyver
|
r3458 | # Check we're in a proper Python 2 environment (some imports, such | ||
# as GTK, can change the default encoding, which can hide bugs.) | ||||
Tomasz Kłoczko
|
r26749 | assert sys.getdefaultencoding() == "utf-8" | ||
Thomas Kluyver
|
r3458 | |||
Thomas Kluyver
|
r3530 | def test_cache_unicode(): | ||
Thomas Kluyver
|
r3447 | cp = compilerop.CachingCompiler() | ||
ncache = len(linecache.cache) | ||||
Thomas Kluyver
|
r3530 | cp.cache(u"t = 'žćčšđ'") | ||
Tomasz Kłoczko
|
r26749 | assert len(linecache.cache) > ncache | ||
Fernando Perez
|
r3175 | |||
def test_compiler_check_cache(): | ||||
"""Test the compiler properly manages the cache. | ||||
""" | ||||
# Rather simple-minded tests that just exercise the API | ||||
cp = compilerop.CachingCompiler() | ||||
Thomas Kluyver
|
r3530 | cp.cache('x=1', 99) | ||
Fernando Perez
|
r3175 | # Ensure now that after clearing the cache, our entries survive | ||
Thomas Kluyver
|
r9140 | linecache.checkcache() | ||
Fernando Perez
|
r3175 | for k in linecache.cache: | ||
if k.startswith('<ipython-input-99'): | ||||
break | ||||
else: | ||||
raise AssertionError('Entry for input-99 missing from linecache') | ||||