Files
exe-reverse/pytest.ini
T
root 63b2aca8d8 Fix the budget gate and add CI, lint and coverage guards
- check_budget.py escalated a hard index-row violation to 'warn' on both
  branches, so INDEX_ROW_HARD could never fail anything. It fails now, and
  tests/unit/test_budget_measurement.py pins both thresholds.
- The corpus note counted scripts/__pycache__/*.pyc, so the same commit
  reported 27 scripts after the suite had run and 16 on a clean checkout.
- TOKENS_PER_CHAR is re-derived from a measurement (26,795 chars -> 6,065
  tokens = 4.418); the comment's old figure and its arithmetic were both
  wrong for this file.
- check_repo.py's yaml sentinel carries the type ignore, so mypy is clean
  with PyYAML installed as well as without it.
- The CPUID test now skips with the probe's own note on a host without
  CPUID instead of failing, and pytest.ini points at tests/README.md, which
  exists, instead of an EXTENSION file that never did.

Tooling: .flake8 (a measured 120-column limit), .gitattributes, .gitignore
and .github/workflows/ci.yml (the five gates, the suite on 3.11-3.14 and a
lint job), which is what CONTRIBUTING.md already claimed CI runs. The
pull-request template it refers to now exists.

Content: pitfalls P26-P34 -- the analysis-level failures the catalogue was
missing (sampling read as observation, a self-built parser trusted, a
verification that could not have failed, a shell-mangled command line) --
registered in the symptom index and its routing mirror. FINDINGS F11-F15
record the defects above.

Tests: the coverage guard derives its subject from scripts/ rather than a
hand-written list, pe_triage.py and pe_diff.py gain their first tests, and
plan.py / preflight.py are declared uncovered with reasons.
2026-10-24 14:55:02 +08:00

30 lines
1.2 KiB
INI

[pytest]
# Regression harness for the exe-reverse skill.
#
# What lives here: executable checks that can run on a bare checkout with only
# the standard library plus pytest. No debugger attach, no driver, no network,
# no live target process.
# What does *not* live here: anything that needs a running Windows target or a
# kernel-mode component. Those routes stay in tests/benchmark.md as recorded
# experiments, and what the suite deliberately does not cover is stated in
# tests/README.md (`## What it deliberately does not do`).
#
# If pytest is not installed:
# python -m pip install pytest
# or run `python tests/run_tests.py`, which prints the same instruction and
# exits 3 (environment-capability failure, per the repository exit-code policy).
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
markers =
unit: pure-function and parser assertions against real scripts; zero external deps
cli: subprocess contract tests over script flags, exit codes and --json output
integration: no-debugger flows (argv construction, dump/log parsing, patch planners)
# A mis-typed marker or an unknown ini key is a harness bug, not a warning.
addopts = -ra --strict-markers --strict-config