Allow timeout on test cases

Certain commands are likely to fail to terminate in case something goes
wrong. Having the ability to force such commands to terminate after a
certain time is useful.
This commit is contained in:
Håkan Thörngren 2016-10-13 11:20:32 -07:00
parent 5075c7b38b
commit d8121b1d5e

View File

@ -407,7 +407,7 @@ class TestCase:
with open(tgt_file, "w", encoding=tgt_encoding) as f:
f.write(data)
def cmd(self, cmdline):
def cmd(self, cmdline, timeout=None):
tmpdir = self.__tmpdir
before = tmpdir.snapshot()
stdout_log = tmpdir.stdout_log()
@ -417,7 +417,7 @@ class TestCase:
print("### cmdline:", cmdline)
with open(stdout_log, "w") as stdout, open(stderr_log, "w") as stderr:
if cmdline:
err = subprocess.call(cmdline, stdout=stdout, stderr=stderr, shell=True)
err = subprocess.call(cmdline, stdout=stdout, stderr=stderr, shell=True, timeout=timeout)
else:
err = 0
after = tmpdir.snapshot()