#!/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 流程正常"