Merge branch release/21.7.6 of zentao/zentaopms (#11469)
This commit is contained in:
@@ -4,23 +4,58 @@
|
||||
# 作者: Auto-generated script
|
||||
# 日期: $(date +%Y-%m-%d)
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
echo "Usage: $0 <csv_file_name> [-c]"
|
||||
echo_usage() {
|
||||
echo "Usage: $0 [-c] [-s START_LINE] <csv_file_name>"
|
||||
echo "This script generates unit test scripts based on the provided CSV file."
|
||||
echo " -c Continue processing on error (default is to break)."
|
||||
echo " -s START_LINE Start processing from line START_LINE. Default is 2 (the first line is header)."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 检查参数数量
|
||||
if [ "$#" -eq 0 ]; then
|
||||
echo_usage
|
||||
fi
|
||||
|
||||
# 检查是否提供了 CSV 文件名
|
||||
if [ -z "$1" ]; then
|
||||
echo_usage
|
||||
fi
|
||||
|
||||
# 错误处理策略
|
||||
ON_ERROR_STRATEGY="break" # 默认为 break
|
||||
|
||||
while getopts ":c" opt; do
|
||||
case ${opt} in
|
||||
c )
|
||||
ON_ERROR_STRATEGY="continue"
|
||||
;;
|
||||
esac
|
||||
# 默认从第2行开始(跳过标题行)
|
||||
START_LINE=2
|
||||
|
||||
# 解析命令行选项
|
||||
while getopts ":cs:" opt; do # 注意 's:' 表示 s 选项需要一个参数
|
||||
case ${opt} in
|
||||
c )
|
||||
ON_ERROR_STRATEGY="continue"
|
||||
;;
|
||||
s )
|
||||
# 验证 START_LINE 是否为正整数
|
||||
if ! [[ "$OPTARG" =~ ^[0-9]+$ ]] || [ "$OPTARG" -lt 1 ]; then
|
||||
echo "Invalid start line: '$OPTARG'. Must be a positive integer."
|
||||
exit 1
|
||||
fi
|
||||
START_LINE="$OPTARG"
|
||||
;;
|
||||
\? )
|
||||
echo "Invalid Option: -$OPTARG" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
: )
|
||||
echo "Invalid Option: -$OPTARG requires an argument" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# 移除已处理的选项和参数
|
||||
shift $((OPTIND -1))
|
||||
|
||||
# 设置变量
|
||||
BASE_PATH=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/../..")
|
||||
GUIDE_FILE="$BASE_PATH/.claude/rules/zentao-unit-test-guide.md"
|
||||
@@ -54,7 +89,7 @@ check_prerequisites() {
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] 前置条件检查完成" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
# 调用 claude 生成测试脚本
|
||||
# 调用Claude生成测试脚本
|
||||
claude_generate_test() {
|
||||
local claude_command="$1"
|
||||
local test_file_path="$2"
|
||||
@@ -73,10 +108,10 @@ claude_generate_test() {
|
||||
|
||||
# 执行Claude命令并捕获输出
|
||||
local claude_output
|
||||
if claude_output=$($claude_command); then
|
||||
if claude_output=$($claude_command < /dev/null 2>&1); then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [SUCCESS] Claude命令执行成功" | tee -a "$LOG_FILE"
|
||||
|
||||
# 将Claude输出保存到测试文件
|
||||
# 记录测试文件已生成到日志
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] 测试文件已生成: $test_file_path" | tee -a "$LOG_FILE"
|
||||
|
||||
# 记录详细的Claude输出到日志
|
||||
@@ -139,6 +174,7 @@ process_method() {
|
||||
# 调用Claude生成测试脚本
|
||||
claude_generate_test "$claude_command" "$test_file_path"
|
||||
|
||||
# 返回Claude生成测试脚本的结果
|
||||
return $?
|
||||
}
|
||||
|
||||
@@ -152,16 +188,24 @@ main() {
|
||||
# 读取CSV文件(跳过第一行标题)
|
||||
local line_count=$(wc -l < "$CSV_FILE")
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] CSV文件总行数: $line_count (包含标题行)" | tee -a "$LOG_FILE"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] 从第 $START_LINE 行开始处理 (跳过前面的数据行和标题行)." | tee -a "$LOG_FILE"
|
||||
|
||||
# 使用while循环读取CSV文件
|
||||
while IFS=',' read -r module class method || [ -n "$module" ]; do
|
||||
((CURRENT_LINE++))
|
||||
|
||||
# 跳过第一行标题
|
||||
# 跳过标题行
|
||||
if [ $CURRENT_LINE -eq 1 ]; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] 跳过标题行" | tee -a "$LOG_FILE"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 跳过指定行数之前的数据行和标题行
|
||||
if [ $CURRENT_LINE -lt $START_LINE ]; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] 跳过第 $CURRENT_LINE 行 (在起始行 $START_LINE 之前)." | tee -a "$LOG_FILE"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 清理字段中的回车符和空白字符
|
||||
module=$(echo "$module" | tr -d '\r\n' | xargs)
|
||||
class=$(echo "$class" | tr -d '\r\n' | xargs)
|
||||
@@ -194,9 +238,6 @@ main() {
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') [PROGRESS] 已处理 $TOTAL_PROCESSED 个方法" | tee -a "$LOG_FILE"
|
||||
fi
|
||||
|
||||
# 避免频繁调用Claude,添加短暂延迟
|
||||
sleep 1
|
||||
|
||||
done < "$CSV_FILE"
|
||||
|
||||
# 输出统计信息
|
||||
|
||||
Reference in New Issue
Block a user