skills/ppt-station-skill/tests/test_generate_ppt.sh

56 lines
1.5 KiB
Bash
Raw Normal View History

#!/bin/bash
# 测试 generate_ppt.py - 模板替换生成 PPT
# 注意:此测试需要 aim03.pptx 中存在占位符,并准备对应的 config.json 和 CSV
set -e
PYTHON=$(which python3 || which python)
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJ_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
SCRIPT="$SCRIPT_DIR/../scripts/generate_ppt.py"
PARSE_SCRIPT="$SCRIPT_DIR/../scripts/parse_template.py"
TMPDIR=$(mktemp -d)
trap "rm -rf $TMPDIR" EXIT
echo "=== 测试 generate_ppt.py ==="
# Step 1: 先解析模板看有哪些占位符
echo "Step 1: 解析模板占位符"
PLACEHOLDERS=$($PYTHON "$PARSE_SCRIPT" "$PROJ_DIR/aim/aim03.pptx" 2>/dev/null)
echo "$PLACEHOLDERS" | $PYTHON -c "
import sys, json
d = json.load(sys.stdin)
text = d.get('all_text', [])
chart = d.get('all_chart', [])
print(f' 文本占位符: {text}')
print(f' 图表占位符: {chart}')
" 2>/dev/null
# Step 2: 准备一个最小 config.json仅文本替换不含图表
echo "Step 2: 准备最小配置"
cat > "$TMPDIR/config.json" << 'HEREDOC'
{
"text_data": {},
"chart_configs": {}
}
HEREDOC
# Step 3: 生成 PPT
echo "Step 3: 生成 PPT仅文本替换"
$PYTHON "$SCRIPT" "$PROJ_DIR/aim/aim03.pptx" "$TMPDIR/config.json" "$TMPDIR/output.pptx" 2>/dev/null
if [ ! -f "$TMPDIR/output.pptx" ]; then
echo "FAIL: output.pptx 未生成"
exit 1
fi
SIZE=$(wc -c < "$TMPDIR/output.pptx")
echo " output.pptx 大小: ${SIZE} bytes"
if [ "$SIZE" -lt 1000 ]; then
echo "FAIL: output.pptx 太小"
exit 1
fi
echo "PASS: generate_ppt.py 流程正常"