#!/usr/bin/env python # coding: utf-8 """These tests have to be run separately from the main test suite (iptest), because that sets the default encoding to utf-8, and it cannot be changed after the interpreter is up and running. The default encoding in a Python 2.x environment is ASCII.""" import unittest import sys, os.path from IPython.core import ipapi from IPython.core import compilerop from IPython.core.history import HistoryManager from IPython.utils.tempdir import TemporaryDirectory assert sys.getdefaultencoding() == "ascii" class CompileropTest(unittest.TestCase): def test_accept_unicode(self): cp = compilerop.CachingCompiler() cp(u"t = 'žćčšđ'", "single") class HistoryTest(unittest.TestCase): def test_reload_unicode(self): ip = ipapi.get() with TemporaryDirectory() as tmpdir: histfile = os.path.realpath(os.path.join(tmpdir, 'history.json')) # Ensure that we restore the history management that we mess with in # this test doesn't affect the IPython instance used by the test # suite beyond this test. hist_manager_ori = ip.history_manager try: ip.history_manager = HistoryManager(ip) ip.history_manager.hist_file = histfile print 'test',histfile hist = [u"t = 'žćčšđ'"] # test save and load ip.history_manager.input_hist_raw[:] = [] for h in hist: ip.history_manager.input_hist_raw.append(h) ip.save_history() ip.history_manager.input_hist_raw[:] = [] ip.reload_history() self.assertEqual(len(ip.history_manager.input_hist_raw), len(hist)) for i,h in enumerate(hist): self.assertEqual(hist[i], ip.history_manager.input_hist_raw[i]) finally: # Restore history manager ip.history_manager = hist_manager_ori if __name__ == "__main__": unittest.main()