##// END OF EJS Templates
First take at cleaning up extensions.
First take at cleaning up extensions.

File last commit:

r2731:1e1fe080
r2732:60cab731
Show More
test_pretty.py
101 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
from IPython.core.component import Component, masquerade_as
from IPython.core.iplib import InteractiveShell
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
#-----------------------------------------------------------------------------
class InteractiveShellStub(Component):
pprint = Bool(True)
class A(object):
pass
def a_pprinter(o, p, c):
return p.text("<A>")
class TestPrettyResultDisplay(TestCase):
def setUp(self):
self.ip = InteractiveShellStub(None)
Fernando Perez
Fix extensions test suite (small, but now it runs and passes!)
r2415 # This allows our stub to be retrieved instead of the real
# InteractiveShell
Brian Granger
Added test for the pretty.py extension and fixed sphinx docs....
r2283 masquerade_as(self.ip, InteractiveShell)
Fernando Perez
Fix extensions test suite (small, but now it runs and passes!)
r2415 self.prd = pretty_ext.PrettyResultDisplay(self.ip,
name='pretty_result_display')
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
First draft of refactored Component->Configurable.
r2731 prd = ip.extension_manager.load_extension('pretty')
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.
@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)