##// END OF EJS Templates
Initial support in ipkernel for proper displayhook handling.
Initial support in ipkernel for proper displayhook handling.

File last commit:

r2786:a522a5c7
r2786:a522a5c7
Show More
test_pretty.py
102 lines | 2.6 KiB | text/x-python | PythonLexer
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283 #!/usr/bin/env python
# encoding: utf-8
"""
Simple tests for :mod:`IPython.extensions.pretty`.
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2009 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from unittest import TestCase
Brian Granger
Finishing work on configurables, plugins and extensions.
r2738 from IPython.config.configurable import Configurable
Brian Granger
Moving and renaming in preparation of subclassing InteractiveShell....
r2760 from IPython.core.interactiveshell import InteractiveShellABC
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283 from IPython.extensions import pretty as pretty_ext
from IPython.external import pretty
Fernando Perez
Fix another win32 test failure....
r2456 from IPython.testing import decorators as dec
Fernando Perez
Fix extensions test suite (small, but now it runs and passes!)
r2415 from IPython.testing import tools as tt
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283 from IPython.utils.traitlets import Bool
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
Brian Granger
Finishing work on configurables, plugins and extensions.
r2738 class InteractiveShellStub(Configurable):
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283 pprint = Bool(True)
Brian Granger
Finishing work on configurables, plugins and extensions.
r2738 InteractiveShellABC.register(InteractiveShellStub)
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283 class A(object):
pass
def a_pprinter(o, p, c):
return p.text("<A>")
class TestPrettyResultDisplay(TestCase):
def setUp(self):
Brian Granger
Finishing work on configurables, plugins and extensions.
r2738 self.ip = InteractiveShellStub()
Brian Granger
Adding support for HasTraits to take keyword arguments.
r2740 self.prd = pretty_ext.PrettyResultDisplay(shell=self.ip, config=None)
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283
Brian Granger
Initial support in ipkernel for proper displayhook handling.
r2786 @dec.skip_known_failure
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283 def test_for_type(self):
self.prd.for_type(A, a_pprinter)
a = A()
result = pretty.pretty(a)
self.assertEquals(result, "<A>")
Fernando Perez
Fix extensions test suite (small, but now it runs and passes!)
r2415 ipy_src = """
class A(object):
def __repr__(self):
return 'A()'
class B(object):
def __repr__(self):
return 'B()'
a = A()
b = B()
def a_pretty_printer(obj, p, cycle):
p.text('<A>')
def b_pretty_printer(obj, p, cycle):
p.text('<B>')
a
b
ip = get_ipython()
Brian Granger
Finishing work on configurables, plugins and extensions.
r2738 ip.extension_manager.load_extension('pretty')
prd = ip.plugin_manager.get_plugin('pretty_result_display')
Fernando Perez
Fix extensions test suite (small, but now it runs and passes!)
r2415 prd.for_type(A, a_pretty_printer)
prd.for_type_by_name(B.__module__, B.__name__, b_pretty_printer)
a
b
"""
ipy_out = """
A()
B()
<A>
<B>
"""
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283
Fernando Perez
Fix extensions test suite (small, but now it runs and passes!)
r2415 class TestPrettyInteractively(tt.TempFileMixin):
Fernando Perez
Fix another win32 test failure....
r2456
# XXX Unfortunately, ipexec_validate fails under win32. If someone helps
# us write a win32-compatible version, we can reactivate this test.
Brian Granger
Initial support in ipkernel for proper displayhook handling.
r2786 @dec.skip_known_failure
Fernando Perez
Fix another win32 test failure....
r2456 @dec.skip_win32
Fernando Perez
Fix extensions test suite (small, but now it runs and passes!)
r2415 def test_printers(self):
self.mktmp(ipy_src, '.ipy')
tt.ipexec_validate(self.fname, ipy_out)