hurui200320
|
317d015260
|
test(e2e): validate M4 acceptance criteria for v3.3.0 milestone closure
Strengthen M4 E2E CLI acceptance tests and address all review findings
from the self-review on PR #681 (3 blocking, 7 non-blocking issues).
Blocking fixes:
- Remove tautological domain assertions from cli_plan_execute() that
verified values the test itself constructed via _mock_parent_plan and
could never fail. Replace with a comment documenting that subplan
info cannot be verified from CLI output alone.
- Fix unguarded positional arg access in plan_diff() that would raise
IndexError if the production CLI passes plan_id as a keyword argument.
Now uses kwargs-with-positional-fallback pattern.
- Split the 1074-line helper_m4_e2e_verification.py into four focused
modules under the CONTRIBUTING.md 500-line limit:
helper_m4_e2e_common.py (237 lines) — constants, helpers, factories
helper_m4_e2e_domain.py (495 lines) — domain model tests
helper_m4_e2e_cli.py (426 lines) — CLI integration tests
helper_m4_e2e_verification.py (81 lines) — thin dispatcher
Non-blocking improvements:
- Add ProjectLink isinstance type guard before iterating project_links.
- Wrap all assert_called_once*() calls in try/except with _fail()
pattern to produce standardised FAIL: diagnostics instead of raw
AssertionError.
- Make project_links extraction symmetric with action_name (kwargs +
positional fallback at index 1).
- Replace broad "execute" substring match with word-boundary regex
r"\bexecute\b" to avoid false positives from incidental substrings.
- Extract _make_subplan_status() factory, _assert_exit_code() and
_assert_mock_called_once*() wrappers to eliminate DRY violations
(SubplanStatus construction repeated 3x, exit-code checks 4x).
- Replace non-deterministic datetime.now() calls with frozen constant
_FROZEN_NOW = datetime(2026, 3, 1, 12, 0, 0) for deterministic
fixtures.
- Rename generic _DECISION_ULID_N constants to descriptive names
(_DECISION_PROMPT_DEF, _DECISION_STRATEGY, _DECISION_PARALLEL_SPAWN,
_DECISION_SPAWN_API, _DECISION_SPAWN_UI).
Quality gates:
- lint: PASS
- format: PASS (1404 files unchanged)
- typecheck: PASS (0 errors)
- unit_tests: 10,431 scenarios, 0 failures
- integration_tests: 1,452 tests, 0 failures
- coverage_report: PASS (98%, threshold 97%)
- security_scan: PASS
- dead_code: PASS
- docs: PASS
- build: PASS
ISSUES CLOSED: #495
|
2026-03-13 14:03:37 +08:00 |
|