# coding: utf-8 """Tests for the compilerop module. """ #----------------------------------------------------------------------------- # Copyright (C) 2010-2011 The IPython Development Team. # # Distributed under the terms of the BSD License. # # The full license is in the file COPYING.txt, distributed with this software. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Imports #----------------------------------------------------------------------------- from __future__ import print_function # Stdlib imports import linecache import sys # Third-party imports import nose.tools as nt # Our own imports from IPython.core import compilerop from IPython.utils import py3compat #----------------------------------------------------------------------------- # Test functions #----------------------------------------------------------------------------- def test_code_name(): code = 'x=1' name = compilerop.code_name(code) nt.assert_true(name.startswith(' ncache) def setUp(): # Check we're in a proper Python 2 environment (some imports, such # as GTK, can change the default encoding, which can hide bugs.) nt.assert_equal(sys.getdefaultencoding(), "utf-8" if py3compat.PY3 else "ascii") def test_cache_unicode(): cp = compilerop.CachingCompiler() ncache = len(linecache.cache) cp.cache(u"t = 'žćčšđ'") nt.assert_true(len(linecache.cache) > ncache) def test_compiler_check_cache(): """Test the compiler properly manages the cache. """ # Rather simple-minded tests that just exercise the API cp = compilerop.CachingCompiler() cp.cache('x=1', 99) # Ensure now that after clearing the cache, our entries survive linecache.checkcache() for k in linecache.cache: if k.startswith('