summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_subprocess.py
Commit message (Collapse)AuthorAgeFilesLines
...
* bpo-32102 Add "capture_output=True" to subprocess.run (GH-5149)Bo Bayles2018-01-301-0/+32
| | | | Add "capture_output=True" option to subprocess.run, this is equivalent to setting stdout=PIPE, stderr=PIPE but is much more readable.
* bpo-25942: make subprocess more graceful on ^C (GH-5026)Gregory P. Smith2018-01-301-0/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not allow receiving a SIGINT to cause the subprocess module to trigger an immediate SIGKILL of the child process. SIGINT is normally sent to all child processes by the OS at the same time already as was the established normal behavior in 2.7 and 3.2. This behavior change was introduced during the fix to https://bugs.python.org/issue12494 and is generally surprising to command line tool users who expect other tools launched in child processes to get their own SIGINT and do their own cleanup. In Python 3.3-3.6 subprocess.call and subprocess.run would immediately SIGKILL the child process upon receiving a SIGINT (which raises a KeyboardInterrupt). We now give the child a small amount of time to exit gracefully before resorting to a SIGKILL. This is also the case for subprocess.Popen.__exit__ which would previously block indefinitely waiting for the child to die. This was hidden from many users by virtue of subprocess.call and subprocess.run sending the signal immediately. Behavior change: subprocess.Popen.__exit__ will not block indefinitely when the exiting exception is a KeyboardInterrupt. This is done for user friendliness as people expect their ^C to actually happen. This could cause occasional orphaned Popen objects when not using `call` or `run` with a child process that hasn't exited. Refactoring involved: The Popen.wait method deals with the KeyboardInterrupt second chance, existing platform specific internals have been renamed to _wait(). Also fixes comment typos.
* bpo-32667: Fix tests when $PATH contains a file (#5322)Victor Stinner2018-01-251-8/+7
| | | | | Some tests failed when the PATH environment variable contained a path to an existing file. Fix tests to ignore also NotADirectoryError, not only FileNotFoundError and PermissionError.
* bpo-32369: test_subprocess: Fix pass_fds check in test_close_fds() (#4920)izbyshev2017-12-181-2/+2
| | | | | | | | | | The last part of test_close_fds() doesn't match its own comment. The following assertion always holds because fds_to_keep and open_fds are disjoint by construction. self.assertFalse(remaining_fds & fds_to_keep & open_fds, "Some fds not in pass_fds were left open") Fix the code to match the message in the assertion.
* bpo-19764: Implemented support for subprocess.Popen(close_fds=True) on ↵Segev Finer2017-12-181-5/+61
| | | | | | | | | | | | | | | | | Windows (#1218) Even though Python marks any handles it opens as non-inheritable there is still a race when using `subprocess.Popen` since creating a process with redirected stdio requires temporarily creating inheritable handles. By implementing support for `subprocess.Popen(close_fds=True)` we fix this race. In order to implement this we use PROC_THREAD_ATTRIBUTE_HANDLE_LIST which is available since Windows Vista. Which allows to pass an explicit list of handles to inherit when creating a process. This commit also adds `STARTUPINFO.lpAttributeList["handle_list"]` which can be used to control PROC_THREAD_ATTRIBUTE_HANDLE_LIST directly.
* bpo-31756: subprocess.run should alias universal_newlines to text (#4049)andyclegg2017-10-231-35/+38
| | | | | | | | | Improve human friendliness of the Popen API: Add text=False as a keyword-only argument to subprocess.Popen along with a Popen attribute .text_mode and set this based on the encoding/errors/universal_newlines/text arguments. The universal_newlines parameter and attribute are maintained for backwards compatibility.
* bpo-31178: Mock os.waitpid() in test_subprocess (#3896)Victor Stinner2017-10-051-4/+8
| | | | | | Fix test_exception_errpipe_bad_data() and test_exception_errpipe_normal() of test_subprocess: mock os.waitpid() to avoid calling the real os.waitpid(0, 0) which is an unexpected side effect of the test.
* bpo-31471: Fix assertion failure in subprocess.Popen() on Windows, in case ↵Oren Milman2017-09-141-0/+9
| | | | env has a bad keys() method. (#3580)
* bpo-31370: Remove support for threads-less builds (#3385)Antoine Pitrou2017-09-071-7/+1
| | | | | | * Remove Setup.config * Always define WITH_THREAD for compatibility.
* bpo-31178: Avoid concatenating bytes with str in subprocess error (#3066)Ammar Askar2017-09-061-0/+47
| | | Avoid concatenating bytes with str in the typically rare subprocess error path (exec failed). Includes a mock based unittest to exercise the codepath.
* bpo-12383: Also ignore __PYVENV_LAUNCHER__ (#3278)Ned Deily2017-09-041-0/+1
| | | Used in macOS framework builds.
* Skip two tests not intended to pass on Windows. (#3202)Gregory P. Smith2017-08-251-0/+2
|
* bpo-22536: Set the filename in FileNotFoundError. (#3194)Gregory P. Smith2017-08-241-0/+10
| | | | Have the subprocess module set the filename in the FileNotFoundError exception raised on POSIX systems when the executable or cwd are missing.
* Add test_subprocess.test_nonexisting_with_pipes() (#3133)Victor Stinner2017-08-211-4/+47
| | | | bpo-30121: Test the Popen failure when Popen was created with pipes. Create also NONEXISTING_CMD variable in test_subprocess.py.
* bpo-30121: Fix debug assert in subprocess on Windows (#1224)Segev Finer2017-08-181-4/+5
| | | | | | | | | * bpo-30121: Fix debug assert in subprocess on Windows This is caused by closing HANDLEs using os.close which is for CRT file descriptors and not for HANDLEs. * bpo-30121: Suppress debug assertion in test_subprocess when ran directly
* bpo-31173: Rewrite WSTOPSIG test of test_subprocess (#3055)Victor Stinner2017-08-101-35/+22
| | | | | | | | | | | | | The current test_child_terminated_in_stopped_state() function test creates a child process which calls ptrace(PTRACE_TRACEME, 0, 0) and then crash (SIGSEGV). The problem is that calling os.waitpid() in the parent process is not enough to close the process: the child process remains alive and so the unit test leaks a child process in a strange state. Closing the child process requires non-trivial code, maybe platform specific. Remove the functional test and replaces it with an unit test which mocks os.waitpid() using a new _testcapi.W_STOPCODE() function to test the WIFSTOPPED() path.
* Spelling fixes (#2902)Ville Skyttä2017-08-031-4/+4
|
* bpo-31067: test_subprocess calls reap_children() (#2931)Victor Stinner2017-07-281-0/+2
| | | | test_subprocess now also calls reap_children() in tearDown(), not only on setUp().
* bpo-30764: test_subprocess uses SuppressCrashReport (#2405)Victor Stinner2017-06-261-19/+22
| | | | | bpo-30764, bpo-29335: test_child_terminated_in_stopped_state() of test_subprocess now uses support.SuppressCrashReport() to prevent the creation of a core dump on FreeBSD.
* bpo-30730: Prevent environment variables injection in subprocess on Windows. ↵Serhiy Storchaka2017-06-231-0/+40
| | | | | | (#2325) Prevent passing other invalid environment variables and command arguments.
* bpo-28180: Implementation for PEP 538 (#659)Nick Coghlan2017-06-111-1/+2
| | | | | | | | | | - new PYTHONCOERCECLOCALE config setting - coerces legacy C locale to C.UTF-8, C.utf8 or UTF-8 by default - always uses C.UTF-8 on Android - uses `surrogateescape` on stdin and stdout in the coercion target locales - configure option to disable locale coercion at build time - configure option to disable C locale warning at build time
* subprocess test_empty_env typo fix. (#1877)Gregory P. Smith2017-05-301-3/+3
|
* bpo-12383: Refactor subprocess test_empty_env (#1874)Gregory P. Smith2017-05-301-12/+20
| | | | | | | | | | | | Bugfix: This test wasn't being run because it was skipping based on the presence of Py_ENABLE_SHARED rather than its value. It is always present on POSIX systems but defaults to 0. Refactoring: Move the environment variables that can be ignored into a function. Parse the list from the child process and filter out the ones to exclude in the parent before checking that the rest is empty. Feature: Adds always present environment variables to ignore when running in a Gentoo sandbox so that the test can pass there.
* bpo-29335 - apply suggested test_subprocess simplifications from haypo and ↵Gregory P. Smith2017-05-231-9/+5
| | | | | Zach: (#1757) use faulthandler._sigsegv() and ctypes.util.find_library('c')
* bpo-30065: Fixed arguments validation in _posixsubprocess.fork_exec(). (#1110)Serhiy Storchaka2017-04-191-1/+12
|
* bpo-28624: Add a test that checks that cwd parameter of Popen() accepts ↵Sayan Chowdhury2017-02-261-0/+10
| | | | PathLike objects (#157)
* bpo-26128: Added __init__to subprocess.STARTUPINFO (#171)Subhendu Ghosh2017-02-251-0/+16
| | | | | | | The Windows-specific subprocess.STARTUPINFO class now accepts keyword-only arguments to its constructor to set the various data attributes. Patch by Subhendu Ghosh.
* Skip the test requiring ctypes if ctypes is unavailable.Gregory P. Smith2017-01-231-1/+6
|\ | | | | | | prevents http://buildbot.python.org/all/builders/x86%20Ubuntu%20Shared%203.x/builds/240/steps/test/logs/stdio
| * Skip the test requiring ctypes if ctypes is unavailable.Gregory P. Smith2017-01-231-1/+6
| |\ | | | | | | | | | prevents http://buildbot.python.org/all/builders/x86%20Ubuntu%20Shared%203.x/builds/240/steps/test/logs/stdio
| | * Skip the test requiring ctypes if ctypes is unavailable.Gregory P. Smith2017-01-231-1/+6
| | | | | | | | | | | | prevents http://buildbot.python.org/all/builders/x86%20Ubuntu%20Shared%203.x/builds/240/steps/test/logs/stdio
* | | typo fix, extra '.' on MacOS :)Gregory P. Smith2017-01-231-1/+1
|\ \ \ | |/ /
| * | typo fix, extra '.' on MacOS :)Gregory P. Smith2017-01-231-1/+1
| |\ \ | | |/
| | * typo fix, extra '.' :)Gregory P. Smith2017-01-231-1/+1
| | |
* | | Issue #29335: Fix subprocess.Popen.wait() when the child process hasGregory P. Smith2017-01-231-0/+41
|\ \ \ | |/ / | | | | | | exited to a stopped instead of terminated state (ex: when under ptrace).
| * | Issue #29335: Fix subprocess.Popen.wait() when the child process hasGregory P. Smith2017-01-231-0/+41
| |\ \ | | |/ | | | | | | exited to a stopped instead of terminated state (ex: when under ptrace).
| | * Issue #29335: Fix subprocess.Popen.wait() when the child process hasGregory P. Smith2017-01-231-0/+41
| | | | | | | | | | | | exited to a stopped instead of terminated state (ex: when under ptrace).
| | * Issue #27895: Spelling fixes (Contributed by Ville Skyttä).Martin Panter2016-09-071-1/+1
| | |
* | | Issue #20572: Remove the subprocess.Popen.wait endtime parameter.Gregory P. Smith2016-11-211-14/+0
|\ \ \ | |/ / | | | | | | It was deprecated in 3.4 and undocumented prior to that.
| * | Issue #20572: The subprocess.Popen.wait method's undocumented endtimeGregory P. Smith2016-11-211-14/+13
|/ / | | | | | | | | parameter now raises a DeprecationWarning. It was deprecated in 3.4. It was never documented prior to that.
* | Issue #28662: Catch PermissionError in tests when spawning a non existent ↵Xavier de Gaye2016-11-141-2/+3
| | | | | | | | program
* | Issue #6135: Adds encoding and errors parameters to subprocessSteve Dower2016-09-071-18/+41
| |
* | Adds test.support.PGO and skips tests that are not useful for PGO.Steve Dower2016-09-071-0/+3
| |
* | Issue #27895: Spelling fixes (Contributed by Ville Skyttä).Raymond Hettinger2016-08-301-1/+1
| |
* | Issue #27626: Merge spelling fixes from 3.5Martin Panter2016-07-281-1/+1
|\ \ | |/
| * Issue #27626: Spelling fixes in docs, comments and internal namesMartin Panter2016-07-281-1/+1
| | | | | | | | Based on patch by Ville Skyttä.
* | Issue #27472: Add test.support.unix_shell as the path to the default shell.Xavier de Gaye2016-07-221-2/+2
| |
* | merge from 3.5. (moves the issue26372 tests to the proper class)Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)2016-06-051-46/+46
|\ \ | |/
| * Move the BrokenPipeError tests to the POSIXProcessTestCase classGregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)2016-06-051-46/+46
| | | | | | | | | | instead of the generic ProcessTestCase class as they are posix specific.
* | issue26372 - use os.devnull instead of /dev/nullGregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)2016-06-041-1/+1
|\ \ | |/
| * issue26372 - use os.devnull instead of /dev/nullGregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)2016-06-041-1/+1
| |