|
""" test boxing functionality |
""" |
|
import py, sys, os |
|
if sys.platform == 'win32': |
py.test.skip("rsession is unsupported on Windows.") |
|
from py.__.test.rsession.box import Box |
from py.__.test.rsession.testing import example2 |
|
def setup_module(mod): |
tmpdir = py.test.ensuretemp("boxtests") |
mod.config = py.test.config._reparse([tmpdir]) |
|
def test_basic_boxing(): |
|
|
|
b = Box(example2.boxf1, config=config) |
b.run() |
assert b.stdoutrepr == "some out\n" |
assert b.stderrrepr == "some err\n" |
assert b.exitstat == 0 |
assert b.signal == 0 |
assert b.retval == 1 |
|
def test_boxing_on_fds(): |
b = Box(example2.boxf2, config=config) |
b.run() |
assert b.stdoutrepr == "someout" |
assert b.stderrrepr == "someerr" |
assert b.exitstat == 0 |
assert b.signal == 0 |
assert b.retval == 2 |
|
def test_boxing_signal(): |
b = Box(example2.boxseg, config=config) |
b.run() |
assert b.retval is None |
if py.std.sys.version_info < (2,4): |
py.test.skip("signal detection does not work with python prior 2.4") |
assert b.signal == 11 |
|
def test_boxing_huge_data(): |
b = Box(example2.boxhuge, config=config) |
b.run() |
assert b.stdoutrepr |
assert b.exitstat == 0 |
assert b.signal == 0 |
assert b.retval == 3 |
|
def test_box_seq(): |
|
for i in xrange(100): |
b = Box(example2.boxhuge, config=config) |
b.run() |
assert b.stdoutrepr |
assert b.exitstat == 0 |
assert b.signal == 0 |
assert b.retval == 3 |
|
def test_box_in_a_box(): |
def boxfun(): |
b = Box(example2.boxf2, config=config) |
b.run() |
print b.stdoutrepr |
print >>sys.stderr, b.stderrrepr |
return b.retval |
|
b = Box(boxfun, config=config) |
b.run() |
assert b.stdoutrepr == "someout\n" |
assert b.stderrrepr == "someerr\n" |
assert b.exitstat == 0 |
assert b.signal == 0 |
assert b.retval == 2 |
|
def test_box_killer(): |
class A: |
pass |
info = A() |
import time |
|
def box_fun(): |
time.sleep(10) |
|
b = Box(box_fun, config=config) |
par, pid = b.run(continuation=True) |
os.kill(pid, 15) |
par(pid) |
if py.std.sys.version_info < (2,4): |
py.test.skip("signal detection does not work with python prior 2.4") |
assert b.signal == 15 |
|