fix(cli): always persist white report before black-box run; handle empty --black-box=

This commit is contained in:
2026-09-13 15:16:30 +08:00
parent 81df33e84e
commit 6d126ef6ab
2 changed files with 26 additions and 24 deletions
+18 -24
View File
@@ -1421,7 +1421,8 @@ def _extract_black_box_args(args: list) -> tuple[bool, str | None]:
continue continue
if a.startswith('--black-box='): if a.startswith('--black-box='):
do_black_box = True do_black_box = True
black_box_arg = a.split('=', 1)[1] val = a.split('=', 1)[1]
black_box_arg = val or None
args.pop(i) args.pop(i)
continue continue
i += 1 i += 1
@@ -1910,7 +1911,7 @@ def main():
multi_write_fds=multi_write_fds, multi_write_fds=multi_write_fds,
skip_records=skip_records, skip_records=skip_records,
skip_term_types=skip_term_types, skip_term_types=skip_term_types,
write_report=not do_black_box, write_report=True,
) )
passed = sum(1 for r in group_results if r.passed) passed = sum(1 for r in group_results if r.passed)
@@ -1929,31 +1930,24 @@ def main():
bb_groups = load_black_box_groups(bb_dir, fd_fields, select_info, fields_dict) bb_groups = load_black_box_groups(bb_dir, fd_fields, select_info, fields_dict)
if not bb_groups: if not bb_groups:
logger.warning(f" --black-box: 未在 {bb_dir} 找到可用黑盒数据,跳过") logger.warning(f" --black-box: 未在 {bb_dir} 找到可用黑盒数据,跳过")
if white_java_reports:
try:
_write_java_test_report(str(prog_outdir), filepath.stem,
list(group_results),
list(white_java_reports))
except Exception as e: # noqa: BLE001
logger.warning(f" 测试报告生成失败: {e}")
else: else:
_bb_temp = temp_dir or str(prog_outdir / '.gcov_cache') try:
bb_results, bb_java_reports = run_external_groups( _bb_temp = temp_dir or str(prog_outdir / '.gcov_cache')
filepath.stem, str(prog_outdir), _bb_temp, bb_results, bb_java_reports = run_external_groups(
fields_dict, fd_fields, select_info, open_dir, filepath.stem, str(prog_outdir), _bb_temp,
roles, field_to_fd, bb_groups, fields_dict, fd_fields, select_info, open_dir,
source_dir=str(filepath.parent), roles, field_to_fd, bb_groups,
data_fields=fields_dict, source_dir=str(filepath.parent),
multi_write_fds=multi_write_fds, data_fields=fields_dict,
) multi_write_fds=multi_write_fds,
all_results = list(group_results) + list(bb_results) )
all_reports = list(white_java_reports) + list(bb_java_reports) all_results = list(group_results) + list(bb_results)
if all_reports: all_reports = list(white_java_reports) + list(bb_java_reports)
try: if all_reports:
_write_java_test_report(str(prog_outdir), filepath.stem, _write_java_test_report(str(prog_outdir), filepath.stem,
all_results, all_reports) all_results, all_reports)
except Exception as e: # noqa: BLE001 except Exception as e: # noqa: BLE001
logger.warning(f" 测试报告生成失败: {e}") logger.warning(f" 黑盒运行/比对失败,保留白盒报告: {e}")
if do_run and proc_div and _HAVE_RUNNER: if do_run and proc_div and _HAVE_RUNNER:
run_and_compare( run_and_compare(
+8
View File
@@ -64,3 +64,11 @@ def test_no_black_box_resets_arg():
assert do is False assert do is False
assert arg is None assert arg is None
assert args == ["src.cbl"] assert args == ["src.cbl"]
def test_black_box_equals_empty_value():
args = ["--black-box=", "src.cbl"]
do, arg = _extract_black_box_args(args)
assert do is True
assert arg is None
assert args == ["src.cbl"]