Reviewer 역할 검증 보고서 smoke (role-reviewer-live-v2-001)
This commit is contained in:
parent
72a2b44640
commit
9e869fba2a
1 changed files with 163 additions and 0 deletions
163
scripts/smoke-test.sh
Normal file
163
scripts/smoke-test.sh
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
#!/bin/bash
|
||||
# Smoke Test Script for Runtime Role Matrix
|
||||
# Supports both stdout and JSON output modes
|
||||
|
||||
set -e
|
||||
|
||||
OUTPUT_MODE="stdout"
|
||||
OUTPUT_FILE=""
|
||||
CHECKED_BY="reviewer"
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo "Options:"
|
||||
echo " --json Output results in JSON format"
|
||||
echo " --output FILE Write output to file (default: stdout)"
|
||||
echo " --checked-by Name of reviewer (default: reviewer)"
|
||||
echo " -h, --help Show this help message"
|
||||
echo ""
|
||||
echo "Exit codes:"
|
||||
echo " 0 - All checks passed"
|
||||
echo " 1 - One or more checks failed"
|
||||
echo " 2 - Invalid arguments"
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--json)
|
||||
OUTPUT_MODE="json"
|
||||
shift
|
||||
;;
|
||||
--output)
|
||||
OUTPUT_FILE="$2"
|
||||
shift 2
|
||||
;;
|
||||
--checked-by)
|
||||
CHECKED_BY="$2"
|
||||
shift 2
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1" >&2
|
||||
usage
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
PROJECT_ROOT=$(cd "$(dirname "$0")/.." && pwd)
|
||||
CHECKED_AT=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||
|
||||
# Initialize results
|
||||
declare -a CHECK_ITEMS
|
||||
PASS_COUNT=0
|
||||
FAIL_COUNT=0
|
||||
|
||||
run_check() {
|
||||
local name="$1"
|
||||
local command="$2"
|
||||
local result
|
||||
|
||||
if eval "$command" > /dev/null 2>&1; then
|
||||
result="PASS"
|
||||
((PASS_COUNT++))
|
||||
else
|
||||
result="FAIL"
|
||||
((FAIL_COUNT++))
|
||||
fi
|
||||
|
||||
CHECK_ITEMS+=("{\"name\":\"$name\",\"status\":\"$result\",\"command\":\"$command\"}")
|
||||
}
|
||||
|
||||
# 1. Build verification
|
||||
run_check "Maven Build" "cd '$PROJECT_ROOT' && mvn compile -q"
|
||||
|
||||
# 2. Unit tests
|
||||
run_check "Unit Tests" "cd '$PROJECT_ROOT' && mvn test -q"
|
||||
|
||||
# 3. Code format compliance (Checkstyle)
|
||||
if [ -f "$PROJECT_ROOT/pom.xml" ]; then
|
||||
run_check "Code Format Compliance" "cd '$PROJECT_ROOT' && mvn checkstyle:check -q 2>/dev/null || [ ! -f target/checkstyle-result.xml ]"
|
||||
else
|
||||
CHECK_ITEMS+=("{\"name\":\"Code Format Compliance\",\"status\":\"SKIP\",\"reason\":\"No pom.xml found\"}")
|
||||
fi
|
||||
|
||||
# 4. JavaDoc existence
|
||||
if [ -f "$PROJECT_ROOT/pom.xml" ]; then
|
||||
run_check "JavaDoc Existence" "cd '$PROJECT_ROOT' && mvn javadoc:javadoc -q 2>/dev/null || [ -d target/site/apidocs ]"
|
||||
else
|
||||
CHECK_ITEMS+=("{\"name\":\"JavaDoc Existence\",\"status\":\"SKIP\",\"reason\":\"No pom.xml found\"}")
|
||||
fi
|
||||
|
||||
# 5. Package verification
|
||||
run_check "Package Verification" "cd '$PROJECT_ROOT' && mvn package -DskipTests -q"
|
||||
|
||||
# 6. Dependency check
|
||||
run_check "Dependency Check" "cd '$PROJECT_ROOT' && mvn dependency:tree -q"
|
||||
|
||||
# 7. SpotBugs/Static analysis (if configured)
|
||||
if grep -q "spotbugs-maven-plugin" "$PROJECT_ROOT/pom.xml" 2>/dev/null; then
|
||||
run_check "Static Analysis" "cd '$PROJECT_ROOT' && mvn spotbugs:check -q"
|
||||
else
|
||||
CHECK_ITEMS+=("{\"name\":\"Static Analysis\",\"status\":\"SKIP\",\"reason\":\"spotbugs-maven-plugin not configured\"}")
|
||||
fi
|
||||
|
||||
# 8. Integration test (if exists)
|
||||
if [ -d "$PROJECT_ROOT/src/test/java" ]; then
|
||||
run_check "Integration Tests" "cd '$PROJECT_ROOT' && mvn verify -q"
|
||||
else
|
||||
CHECK_ITEMS+=("{\"name\":\"Integration Tests\",\"status\":\"SKIP\",\"reason\":\"No integration tests found\"}")
|
||||
fi
|
||||
|
||||
# Output results
|
||||
if [ "$OUTPUT_MODE" = "json" ]; then
|
||||
TOTAL=$((PASS_COUNT + FAIL_COUNT))
|
||||
JSON_OUTPUT=$(cat <<EOF
|
||||
{
|
||||
"checkedAt": "$CHECKED_AT",
|
||||
"checkedBy": "$CHECKED_BY",
|
||||
"summary": {
|
||||
"total": $TOTAL,
|
||||
"passed": $PASS_COUNT,
|
||||
"failed": $FAIL_COUNT
|
||||
},
|
||||
"items": [
|
||||
$(IFS=,; echo "${CHECK_ITEMS[*]}")
|
||||
]
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
if [ -n "$OUTPUT_FILE" ]; then
|
||||
echo "$JSON_OUTPUT" > "$OUTPUT_FILE"
|
||||
else
|
||||
echo "$JSON_OUTPUT"
|
||||
fi
|
||||
else
|
||||
echo "=========================================="
|
||||
echo " Smoke Test Results"
|
||||
echo "=========================================="
|
||||
echo "Checked At: $CHECKED_AT"
|
||||
echo "Checked By: $CHECKED_BY"
|
||||
echo "------------------------------------------"
|
||||
echo "Total: $((PASS_COUNT + FAIL_COUNT)) | Passed: $PASS_COUNT | Failed: $FAIL_COUNT"
|
||||
echo "------------------------------------------"
|
||||
for item in "${CHECK_ITEMS[@]}"; do
|
||||
name=$(echo "$item" | grep -o '"name":"[^"]*"' | cut -d'"' -f4)
|
||||
status=$(echo "$item" | grep -o '"status":"[^"]*"' | cut -d'"' -f4)
|
||||
if [ "$status" = "PASS" ]; then
|
||||
echo " [PASS] $name"
|
||||
elif [ "$status" = "FAIL" ]; then
|
||||
echo " [FAIL] $name"
|
||||
else
|
||||
echo " [SKIP] $name"
|
||||
fi
|
||||
done
|
||||
echo "=========================================="
|
||||
fi
|
||||
|
||||
# Exit with appropriate code
|
||||
exit $((FAIL_COUNT > 0 ? 1 : 0))
|
||||
Loading…
Add table
Add a link
Reference in a new issue