mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
selftests: net: py: check process exit code in bkg() and background cmd()
We're a bit too loose with error checking for background processes. cmd() completely ignores the fail argument passed to the constructor if background is True. Default to checking for errors if process is not terminated explicitly. Caller can override with True / False. For bkg() the processing step is called magically by __exit__ so record the value passed in the constructor. Reported-by: Willem de Bruijn <willemb@google.com> Tested-by: Willem de Bruijn <willemb@google.com> Link: https://lore.kernel.org/r/20240502025325.1924923-1-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
1c8f43f477
commit
e1bb5e65de
@ -26,6 +26,9 @@ class cmd:
|
||||
self.process(terminate=False, fail=fail)
|
||||
|
||||
def process(self, terminate=True, fail=None):
|
||||
if fail is None:
|
||||
fail = not terminate
|
||||
|
||||
if terminate:
|
||||
self.proc.terminate()
|
||||
stdout, stderr = self.proc.communicate(timeout=5)
|
||||
@ -43,17 +46,18 @@ class cmd:
|
||||
|
||||
|
||||
class bkg(cmd):
|
||||
def __init__(self, comm, shell=True, fail=True, ns=None, host=None,
|
||||
def __init__(self, comm, shell=True, fail=None, ns=None, host=None,
|
||||
exit_wait=False):
|
||||
super().__init__(comm, background=True,
|
||||
shell=shell, fail=fail, ns=ns, host=host)
|
||||
self.terminate = not exit_wait
|
||||
self.check_fail = fail
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, ex_type, ex_value, ex_tb):
|
||||
return self.process(terminate=self.terminate)
|
||||
return self.process(terminate=self.terminate, fail=self.check_fail)
|
||||
|
||||
|
||||
def tool(name, args, json=None, ns=None, host=None):
|
||||
|
Loading…
Reference in New Issue
Block a user