commit | author | age
|
3f1309
|
1 |
import os |
d20324
|
2 |
import unittest |
3f1309
|
3 |
from pyramid.tests.test_scripts import dummy |
1702da
|
4 |
|
7fcc30
|
5 |
|
9cab0e
|
6 |
here = os.path.abspath(os.path.dirname(__file__)) |
b2a749
|
7 |
|
9cab0e
|
8 |
|
2e6d63
|
9 |
class TestPServeCommand(unittest.TestCase): |
CM |
10 |
def setUp(self): |
|
11 |
from pyramid.compat import NativeIO |
|
12 |
self.out_ = NativeIO() |
|
13 |
|
|
14 |
def out(self, msg): |
|
15 |
self.out_.write(msg) |
49fb77
|
16 |
|
2e6d63
|
17 |
def _getTargetClass(self): |
CM |
18 |
from pyramid.scripts.pserve import PServeCommand |
|
19 |
return PServeCommand |
|
20 |
|
|
21 |
def _makeOne(self, *args): |
|
22 |
effargs = ['pserve'] |
|
23 |
effargs.extend(args) |
|
24 |
cmd = self._getTargetClass()(effargs) |
|
25 |
cmd.out = self.out |
3e489b
|
26 |
self.loader = dummy.DummyLoader() |
MM |
27 |
cmd._get_config_loader = self.loader |
2e6d63
|
28 |
return cmd |
CM |
29 |
|
442c1e
|
30 |
def test_run_no_args(self): |
2e6d63
|
31 |
inst = self._makeOne() |
CM |
32 |
result = inst.run() |
d58614
|
33 |
self.assertEqual(result, 2) |
2e6d63
|
34 |
self.assertEqual(self.out_.getvalue(), 'You must give a config file') |
8f4fcc
|
35 |
|
442c1e
|
36 |
def test_parse_vars_good(self): |
49fb77
|
37 |
inst = self._makeOne('development.ini', 'a=1', 'b=2') |
3f1309
|
38 |
app = dummy.DummyApp() |
b2a749
|
39 |
|
3e489b
|
40 |
def get_app(name, global_conf): |
MM |
41 |
app.name = name |
|
42 |
app.global_conf = global_conf |
|
43 |
return app |
|
44 |
self.loader.get_wsgi_app = get_app |
|
45 |
self.loader.server = lambda x: x |
49fb77
|
46 |
|
3f1309
|
47 |
inst.run() |
49fb77
|
48 |
self.assertEqual(app.global_conf, {'a': '1', 'b': '2'}) |
d20324
|
49 |
|
442c1e
|
50 |
def test_parse_vars_bad(self): |
49fb77
|
51 |
inst = self._makeOne('development.ini', 'a') |
JA |
52 |
self.assertRaises(ValueError, inst.run) |
8c2aaf
|
53 |
|
3f1309
|
54 |
def test_config_file_finds_watch_files(self): |
MM |
55 |
inst = self._makeOne('development.ini') |
3e489b
|
56 |
loader = self.loader('/base/path.ini') |
MM |
57 |
loader.settings = {'pserve': { |
|
58 |
'watch_files': 'foo\n/baz\npyramid.tests.test_scripts:*.py', |
|
59 |
}} |
|
60 |
inst.pserve_file_config(loader, global_conf={'a': '1'}) |
|
61 |
self.assertEqual(loader.calls[0]['defaults'], { |
9cab0e
|
62 |
'a': '1', |
MM |
63 |
}) |
50cebd
|
64 |
self.assertEqual(inst.watch_files, set([ |
9cab0e
|
65 |
os.path.abspath('/base/foo'), |
MM |
66 |
os.path.abspath('/baz'), |
|
67 |
os.path.abspath(os.path.join(here, '*.py')), |
50cebd
|
68 |
])) |
3f1309
|
69 |
|
248669
|
70 |
def test_config_file_finds_open_url(self): |
MM |
71 |
inst = self._makeOne('development.ini') |
3e489b
|
72 |
loader = self.loader('/base/path.ini') |
MM |
73 |
loader.settings = {'pserve': { |
|
74 |
'open_url': 'http://127.0.0.1:8080/', |
|
75 |
}} |
|
76 |
inst.pserve_file_config(loader, global_conf={'a': '1'}) |
|
77 |
self.assertEqual(loader.calls[0]['defaults'], { |
248669
|
78 |
'a': '1', |
MM |
79 |
}) |
|
80 |
self.assertEqual(inst.open_url, 'http://127.0.0.1:8080/') |
|
81 |
|
3e489b
|
82 |
def test_guess_server_url(self): |
248669
|
83 |
inst = self._makeOne('development.ini') |
3e489b
|
84 |
loader = self.loader('/base/path.ini') |
MM |
85 |
loader.settings = {'server:foo': { |
|
86 |
'port': '8080', |
|
87 |
}} |
|
88 |
url = inst.guess_server_url(loader, 'foo', global_conf={'a': '1'}) |
|
89 |
self.assertEqual(loader.calls[0]['defaults'], { |
248669
|
90 |
'a': '1', |
MM |
91 |
}) |
|
92 |
self.assertEqual(url, 'http://127.0.0.1:8080') |
|
93 |
|
b2a749
|
94 |
def test_reload_call_hupper_with_correct_args(self): |
1702da
|
95 |
from pyramid.scripts import pserve |
RH |
96 |
|
|
97 |
class AttrDict(dict): |
|
98 |
def __init__(self, *args, **kwargs): |
|
99 |
super(AttrDict, self).__init__(*args, **kwargs) |
|
100 |
self.__dict__ = self |
|
101 |
|
|
102 |
def dummy_start_reloader(*args, **kwargs): |
|
103 |
dummy_start_reloader.args = args |
|
104 |
dummy_start_reloader.kwargs = kwargs |
|
105 |
|
2798f2
|
106 |
orig_hupper = pserve.hupper |
RH |
107 |
try: |
|
108 |
pserve.hupper = AttrDict(is_active=lambda: False, |
|
109 |
start_reloader=dummy_start_reloader) |
1702da
|
110 |
|
2798f2
|
111 |
inst = self._makeOne('--reload', 'development.ini') |
RH |
112 |
inst.run() |
|
113 |
finally: |
|
114 |
pserve.hupper = orig_hupper |
1702da
|
115 |
|
RH |
116 |
self.assertEquals(dummy_start_reloader.args, ('pyramid.scripts.pserve.main',)) |
|
117 |
self.assertEquals(dummy_start_reloader.kwargs, { |
|
118 |
'reload_interval': 1, |
|
119 |
'verbose': 1, |
|
120 |
'worker_kwargs': {'argv': ['pserve', '--reload', 'development.ini'], |
|
121 |
'quiet': False}}) |
b2a749
|
122 |
|
RH |
123 |
|
442c1e
|
124 |
class Test_main(unittest.TestCase): |
CM |
125 |
def _callFUT(self, argv): |
|
126 |
from pyramid.scripts.pserve import main |
eac060
|
127 |
return main(argv, quiet=True) |
442c1e
|
128 |
|
CM |
129 |
def test_it(self): |
|
130 |
result = self._callFUT(['pserve']) |
d58614
|
131 |
self.assertEqual(result, 2) |