新增FIDC运行时风控合同验证
This commit is contained in:
Executable
+61
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
cd "$ROOT_DIR"
|
||||||
|
PYTHON_BIN="${PYTHON_BIN:-python3}"
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
local message="$1"
|
||||||
|
local details="${2:-}"
|
||||||
|
printf '[FAIL] %s\n' "$message" >&2
|
||||||
|
if [[ -n "$details" ]]; then
|
||||||
|
printf '%s\n' "$details" >&2
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
run_core_test() {
|
||||||
|
local filter="$1"
|
||||||
|
local tmp
|
||||||
|
tmp="$(mktemp)"
|
||||||
|
printf '[INFO] cargo test -p fidc-core %s\n' "$filter"
|
||||||
|
if cargo test -p fidc-core "$filter" -- --nocapture 2>&1 | tee "$tmp"; then
|
||||||
|
local passed_count
|
||||||
|
passed_count="$(
|
||||||
|
"$PYTHON_BIN" - "$tmp" <<'PY'
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
count = 0
|
||||||
|
for line in open(sys.argv[1], encoding="utf-8", errors="replace"):
|
||||||
|
match = re.search(r"test result: ok\. (\d+) passed;", line)
|
||||||
|
if match:
|
||||||
|
count += int(match.group(1))
|
||||||
|
print(count)
|
||||||
|
PY
|
||||||
|
)"
|
||||||
|
rm -f "$tmp"
|
||||||
|
if [[ "$passed_count" -le 0 ]]; then
|
||||||
|
fail "cargo test filter matched 0 tests: package=fidc-core filter=${filter}"
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
local output
|
||||||
|
output="$(cat "$tmp")"
|
||||||
|
rm -f "$tmp"
|
||||||
|
fail "cargo test failed: package=fidc-core filter=${filter}" "$output"
|
||||||
|
}
|
||||||
|
|
||||||
|
run_core_test eligible_universe_does_not_require_candidate_risk_state_when_selection_risk_is_disabled
|
||||||
|
run_core_test next_bar_open_eligible_universe_helper_does_not_block_on_decision_day_risk
|
||||||
|
run_core_test platform_next_open_selection_records_risk_diagnostics_without_filtering
|
||||||
|
run_core_test next_open_buy_risk_uses_execution_date_not_signal_date
|
||||||
|
run_core_test next_open_buy_limit_risk_uses_open_not_close
|
||||||
|
run_core_test next_open_sell_risk_uses_execution_date_not_signal_date
|
||||||
|
run_core_test next_open_sell_limit_risk_uses_open_not_close
|
||||||
|
run_core_test next_bar_open_sell_respects_allow_sell_policy_on_execution_day
|
||||||
|
run_core_test volume_limit_uses_floor_for_odd_lot_sell
|
||||||
|
run_core_test configurable_upper_limit_buy_filter_can_be_disabled
|
||||||
|
|
||||||
|
printf '[OK] fidc-backtest-engine runtime risk contracts passed\n'
|
||||||
Reference in New Issue
Block a user