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