import subprocess context = {} def _save(name, value): context[name] = value def _get(name): return context[name] def assertEqual(a, b): if a != b: raise Exception( 'expected {!r} == {!r}, but was disappointed'.format(a, b)) def _run_echo(args): cmd = '/bin/echo' p = subprocess.Popen( [cmd] + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) out, err = p.communicate() context["stdout"] = out context["stderr"] = err context["exit_code"] = p.returncode def run_echo_without_args(): _run_echo([]) def run_echo_with_args(args=None): _run_echo(args.split()) def exit_code_is_zero(exit_code=None): exit_code = int(exit_code) assertEqual(_get("exit_code"), exit_code) def stdout_is_a_newline(): assertEqual(_get('stdout'), '\n') def stdout_is_text(text=None): assertEqual(_get('stdout'), text + '\n') def stderr_is_empty(): assertEqual(_get('stderr'), '')