Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
7a9ddd1d
Commit
7a9ddd1d
authored
Jun 05, 2016
by
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D)
Browse files
Options
Browse Files
Download
Plain Diff
merge from 3.5. (moves the issue26372 tests to the proper class)
parents
f39571ed
2daf8e7f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
46 deletions
+46
-46
Lib/test/test_subprocess.py
Lib/test/test_subprocess.py
+46
-46
No files found.
Lib/test/test_subprocess.py
View file @
7a9ddd1d
...
...
@@ -1238,52 +1238,6 @@ class ProcessTestCase(BaseTestCase):
fds_after_exception
=
os
.
listdir
(
fd_directory
)
self
.
assertEqual
(
fds_before_popen
,
fds_after_exception
)
def
test_communicate_BrokenPipeError_stdin_close
(
self
):
# By not setting stdout or stderr or a timeout we force the fast path
# that just calls _stdin_write() internally due to our mock.
proc
=
subprocess
.
Popen
([
sys
.
executable
,
'-c'
,
'pass'
])
with
proc
,
mock
.
patch
.
object
(
proc
,
'stdin'
)
as
mock_proc_stdin
:
mock_proc_stdin
.
close
.
side_effect
=
BrokenPipeError
proc
.
communicate
()
# Should swallow BrokenPipeError from close.
mock_proc_stdin
.
close
.
assert_called_with
()
def
test_communicate_BrokenPipeError_stdin_write
(
self
):
# By not setting stdout or stderr or a timeout we force the fast path
# that just calls _stdin_write() internally due to our mock.
proc
=
subprocess
.
Popen
([
sys
.
executable
,
'-c'
,
'pass'
])
with
proc
,
mock
.
patch
.
object
(
proc
,
'stdin'
)
as
mock_proc_stdin
:
mock_proc_stdin
.
write
.
side_effect
=
BrokenPipeError
proc
.
communicate
(
b'stuff'
)
# Should swallow the BrokenPipeError.
mock_proc_stdin
.
write
.
assert_called_once_with
(
b'stuff'
)
mock_proc_stdin
.
close
.
assert_called_once_with
()
def
test_communicate_BrokenPipeError_stdin_flush
(
self
):
# Setting stdin and stdout forces the ._communicate() code path.
# python -h exits faster than python -c pass (but spams stdout).
proc
=
subprocess
.
Popen
([
sys
.
executable
,
'-h'
],
stdin
=
subprocess
.
PIPE
,
stdout
=
subprocess
.
PIPE
)
with
proc
,
mock
.
patch
.
object
(
proc
,
'stdin'
)
as
mock_proc_stdin
,
\
open
(
os
.
devnull
,
'wb'
)
as
dev_null
:
mock_proc_stdin
.
flush
.
side_effect
=
BrokenPipeError
# because _communicate registers a selector using proc.stdin...
mock_proc_stdin
.
fileno
.
return_value
=
dev_null
.
fileno
()
# _communicate() should swallow BrokenPipeError from flush.
proc
.
communicate
(
b'stuff'
)
mock_proc_stdin
.
flush
.
assert_called_once_with
()
def
test_communicate_BrokenPipeError_stdin_close_with_timeout
(
self
):
# Setting stdin and stdout forces the ._communicate() code path.
# python -h exits faster than python -c pass (but spams stdout).
proc
=
subprocess
.
Popen
([
sys
.
executable
,
'-h'
],
stdin
=
subprocess
.
PIPE
,
stdout
=
subprocess
.
PIPE
)
with
proc
,
mock
.
patch
.
object
(
proc
,
'stdin'
)
as
mock_proc_stdin
:
mock_proc_stdin
.
close
.
side_effect
=
BrokenPipeError
# _communicate() should swallow BrokenPipeError from close.
proc
.
communicate
(
timeout
=
999
)
mock_proc_stdin
.
close
.
assert_called_once_with
()
class
RunFuncTestCase
(
BaseTestCase
):
def
run_python
(
self
,
code
,
**
kwargs
):
...
...
@@ -2470,6 +2424,52 @@ class POSIXProcessTestCase(BaseTestCase):
if
not
gc_enabled
:
gc
.
disable
()
def
test_communicate_BrokenPipeError_stdin_close
(
self
):
# By not setting stdout or stderr or a timeout we force the fast path
# that just calls _stdin_write() internally due to our mock.
proc
=
subprocess
.
Popen
([
sys
.
executable
,
'-c'
,
'pass'
])
with
proc
,
mock
.
patch
.
object
(
proc
,
'stdin'
)
as
mock_proc_stdin
:
mock_proc_stdin
.
close
.
side_effect
=
BrokenPipeError
proc
.
communicate
()
# Should swallow BrokenPipeError from close.
mock_proc_stdin
.
close
.
assert_called_with
()
def
test_communicate_BrokenPipeError_stdin_write
(
self
):
# By not setting stdout or stderr or a timeout we force the fast path
# that just calls _stdin_write() internally due to our mock.
proc
=
subprocess
.
Popen
([
sys
.
executable
,
'-c'
,
'pass'
])
with
proc
,
mock
.
patch
.
object
(
proc
,
'stdin'
)
as
mock_proc_stdin
:
mock_proc_stdin
.
write
.
side_effect
=
BrokenPipeError
proc
.
communicate
(
b'stuff'
)
# Should swallow the BrokenPipeError.
mock_proc_stdin
.
write
.
assert_called_once_with
(
b'stuff'
)
mock_proc_stdin
.
close
.
assert_called_once_with
()
def
test_communicate_BrokenPipeError_stdin_flush
(
self
):
# Setting stdin and stdout forces the ._communicate() code path.
# python -h exits faster than python -c pass (but spams stdout).
proc
=
subprocess
.
Popen
([
sys
.
executable
,
'-h'
],
stdin
=
subprocess
.
PIPE
,
stdout
=
subprocess
.
PIPE
)
with
proc
,
mock
.
patch
.
object
(
proc
,
'stdin'
)
as
mock_proc_stdin
,
\
open
(
os
.
devnull
,
'wb'
)
as
dev_null
:
mock_proc_stdin
.
flush
.
side_effect
=
BrokenPipeError
# because _communicate registers a selector using proc.stdin...
mock_proc_stdin
.
fileno
.
return_value
=
dev_null
.
fileno
()
# _communicate() should swallow BrokenPipeError from flush.
proc
.
communicate
(
b'stuff'
)
mock_proc_stdin
.
flush
.
assert_called_once_with
()
def
test_communicate_BrokenPipeError_stdin_close_with_timeout
(
self
):
# Setting stdin and stdout forces the ._communicate() code path.
# python -h exits faster than python -c pass (but spams stdout).
proc
=
subprocess
.
Popen
([
sys
.
executable
,
'-h'
],
stdin
=
subprocess
.
PIPE
,
stdout
=
subprocess
.
PIPE
)
with
proc
,
mock
.
patch
.
object
(
proc
,
'stdin'
)
as
mock_proc_stdin
:
mock_proc_stdin
.
close
.
side_effect
=
BrokenPipeError
# _communicate() should swallow BrokenPipeError from close.
proc
.
communicate
(
timeout
=
999
)
mock_proc_stdin
.
close
.
assert_called_once_with
()
@
unittest
.
skipUnless
(
mswindows
,
"Windows specific tests"
)
class
Win32ProcessTestCase
(
BaseTestCase
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment