summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorhathach <[email protected]>2025-07-08 16:39:12 +0700
committerhathach <[email protected]>2025-07-08 16:39:12 +0700
commit0c197a2eae3e7443e115809b3d2d58cf74cc92c5 (patch)
tree7ac6dd0ebab661c4d74f0d33ce4d63f851c71478 /test
parentea64300a9ad57fbdcafbed189b3d358bf9b6912e (diff)
try to skip passed board in hil test when re-run
Diffstat (limited to 'test')
-rwxr-xr-xtest/hil/hil_test.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/test/hil/hil_test.py b/test/hil/hil_test.py
index f292bca15..5646d9a26 100755
--- a/test/hil/hil_test.py
+++ b/test/hil/hil_test.py
@@ -606,7 +606,7 @@ def test_board(board):
# flash board_test last to disable board's usb
test_example(board, flags_on_list[0], 'device/board_test')
- return err_count
+ return name, err_count
def main():
@@ -620,11 +620,13 @@ def main():
parser = argparse.ArgumentParser()
parser.add_argument('config_file', help='Configuration JSON file')
parser.add_argument('-b', '--board', action='append', default=[], help='Boards to test, all if not specified')
+ parser.add_argument('-s', '--skip', action='append', default=[], help='Skip boards from test')
parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output')
args = parser.parse_args()
config_file = args.config_file
boards = args.board
+ skip_boards = args.skip
verbose = args.verbose
# if config file is not found, try to find it in the same directory as this script
@@ -634,12 +636,22 @@ def main():
config = json.load(f)
if len(boards) == 0:
- config_boards = config['boards']
+ config_boards = [e for e in config['boards'] if e['name'] not in skip_boards]
else:
config_boards = [e for e in config['boards'] if e['name'] in boards]
+ err_count = 0
with Pool(processes=os.cpu_count()) as pool:
- err_count = sum(pool.map(test_board, config_boards))
+ mret = pool.map(test_board, config_boards)
+ err_count = sum(e[1] for e in mret)
+ # generate skip list for next re-run if failed
+ skip_fname = f'{config_file}.skip'
+ if err_count > 0:
+ skip_boards += [name for name, err in mret if err == 0]
+ with open(skip_fname, 'w') as f:
+ f.write(' '.join(f'-s {i}' for i in skip_boards))
+ elif os.path.exists(skip_fname):
+ os.remove(skip_fname)
duration = time.time() - duration
print()