]> Piment Noir Git Repositories - freqai-strategies.git/commit
test(quickadapter): cover the strategy business logic and gate coverage at 67% (...
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 1 Oct 2026 11:00:08 +0000 (13:00 +0200)
committerGitHub <noreply@github.com>
Thu, 1 Oct 2026 11:00:08 +0000 (13:00 +0200)
commit94d406c4b6e6a0f0ba5ab8330e3d43259fccde64
tree0c928137cda10f4d4cb6722f949bcd95a7493e8c
parent949a2f0171bbd25582ba4c12a1881fa6c88130ed
test(quickadapter): cover the strategy business logic and gate coverage at 67% (#279)

Adds a unit-test suite for the QuickAdapter strategy covering the testable business logic of all five source modules, and an absolute coverage gate enforced in CI.

Branch coverage of quickadapter/user_data goes from 23.9% to 69.2% under the shipped configuration, with an enforced floor of 67%. The before column is main's single test file run against the same config, so both share one denominator; without include_namespace_packages the unexecuted trees vanish from the report entirely and the gate measures only what happened to be imported.

Layout is one file per business concern over a shared qa_support helper. The suite contract derives every production module name from the tree and refuses a second import identity for a strategies module, because a dotted import would shadow the bare one production uses and carry its own copy of the module globals.

Each file was checked against injected mutants of its own source; an independent adversarial review found four survivors the per-commit notes had mislabelled as equivalent or dead, all now covered and verified in both directions.
34 files changed:
.github/workflows/quality.yml
README.md
openspec/config.yaml
quickadapter/.coveragerc [new file with mode: 0644]
quickadapter/.devcontainer/requirements-dev.txt
quickadapter/tests/qa_support.py [new file with mode: 0644]
quickadapter/tests/test_coverage_floor.py [new file with mode: 0644]
quickadapter/tests/test_enum_errors.py [new file with mode: 0644]
quickadapter/tests/test_label_transformer.py [new file with mode: 0644]
quickadapter/tests/test_prediction_history.py
quickadapter/tests/test_regressor_data_split.py [new file with mode: 0644]
quickadapter/tests/test_regressor_label_config.py [new file with mode: 0644]
quickadapter/tests/test_regressor_optuna_study.py [new file with mode: 0644]
quickadapter/tests/test_regressor_prediction_dedup.py [new file with mode: 0644]
quickadapter/tests/test_regressor_prediction_history.py [new file with mode: 0644]
quickadapter/tests/test_regressor_selection.py [new file with mode: 0644]
quickadapter/tests/test_regressor_weight_support.py [new file with mode: 0644]
quickadapter/tests/test_strategy_features.py [new file with mode: 0644]
quickadapter/tests/test_strategy_pure.py [new file with mode: 0644]
quickadapter/tests/test_strategy_reversal.py [new file with mode: 0644]
quickadapter/tests/test_strategy_sizing.py [new file with mode: 0644]
quickadapter/tests/test_strategy_targets.py [new file with mode: 0644]
quickadapter/tests/test_suite_contract.py [new file with mode: 0644]
quickadapter/tests/test_utils_canonical_defaults.py [new file with mode: 0644]
quickadapter/tests/test_utils_config_migration.py [new file with mode: 0644]
quickadapter/tests/test_utils_config_resolution.py [new file with mode: 0644]
quickadapter/tests/test_utils_formatting.py [new file with mode: 0644]
quickadapter/tests/test_utils_indicators.py [new file with mode: 0644]
quickadapter/tests/test_utils_label_weights.py [new file with mode: 0644]
quickadapter/tests/test_utils_numeric_safety.py [new file with mode: 0644]
quickadapter/tests/test_utils_regressor_plumbing.py [new file with mode: 0644]
quickadapter/tests/test_utils_step_math.py [new file with mode: 0644]
quickadapter/tests/test_utils_validation_algebra.py [new file with mode: 0644]
quickadapter/tests/test_utils_zigzag.py [new file with mode: 0644]