diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-11-10 14:03:31 +0000 |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-11-10 14:03:31 +0000 |
commit | 9c9e1b97866bad0b41712b8d61c686125dbc77c9 (patch) | |
tree | 47f395010a4c1fd6d054750b66b914c9f3f2d9b4 /Lib/test/script_helper.py | |
parent | ae93389e0ac400924a5b196c3b0d7633104e9637 (diff) | |
download | cpython-git-9c9e1b97866bad0b41712b8d61c686125dbc77c9.tar.gz |
I'm only backporting the tests here.
Merged revisions 86395 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r86395 | antoine.pitrou | 2010-11-10 14:55:25 +0100 (mer., 10 nov. 2010) | 4 lines
Issue #10372: Import the warnings module only after the IO library is
initialized, so as to avoid bootstrap issues with the '-W' option.
........
Diffstat (limited to 'Lib/test/script_helper.py')
-rw-r--r-- | Lib/test/script_helper.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Lib/test/script_helper.py b/Lib/test/script_helper.py index efb0523f32..1b5b0bf315 100644 --- a/Lib/test/script_helper.py +++ b/Lib/test/script_helper.py @@ -12,6 +12,45 @@ import shutil import zipfile # Executing the interpreter in a subprocess +def _assert_python(expected_success, *args, **env_vars): + cmd_line = [sys.executable] + if not env_vars: + cmd_line.append('-E') + cmd_line.extend(args) + # Need to preserve the original environment, for in-place testing of + # shared library builds. + env = os.environ.copy() + env.update(env_vars) + p = subprocess.Popen(cmd_line, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + env=env) + try: + out, err = p.communicate() + finally: + subprocess._cleanup() + p.stdout.close() + p.stderr.close() + rc = p.returncode + if (rc and expected_success) or (not rc and not expected_success): + raise AssertionError( + "Process return code is %d, " + "stderr follows:\n%s" % (rc, err.decode('ascii', 'ignore'))) + return rc, out, err + +def assert_python_ok(*args, **env_vars): + """ + Assert that running the interpreter with `args` and optional environment + variables `env_vars` is ok and return a (return code, stdout, stderr) tuple. + """ + return _assert_python(True, *args, **env_vars) + +def assert_python_failure(*args, **env_vars): + """ + Assert that running the interpreter with `args` and optional environment + variables `env_vars` fails and return a (return code, stdout, stderr) tuple. + """ + return _assert_python(False, *args, **env_vars) + def python_exit_code(*args): cmd_line = [sys.executable, '-E'] cmd_line.extend(args) |