summaryrefslogtreecommitdiff
path: root/tests/test_scripts/test_pserve.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_scripts/test_pserve.py')
-rw-r--r--tests/test_scripts/test_pserve.py131
1 files changed, 131 insertions, 0 deletions
diff --git a/tests/test_scripts/test_pserve.py b/tests/test_scripts/test_pserve.py
new file mode 100644
index 000000000..485cf38cb
--- /dev/null
+++ b/tests/test_scripts/test_pserve.py
@@ -0,0 +1,131 @@
+import os
+import unittest
+from pyramid.tests.test_scripts import dummy
+
+
+here = os.path.abspath(os.path.dirname(__file__))
+
+
+class TestPServeCommand(unittest.TestCase):
+ def setUp(self):
+ from pyramid.compat import NativeIO
+ self.out_ = NativeIO()
+
+ def out(self, msg):
+ self.out_.write(msg)
+
+ def _getTargetClass(self):
+ from pyramid.scripts.pserve import PServeCommand
+ return PServeCommand
+
+ def _makeOne(self, *args):
+ effargs = ['pserve']
+ effargs.extend(args)
+ cmd = self._getTargetClass()(effargs)
+ cmd.out = self.out
+ self.loader = dummy.DummyLoader()
+ cmd._get_config_loader = self.loader
+ return cmd
+
+ def test_run_no_args(self):
+ inst = self._makeOne()
+ result = inst.run()
+ self.assertEqual(result, 2)
+ self.assertEqual(self.out_.getvalue(), 'You must give a config file')
+
+ def test_parse_vars_good(self):
+ inst = self._makeOne('development.ini', 'a=1', 'b=2')
+ app = dummy.DummyApp()
+
+ def get_app(name, global_conf):
+ app.name = name
+ app.global_conf = global_conf
+ return app
+ self.loader.get_wsgi_app = get_app
+ self.loader.server = lambda x: x
+
+ inst.run()
+ self.assertEqual(app.global_conf, {'a': '1', 'b': '2'})
+
+ def test_parse_vars_bad(self):
+ inst = self._makeOne('development.ini', 'a')
+ self.assertRaises(ValueError, inst.run)
+
+ def test_config_file_finds_watch_files(self):
+ inst = self._makeOne('development.ini')
+ loader = self.loader('/base/path.ini')
+ loader.settings = {'pserve': {
+ 'watch_files': 'foo\n/baz\npyramid.tests.test_scripts:*.py',
+ }}
+ inst.pserve_file_config(loader, global_conf={'a': '1'})
+ self.assertEqual(loader.calls[0]['defaults'], {
+ 'a': '1',
+ })
+ self.assertEqual(inst.watch_files, set([
+ os.path.abspath('/base/foo'),
+ os.path.abspath('/baz'),
+ os.path.abspath(os.path.join(here, '*.py')),
+ ]))
+
+ def test_config_file_finds_open_url(self):
+ inst = self._makeOne('development.ini')
+ loader = self.loader('/base/path.ini')
+ loader.settings = {'pserve': {
+ 'open_url': 'http://127.0.0.1:8080/',
+ }}
+ inst.pserve_file_config(loader, global_conf={'a': '1'})
+ self.assertEqual(loader.calls[0]['defaults'], {
+ 'a': '1',
+ })
+ self.assertEqual(inst.open_url, 'http://127.0.0.1:8080/')
+
+ def test_guess_server_url(self):
+ inst = self._makeOne('development.ini')
+ loader = self.loader('/base/path.ini')
+ loader.settings = {'server:foo': {
+ 'port': '8080',
+ }}
+ url = inst.guess_server_url(loader, 'foo', global_conf={'a': '1'})
+ self.assertEqual(loader.calls[0]['defaults'], {
+ 'a': '1',
+ })
+ self.assertEqual(url, 'http://127.0.0.1:8080')
+
+ def test_reload_call_hupper_with_correct_args(self):
+ from pyramid.scripts import pserve
+
+ class AttrDict(dict):
+ def __init__(self, *args, **kwargs):
+ super(AttrDict, self).__init__(*args, **kwargs)
+ self.__dict__ = self
+
+ def dummy_start_reloader(*args, **kwargs):
+ dummy_start_reloader.args = args
+ dummy_start_reloader.kwargs = kwargs
+
+ orig_hupper = pserve.hupper
+ try:
+ pserve.hupper = AttrDict(is_active=lambda: False,
+ start_reloader=dummy_start_reloader)
+
+ inst = self._makeOne('--reload', 'development.ini')
+ inst.run()
+ finally:
+ pserve.hupper = orig_hupper
+
+ self.assertEquals(dummy_start_reloader.args, ('pyramid.scripts.pserve.main',))
+ self.assertEquals(dummy_start_reloader.kwargs, {
+ 'reload_interval': 1,
+ 'verbose': 1,
+ 'worker_kwargs': {'argv': ['pserve', '--reload', 'development.ini'],
+ 'quiet': False}})
+
+
+class Test_main(unittest.TestCase):
+ def _callFUT(self, argv):
+ from pyramid.scripts.pserve import main
+ return main(argv, quiet=True)
+
+ def test_it(self):
+ result = self._callFUT(['pserve'])
+ self.assertEqual(result, 2)