summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-05-27 15:47:11 +0000
committerChris McDonough <chrism@agendaless.com>2009-05-27 15:47:11 +0000
commit156375861f191f51f4e97ce25cd4d39f8025f90b (patch)
treeead4a91f8781cc26b6754e496d5e52399568edbe /repoze/bfg/tests
parent711b60c05b9573f688994233ec1baac3f89bc45a (diff)
downloadpyramid-156375861f191f51f4e97ce25cd4d39f8025f90b.tar.gz
pyramid-156375861f191f51f4e97ce25cd4d39f8025f90b.tar.bz2
pyramid-156375861f191f51f4e97ce25cd4d39f8025f90b.zip
- A paster command has been added named "bfgshell". This command can
be used to get an interactive prompt with your BFG root object in the global namespace. E.g.:: bin/paster bfgshell /path/to/myapp.ini myapp See the ``Project`` chapter in the BFG documentation for more information.
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/test_paster.py71
-rw-r--r--repoze/bfg/tests/test_scripting.py31
2 files changed, 71 insertions, 31 deletions
diff --git a/repoze/bfg/tests/test_paster.py b/repoze/bfg/tests/test_paster.py
new file mode 100644
index 000000000..3339fe498
--- /dev/null
+++ b/repoze/bfg/tests/test_paster.py
@@ -0,0 +1,71 @@
+import unittest
+
+class TestBFGShellCommand(unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.paster import BFGShellCommand
+ return BFGShellCommand
+
+ def _makeOne(self):
+ return self._getTargetClass()('bfgshell')
+
+ def test_command(self):
+ command = self._makeOne()
+ interact = DummyInteractor()
+ app = DummyApp()
+ loadapp = DummyLoadApp(app)
+ command.interact = (interact,)
+ command.loadapp = (loadapp,)
+ command.args = ('/foo/bar/myapp.ini', 'myapp')
+ command.command()
+ self.assertEqual(loadapp.config_name, 'config:/foo/bar/myapp.ini')
+ self.assertEqual(loadapp.section_name, 'myapp')
+ self.failUnless(loadapp.relative_to)
+ self.assertEqual(len(app.threadlocal_manager.pushed), 1)
+ pushed = app.threadlocal_manager.pushed[0]
+ self.assertEqual(pushed['registry'], dummy_registry)
+ self.assertEqual(pushed['request'], None)
+ self.assertEqual(interact.local, {'root':dummy_root})
+ self.failUnless(interact.banner)
+ self.assertEqual(len(app.threadlocal_manager.popped), 1)
+
+class Dummy:
+ pass
+
+dummy_root = Dummy()
+
+dummy_registry = Dummy()
+
+class DummyInteractor:
+ def __call__(self, banner, local):
+ self.banner = banner
+ self.local = local
+
+class DummyLoadApp:
+ def __init__(self, app):
+ self.app = app
+
+ def __call__(self, config_name, name=None, relative_to=None):
+ self.config_name = config_name
+ self.section_name = name
+ self.relative_to = relative_to
+ return self.app
+
+class DummyApp:
+ def __init__(self):
+ self.registry = dummy_registry
+ self.threadlocal_manager = DummyThreadLocalManager()
+
+ def root_factory(self, environ):
+ return dummy_root
+
+class DummyThreadLocalManager:
+ def __init__(self):
+ self.pushed = []
+ self.popped = []
+
+ def push(self, item):
+ self.pushed.append(item)
+
+ def pop(self):
+ self.popped.append(True)
+
diff --git a/repoze/bfg/tests/test_scripting.py b/repoze/bfg/tests/test_scripting.py
deleted file mode 100644
index a54b4b7d9..000000000
--- a/repoze/bfg/tests/test_scripting.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import unittest
-
-class TestGetRoot(unittest.TestCase):
- def _callFUT(self, router):
- from repoze.bfg.scripting import get_root
- return get_root(router)
-
- def test_it(self):
- router = DummyRouter()
- result = self._callFUT(router)
- self.assertEqual(result, router)
- self.assertEqual(len(router.threadlocal_manager.pushed), 1)
- self.assertEqual(router.threadlocal_manager.pushed[0],
- {'registry':None, 'request':None})
-
-
-class DummyThreadLocalManager:
- def __init__(self):
- self.pushed = []
-
- def push(self, val):
- self.pushed.append(val)
-
-class DummyRouter:
- def __init__(self):
- self.registry = None
- self.threadlocal_manager = DummyThreadLocalManager()
-
- def root_factory(self, environ):
- return self
-