mirror of
https://github.com/mandiant/capa.git
synced 2026-03-12 13:13:12 -07:00
* rules: handle empty or invalid YAML documents in Rule.from_yaml Empty or whitespace-only .yml files caused a cryptic TypeError in Rule.from_dict (NoneType not subscriptable) when yaml.load returned None. This made lint.py abort with a stack trace instead of a clear message. Add an early guard in Rule.from_yaml that raises InvalidRule with a descriptive message when the parsed document is None or structurally invalid. get_rules() now logs a warning and skips such files so that scripts/lint.py completes cleanly even when placeholder .yml files exist in the rules/ or rules/nursery/ directories. Fixes #2900. * changelog: add entry for #2900 empty YAML handling * rules: fix exception check and add get_rules skip test - Use e.args[0] instead of str(e) to check the error message. InvalidRule.__str__ prepends "invalid rule: " so str(e) never matched the bare message, causing every InvalidRule to be re-raised. - Add test_get_rules_skips_empty_yaml to cover the get_rules skip path, confirming that an empty file is warned-and-skipped while a valid sibling rule is still loaded. * fix: correct isort import ordering in tests/test_rules.py Move capa.engine import before capa.rules.cache to satisfy isort --length-sort ordering.