Files
Jyotisha/skills/jyotish-full-reading-integration/templates/test_commands.sh
T
732642856 3314f244f2 feat: 新增两个 Hermes Skills
- jyotish-engine-modules: 5个核心排盘引擎模块完整代码
  - karaka_calculator.py (Karaka分配计算器,支持BPHS/JH兼容模式)
  - special_lagnas.py (特殊上升点计算)
  - vimsopaka_calculator.py (Vimsopaka Bala分盘力量)
  - avastha_calculator.py (Avasthas行星状态)
  - divisional_charts_extended.py (D2-D60完整分盘)

- jyotish-full-reading-integration: v4.4.0集成方案
  - 21步调用链完整流程
  - 5个新模块插入点详解
  - JH兼容模式使用指南
  - 集成检查清单
  - 自动化测试脚本
  - v4.4.0 CHANGELOG

版本:v4.4.0
调用链:16步 → 21步
新增:special_lagnas/vimsopaka/varga_extended/karaka_jh/avasthas
2026-05-03 20:50:05 +08:00

126 lines
3.9 KiB
Bash

#!/bin/bash
# jyotish_engine.py v4.4.0 测试脚本
set -e # 遇到错误立即退出
echo "========================================="
echo "jyotish_engine.py v4.4.0 集成测试"
echo "========================================="
echo ""
# 颜色定义
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 测试计数器
PASSED=0
FAILED=0
# 测试函数
test_module() {
local module_name=$1
local test_command=$2
echo -e "${YELLOW}测试 ${module_name}...${NC}"
if eval "$test_command" > /dev/null 2>&1; then
echo -e "${GREEN}✓ ${module_name} 测试通过${NC}"
((PASSED++))
else
echo -e "${RED}✗ ${module_name} 测试失败${NC}"
((FAILED++))
fi
echo ""
}
# 1. 检查依赖
echo "1. 检查依赖..."
test_module "swisseph" "python3 -c 'import swisseph'"
test_module "numpy" "python3 -c 'import numpy'"
# 2. 检查模块文件存在
echo "2. 检查模块文件..."
test_module "karaka_calculator.py" "test -f scripts/karaka_calculator.py"
test_module "special_lagnas.py" "test -f scripts/special_lagnas.py"
test_module "vimsopaka_calculator.py" "test -f scripts/vimsopaka_calculator.py"
test_module "avastha_calculator.py" "test -f scripts/avastha_calculator.py"
test_module "divisional_charts_extended.py" "test -f scripts/divisional_charts_extended.py"
# 3. 单元测试(如果模块支持 --test 参数)
echo "3. 单元测试..."
test_module "special_lagnas 单元测试" "python3 scripts/special_lagnas.py --asc 45.5 --sun 120.3 --moon 200.1"
test_module "karaka_calculator 单元测试" "python3 scripts/karaka_calculator.py --mode jh --planets 'Sun:45.5,Moon:120.3,Mars:200.1,Mercury:50.8,Jupiter:180.5,Venus:90.2,Saturn:250.7,Rahu:150.4'"
# 4. 集成测试(完整调用链)
echo "4. 集成测试(完整调用链)..."
# 测试数据
BIRTH_DATE="1990-01-01"
BIRTH_TIME="12:00:00"
LATITUDE="28.6139"
LONGITUDE="77.2090"
TIMEZONE="Asia/Kolkata"
# 运行 full-reading
echo -e "${YELLOW}运行 full-reading...${NC}"
OUTPUT=$(python3 scripts/jyotish_engine.py \
--mode full-reading \
--birth-date "$BIRTH_DATE" \
--birth-time "$BIRTH_TIME" \
--latitude "$LATITUDE" \
--longitude "$LONGITUDE" \
--timezone "$TIMEZONE" 2>&1)
# 检查输出是否包含关键字段
echo "5. 验证输出结构..."
test_module "version 字段" "echo '$OUTPUT' | grep -q '4.4.0-full-reading'"
test_module "special_lagnas 模块" "echo '$OUTPUT' | grep -q 'special_lagnas'"
test_module "vimsopaka 模块" "echo '$OUTPUT' | grep -q 'vimsopaka'"
test_module "varga_extended 模块" "echo '$OUTPUT' | grep -q 'varga_extended'"
test_module "chara_karaka_jh 模块" "echo '$OUTPUT' | grep -q 'chara_karaka_jh'"
test_module "avasthas 模块" "echo '$OUTPUT' | grep -q 'avasthas'"
# 6. JH 兼容模式验证
echo "6. JH 兼容模式验证..."
test_module "Rahu 在 MK 位置" "echo '$OUTPUT' | grep -q 'MK.*Rahu'"
# 7. 性能测试
echo "7. 性能测试..."
echo -e "${YELLOW}测量执行时间...${NC}"
START_TIME=$(date +%s)
python3 scripts/jyotish_engine.py \
--mode full-reading \
--birth-date "$BIRTH_DATE" \
--birth-time "$BIRTH_TIME" \
--latitude "$LATITUDE" \
--longitude "$LONGITUDE" \
--timezone "$TIMEZONE" > /dev/null 2>&1
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
echo -e "${GREEN}执行时间: ${DURATION} 秒${NC}"
if [ $DURATION -lt 10 ]; then
echo -e "${GREEN}✓ 性能测试通过(< 10秒)${NC}"
((PASSED++))
else
echo -e "${YELLOW}⚠ 性能测试警告(>= 10秒)${NC}"
fi
echo ""
# 8. 输出测试结果
echo "========================================="
echo "测试结果汇总"
echo "========================================="
echo -e "${GREEN}通过: $PASSED${NC}"
echo -e "${RED}失败: $FAILED${NC}"
echo ""
if [ $FAILED -eq 0 ]; then
echo -e "${GREEN}✓ 所有测试通过!${NC}"
exit 0
else
echo -e "${RED}✗ 有 $FAILED 个测试失败${NC}"
exit 1
fi