forked from ethanchewy/PythonBuddy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_runsubprocess.py
More file actions
41 lines (36 loc) · 1.34 KB
/
test_runsubprocess.py
File metadata and controls
41 lines (36 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import py, os
from rpython.tool.runsubprocess import run_subprocess
def test_no_such_command():
py.test.raises(EnvironmentError, run_subprocess,
'this_command_does_not_exist', [])
py.test.raises(EnvironmentError, run_subprocess,
'this_command_does_not_exist', [])
def test_echo():
if not os.path.exists('/bin/echo'):
py.test.skip("there is no /bin/echo")
returncode, stdout, stderr = run_subprocess('/bin/echo', 'FooBar')
assert returncode == 0
assert stdout == 'FooBar\n'
assert stderr == ''
def test_false():
if not os.path.exists('/bin/false'):
py.test.skip("there is no /bin/false")
returncode, stdout, stderr = run_subprocess('/bin/false', [])
assert returncode == 1
assert stdout == ''
assert stderr == ''
def test_cat_fail():
if not os.path.exists('/bin/cat'):
py.test.skip("there is no /bin/cat")
returncode, stdout, stderr = run_subprocess('/bin/cat', 'no/such/filename')
assert returncode == 1
assert stdout == ''
assert 'no/such/filename' in stderr
def test_recover_lost_process():
if not hasattr(os, 'fork'):
py.test.skip("there is no os.fork()")
from rpython.tool import runsubprocess
import signal
os.kill(runsubprocess._child.pid, signal.SIGTERM)
runsubprocess._child.wait()
test_echo()