selftests: net: set the exit code correctly in Python tests
Test cases need to exit with non-zero status if they failed, we currently don't do that: # KTAP version 1 # 1..3 # # At /root/ksft-net-drv/drivers/net/./ping.py line 18: # # Check failed 1 != 2 # not ok 1 ping.test_v4 # ok 2 ping.test_v6 # ok 3 ping.test_tcp # # Totals: pass:2 fail:1 xfail:0 xpass:0 skip:0 error:0 ok 1 selftests: drivers/net: ping.py ^^^^ It's a bit tempting to make the exit part of ksft_run(), but that only works well for very trivial setups. We can revisit this later, if people forget to call ksft_exit(). Link: https://lore.kernel.org/r/20240417231146.2435572-3-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
from lib.py import ksft_run, ksft_in, ksft_true, KsftSkipEx, KsftXfailEx
|
||||
from lib.py import ksft_run, ksft_exit
|
||||
from lib.py import ksft_in, ksft_true, KsftSkipEx, KsftXfailEx
|
||||
from lib.py import EthtoolFamily, NetdevFamily, RtnlFamily, NlError
|
||||
from lib.py import NetDrvEnv
|
||||
|
||||
@@ -80,6 +81,7 @@ def main() -> None:
|
||||
with NetDrvEnv(__file__) as cfg:
|
||||
ksft_run([check_pause, check_fec, pkt_byte_sum],
|
||||
args=(cfg, ))
|
||||
ksft_exit()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
|
||||
import builtins
|
||||
import inspect
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
from .consts import KSFT_MAIN_NAME
|
||||
|
||||
KSFT_RESULT = None
|
||||
KSFT_RESULT_ALL = True
|
||||
|
||||
|
||||
class KsftSkipEx(Exception):
|
||||
@@ -63,6 +65,9 @@ def ksft_busy_wait(cond, sleep=0.005, deadline=1, comment=""):
|
||||
|
||||
|
||||
def ktap_result(ok, cnt=1, case="", comment=""):
|
||||
global KSFT_RESULT_ALL
|
||||
KSFT_RESULT_ALL = KSFT_RESULT_ALL and ok
|
||||
|
||||
res = ""
|
||||
if not ok:
|
||||
res += "not "
|
||||
@@ -114,3 +119,8 @@ def ksft_run(cases, args=()):
|
||||
print(
|
||||
f"# Totals: pass:{totals['pass']} fail:{totals['fail']} xfail:{totals['xfail']} xpass:0 skip:{totals['skip']} error:0"
|
||||
)
|
||||
|
||||
|
||||
def ksft_exit():
|
||||
global KSFT_RESULT_ALL
|
||||
sys.exit(0 if KSFT_RESULT_ALL else 1)
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
import time
|
||||
from lib.py import ksft_run, ksft_pr, ksft_eq, ksft_ge, ksft_busy_wait
|
||||
from lib.py import ksft_run, ksft_exit, ksft_pr
|
||||
from lib.py import ksft_eq, ksft_ge, ksft_busy_wait
|
||||
from lib.py import NetdevFamily, NetdevSimDev, ip
|
||||
|
||||
|
||||
@@ -90,6 +91,7 @@ def main() -> None:
|
||||
nf = NetdevFamily()
|
||||
ksft_run([empty_check, lo_check, page_pool_check],
|
||||
args=(nf, ))
|
||||
ksft_exit()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user