blob: 8798203dc2446a80afa4a0081a68d3709c455988 [file]
#!/bin/bash
# 持续集成中的Builder覆盖检查脚本
# 这个脚本应该在CI/CD流水线中运行,确保Builder覆盖的完整性
set -e
echo "🔍 检查Builder方法覆盖的完整性..."
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$SCRIPT_DIR"
# 比较SessionPool.constructNewSession()方法在父类和子类中的实现是否一致
echo "🔍 比较SessionPool.constructNewSession()方法在父类和子类中的实现是否一致..."
# 父类方法文件路径
PARENT_CLASS_FILE="$PROJECT_ROOT/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java"
# 子类方法文件路径
CHILD_CLASS_FILE="$PROJECT_ROOT/timecho-session/src/main/java/com/timecho/iotdb/session/pool/SessionPool.java"
# 临时文件,用于存储提取的方法内容
PARENT_METHOD_CONTENT="/tmp/parent_method_content.txt"
CHILD_METHOD_CONTENT="/tmp/child_method_content.txt"
# 提取父类的constructNewSession方法内容
sed -n '/protected ISession constructNewSession()/,/^ }/p' "$PARENT_CLASS_FILE" > "$PARENT_METHOD_CONTENT"
# 提取子类的constructNewSession方法内容
sed -n '/protected ISession constructNewSession()/,/^ }/p' "$CHILD_CLASS_FILE" > "$CHILD_METHOD_CONTENT"
# 比较两个方法内容,忽略空白字符的差异
if diff -wB "$PARENT_METHOD_CONTENT" "$CHILD_METHOD_CONTENT" > /dev/null; then
echo "✅ SessionPool.constructNewSession() 方法在子类和父类中的实现一致"
else
echo "❌ SessionPool.constructNewSession() 方法在子类和父类中的实现不一致"
echo "请确保子类中的方法实现与父类完全相同"
# 输出差异以便查看
diff -wB "$PARENT_METHOD_CONTENT" "$CHILD_METHOD_CONTENT"
# 清理临时文件
rm -f "$PARENT_METHOD_CONTENT" "$CHILD_METHOD_CONTENT"
exit 1
fi
# 清理临时文件
rm -f "$PARENT_METHOD_CONTENT" "$CHILD_METHOD_CONTENT"