standard_cli.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:intel-manager-for-lustre 作者: intel-hpdd 项目源码 文件源码
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__
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号