def step(context, args):
from StringIO import StringIO
import sys
context.stdin = StringIO()
context.stdout = StringIO()
context.stderr = StringIO()
try:
sys.stdin = context.stdin
sys.stdout = context.stdout
sys.stderr = context.stderr
if [s for s in context.scenario.steps if 'should be prompted' in s.name]:
# Fake this out for scenarios that expect a prompt
sys.stdin.write("yes\n")
else:
# Scenarios that don't expect a prompt but get one will fail
sys.stdin.write("no\n")
sys.stdin.seek(0)
if 'cli_config' in context and context.cli_config:
standard_cli(args=args.split(), config=context.cli_config)
else:
# Set env vars for username/password so that we don't need
# to pollute the features files with them.
os.environ['CHROMA_USERNAME'] = 'admin'
os.environ['CHROMA_PASSWORD'] = 'lustre'
standard_cli(args.split())
except SystemExit, e:
context.stdout.seek(0)
context.stderr.seek(0)
forced = any([a in ['--force', '-f'] for a in args.split()])
if e.code != 0 and not context.cli_failure_expected:
fail("code: %d stdout: %s stderr: %s" %
(e.code, context.stdout.readlines(), context.stderr.readlines()))
elif e.code == 0 and context.cli_failure_expected and not forced:
fail("Failure expected but didn't happen!\nstdout: %s, stderr: %s" %
(context.stdout.readlines(), context.stderr.readlines()))
except Exception, e:
context.stdout.seek(0)
context.stderr.seek(0)
from traceback import format_exc
fail("%s\nstdout:\n%s\nstderr:\n%s" %
(format_exc(),
"".join(context.stdout.readlines()),
"".join(context.stderr.readlines())))
sys.stdin = sys.__stdin__
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
standard_cli.py 文件源码
python
阅读 20
收藏 0
点赞 0
评论 0
评论列表
文章目录