feat: config-driven multi-scenario + gcda accumulation fix + gcov merge fix

Config-driven architecture:
- coverage_dates: YAML-driven date replacement for LEAVE_RECORDS
- row_overrides: per-scenario field overrides (e.g. STATUS='9')
- delete_all_rows: per-scenario table emptying for empty-cursor tests

gcda accumulation fix (V3 bug #7):
- Delete .gcda before each scenario run to prevent GnuCOBOL accumulation
- Force-copy scenario gcda (skip mtime check)
- Copy scenario DB to CWD data/kin.db for CONNECT TO path resolution

Multi-run gcov merge fix:
- Always merge multi-run gcov data regardless of generate_coverage flag
- Fix v3_root UnboundLocalError in cleanup path

Other fixes:
- _make_key_unique: skip WHERE-constrained columns to avoid PK conflict
- incremental_supplement: support fields_dict for base record generation
- check_coverage: use structure coverage data if available
- orchestrator.py: filter _-prefixed fields in TestCase; merge Agent2Data cases
This commit is contained in:
hangshuo652
2026-07-18 08:42:55 +08:00
parent 327ede372f
commit 0203ead96b
7 changed files with 186 additions and 21 deletions
+3 -1
View File
@@ -434,12 +434,14 @@ def build_db_input(
if sc not in [c['name'] for c in col_infos]:
col_infos.append({'name': sc, 'db_type': 'CHAR', 'size': 20})
where_cols = set()
for col_info in col_infos:
col_name = col_info['name']
val = None
for wc in where_cons:
if wc['type'] == 'literal' and wc.get('col', '').upper() == col_name:
val = wc.get('literal', '')
where_cols.add(col_name)
break
if wc['type'] == 'host_var':
hv = wc.get('host_var', '').upper()
@@ -473,7 +475,7 @@ def build_db_input(
if col_infos:
first_col = col_infos[0]['name']
if first_col in row:
if first_col in row and (not where_cols or first_col not in where_cols):
row[first_col] = _make_key_unique(row[first_col], path_idx, seen_keys[table])
db_input[table].append(row)