@@ -24,9 +24,12 @@ def run(command_line, manager_run, capture_stderr=False):
24
24
except SystemExit as e :
25
25
exit_code = e .code
26
26
finally :
27
+ out = sys .stdout .getvalue ()
28
+ if capture_stderr :
29
+ out += sys .stderr .getvalue ()
27
30
sys .stderr = sys_stderr_orig
28
31
29
- return sys . stdout . getvalue () , exit_code
32
+ return out , exit_code
30
33
31
34
32
35
class SimpleCommand (Command ):
@@ -257,23 +260,18 @@ def hello_again(name, url=None):
257
260
stdout , code = run ('manage.py hello_again --name=joe --url=reddit.com' , lambda : manager .run ())
258
261
assert 'hello joe from reddit.com' in stdout
259
262
260
- def test_global_option_provided_before_and_after_command (self ):
263
+ def test_global_option_provided_before_command (self ):
261
264
262
265
manager = Manager (self .app )
263
266
manager .add_option ('-c' , '--config' , dest = 'config_name' , required = False , default = 'Development' )
264
267
manager .add_command ('simple' , SimpleCommand ())
265
268
266
269
assert isinstance (manager ._commands ['simple' ], SimpleCommand )
267
270
268
- stdout , code = run ('manage.py simple -c Development' , lambda : manager .run ())
271
+ stdout , code = run ('manage.py -c Development simple ' , lambda : manager .run ())
269
272
assert code == 0
270
273
assert 'OK' in stdout
271
274
272
- # TODO: Allow swapping '-c Development' option and 'simple' command
273
- # stdout, code = run('manage.py -c Development simple', lambda: manager.run())
274
- # assert code == 0
275
- # assert 'OK' in stdout
276
-
277
275
def test_get_usage (self ):
278
276
279
277
manager = Manager (self .app )
@@ -300,7 +298,7 @@ def test_run_existing_command(self):
300
298
def test_run_non_existant_command (self ):
301
299
302
300
manager = Manager (self .app )
303
- self .assertRaises (InvalidCommand , manager .handle , 'manage.py' , 'simple' )
301
+ self .assertRaises (SystemExit , manager .handle , 'manage.py' , 'simple' )
304
302
305
303
def test_run_existing (self ):
306
304
@@ -324,15 +322,15 @@ def test_run_not_existing(self):
324
322
manager = Manager (self .app )
325
323
326
324
stdout , code = run ('manage.py simple' , lambda : manager .run ())
327
- assert code == 1
325
+ assert code == 2
328
326
assert 'OK' not in stdout
329
327
330
328
def test_run_no_name (self ):
331
329
332
330
manager = Manager (self .app )
333
331
334
332
stdout , code = run ('manage.py' , lambda : manager .run ())
335
- assert code == 1
333
+ assert code == 2
336
334
337
335
def test_run_good_options (self ):
338
336
@@ -372,7 +370,7 @@ def test_init_with_flask_instance(self):
372
370
assert callable (manager .app )
373
371
374
372
def test_init_with_callable (self ):
375
- manager = Manager (lambda : app )
373
+ manager = Manager (lambda : self . app )
376
374
assert callable (manager .app )
377
375
378
376
def test_raise_index_error (self ):
@@ -384,7 +382,7 @@ def error():
384
382
raise IndexError ()
385
383
386
384
try :
387
- self .assertRaises (IndexError , manager . run , default_command = ' error' )
385
+ self .assertRaises (IndexError , run , 'manage.py error', lambda : manager . run () )
388
386
except SystemExit , e :
389
387
assert e .code == 1
390
388
@@ -442,7 +440,7 @@ def test_submanager_has_options(self):
442
440
assert code == 0
443
441
assert 'OK' in stdout
444
442
445
- stdout , code = run ('manage.py sub_manager simple -c Development' , lambda : manager .run ())
443
+ stdout , code = run ('manage.py -c Development sub_manager simple ' , lambda : manager .run ())
446
444
assert code == 0
447
445
assert 'OK' in stdout
448
446
@@ -453,9 +451,9 @@ def test_manager_usage_with_submanager(self):
453
451
manager = Manager (self .app )
454
452
manager .add_command ('sub_manager' , sub_manager )
455
453
456
- stdout , code = run ('manage.py' , lambda : manager .run ())
457
- assert code == 1
458
- assert 'sub_manager Example sub-manager' in stdout
454
+ stdout , code = run ('manage.py -h ' , lambda : manager .run ())
455
+ assert code == 0
456
+ assert 'Example sub-manager' in stdout
459
457
460
458
def test_submanager_usage (self ):
461
459
@@ -465,9 +463,14 @@ def test_submanager_usage(self):
465
463
manager = Manager (self .app )
466
464
manager .add_command ('sub_manager' , sub_manager )
467
465
468
- stdout , code = run ('manage.py sub_manager' , lambda : manager .run ())
469
- assert code == 1
470
- assert 'simple simple command' in stdout
466
+ stdout , code = run ('manage.py sub_manager' , lambda : manager .run (),
467
+ capture_stderr = True )
468
+ assert code == 2
469
+ assert 'too few arguments' in stdout
470
+
471
+ stdout , code = run ('manage.py sub_manager -h' , lambda : manager .run ())
472
+ assert code == 0
473
+ assert 'simple command' in stdout
471
474
472
475
def test_submanager_has_no_default_commands (self ):
473
476
0 commit comments