39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import sys
|
|
|
|
from subprocess import Popen, PIPE
|
|
|
|
def get_output_error_code(cmd):
|
|
"""Get stdout, stderr, and exit code from running a command"""
|
|
p = Popen(cmd, stdout=PIPE, stderr=PIPE)
|
|
out, err = p.communicate()
|
|
out = out.decode('utf8', 'replace')
|
|
err = err.decode('utf8', 'replace')
|
|
return out, err, p.returncode
|
|
|
|
|
|
def check_help_output(pkg, subcommand=None):
|
|
"""test that `python -m PKG [subcommand] -h` works"""
|
|
cmd = [sys.executable, '-m', pkg]
|
|
if subcommand:
|
|
cmd.extend(subcommand)
|
|
cmd.append('-h')
|
|
out, err, rc = get_output_error_code(cmd)
|
|
assert rc == 0, err
|
|
assert "Traceback" not in err
|
|
assert "Options" in out
|
|
assert "--help-all" in out
|
|
return out, err
|
|
|
|
|
|
def check_help_all_output(pkg, subcommand=None):
|
|
"""test that `python -m PKG --help-all` works"""
|
|
cmd = [sys.executable, '-m', pkg]
|
|
if subcommand:
|
|
cmd.extend(subcommand)
|
|
cmd.append('--help-all')
|
|
out, err, rc = get_output_error_code(cmd)
|
|
assert rc == 0, err
|
|
assert "Traceback" not in err
|
|
assert "Options" in out
|
|
assert "Class parameters" in out
|
|
return out, err
|