##// END OF EJS Templates
Reorder inputsplitter transformers so that prompts pasted into the input are removed before other transforms are applied.
Reorder inputsplitter transformers so that prompts pasted into the input are removed before other transforms are applied.

File last commit:

r3958:c4b5fb1d
r4078:ab4e1b4d
Show More
test_application.py
135 lines | 4.2 KiB | text/x-python | PythonLexer
Brian Granger
Adding more documentation to config.application related files.
r3796 """
Tests for IPython.config.application.Application
Authors:
* Brian Granger
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2011 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.config.configurable import Configurable
from IPython.config.application import (
Application
)
from IPython.utils.traitlets import (
MinRK
rename macros/shortnames to flags/aliases...
r3861 Bool, Unicode, Int, Float, List, Dict
Brian Granger
Adding more documentation to config.application related files.
r3796 )
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
class Foo(Configurable):
MinRK
move shortname to Application...
r3852 i = Int(0, config=True, help="The integer i.")
j = Int(1, config=True, help="The integer j.")
name = Unicode(u'Brian', config=True, help="First name.")
Brian Granger
Adding more documentation to config.application related files.
r3796
class Bar(Configurable):
MinRK
prevent flags from clobbering entire config sections...
r3957 b = Int(0, config=True, help="The integer b.")
MinRK
move shortname to Application...
r3852 enabled = Bool(True, config=True, help="Enable bar.")
Brian Granger
Adding more documentation to config.application related files.
r3796
class MyApp(Application):
Brian Granger
Fixing bugs in BaseIPythonApplication....
r3942 name = Unicode(u'myapp')
MinRK
rename macros/shortnames to flags/aliases...
r3861 running = Bool(False, config=True,
Brian Granger
Adding more documentation to config.application related files.
r3796 help="Is the app running?")
classes = List([Bar, Foo])
MinRK
rename macros/shortnames to flags/aliases...
r3861 config_file = Unicode(u'', config=True,
Brian Granger
Adding more documentation to config.application related files.
r3796 help="Load this config file")
MinRK
rename macros/shortnames to flags/aliases...
r3861 aliases = Dict(dict(i='Foo.i',j='Foo.j',name='Foo.name',
enabled='Bar.enabled', log_level='MyApp.log_level'))
flags = Dict(dict(enable=({'Bar': {'enabled' : True}}, "Set Bar.enabled to True"),
disable=({'Bar': {'enabled' : False}}, "Set Bar.enabled to False")))
MinRK
move shortname to Application...
r3852
Brian Granger
Adding more documentation to config.application related files.
r3796 def init_foo(self):
self.foo = Foo(config=self.config)
def init_bar(self):
self.bar = Bar(config=self.config)
class TestApplication(TestCase):
def test_basic(self):
app = MyApp()
Brian Granger
Fixing bugs in BaseIPythonApplication....
r3942 self.assertEquals(app.name, u'myapp')
Brian Granger
Adding more documentation to config.application related files.
r3796 self.assertEquals(app.running, False)
self.assertEquals(app.classes, [MyApp,Bar,Foo])
self.assertEquals(app.config_file, u'')
def test_config(self):
app = MyApp()
MinRK
raise test log_level, to prevent output during tests
r3948 app.parse_command_line(["i=10","Foo.j=10","enabled=False","log_level=50"])
Brian Granger
Adding more documentation to config.application related files.
r3796 config = app.config
self.assertEquals(config.Foo.i, 10)
self.assertEquals(config.Foo.j, 10)
self.assertEquals(config.Bar.enabled, False)
MinRK
raise test log_level, to prevent output during tests
r3948 self.assertEquals(config.MyApp.log_level,50)
Brian Granger
Adding more documentation to config.application related files.
r3796
def test_config_propagation(self):
app = MyApp()
MinRK
raise test log_level, to prevent output during tests
r3948 app.parse_command_line(["i=10","Foo.j=10","enabled=False","log_level=50"])
Brian Granger
Adding more documentation to config.application related files.
r3796 app.init_foo()
app.init_bar()
self.assertEquals(app.foo.i, 10)
self.assertEquals(app.foo.j, 10)
self.assertEquals(app.bar.enabled, False)
MinRK
prevent flags from clobbering entire config sections...
r3957 def test_flags(self):
MinRK
move shortname to Application...
r3852 app = MyApp()
app.parse_command_line(["--disable"])
app.init_bar()
self.assertEquals(app.bar.enabled, False)
app.parse_command_line(["--enable"])
app.init_bar()
self.assertEquals(app.bar.enabled, True)
MinRK
prevent flags from clobbering entire config sections...
r3957 def test_aliases(self):
app = MyApp()
app.parse_command_line(["i=5", "j=10"])
app.init_foo()
self.assertEquals(app.foo.i, 5)
app.init_foo()
self.assertEquals(app.foo.j, 10)
def test_flag_clobber(self):
"""test that setting flags doesn't clobber existing settings"""
app = MyApp()
app.parse_command_line(["Bar.b=5", "--disable"])
app.init_bar()
self.assertEquals(app.bar.enabled, False)
self.assertEquals(app.bar.b, 5)
app.parse_command_line(["--enable", "Bar.b=10"])
app.init_bar()
self.assertEquals(app.bar.enabled, True)
self.assertEquals(app.bar.b, 10)
MinRK
allow extra_args in applications
r3958 def test_extra_args(self):
app = MyApp()
app.parse_command_line(['extra', "Bar.b=5", "--disable", 'args'])
app.init_bar()
self.assertEquals(app.bar.enabled, False)
self.assertEquals(app.bar.b, 5)
self.assertEquals(app.extra_args, ['extra', 'args'])
MinRK
prevent flags from clobbering entire config sections...
r3957