#!/usr/bin/env bash
# ------------------------------------------------------------------------------
# H5-in-App-Integration SDK · Android 单元测试入口
#
# 用法：
#   bash scripts/test-android-kotlin.sh              # 运行全部单元测试
#   bash scripts/test-android-kotlin.sh --help       # 查看本帮助
#
# 测试框架：JUnit 4 + Robolectric
# 测试目录：android-kotlin/webview-container/src/test/
# 结果输出：android-kotlin/webview-container/build/reports/tests/
#
# 设计要点：
# - 使用 Gradle Wrapper（./gradlew），无需全局安装 Gradle
# - 测试在 JVM 上运行（Robolectric 模拟 Android 环境）
# - 无 flavor 区分，单一测试任务
# - JDK 17
# ------------------------------------------------------------------------------
set -euo pipefail

# ---- 路径与常量 --------------------------------------------------------------
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
ANDROID_DIR="${REPO_ROOT}/android-kotlin"
GRADLEW="${ANDROID_DIR}/gradlew"

# ---- 提前处理 --help ---------------------------------------------------------
case "${1:-}" in
  -h|--help)
    sed -n '2,17p' "${BASH_SOURCE[0]}"
    exit 0
    ;;
esac

# ---- 工具链就绪检查 ----------------------------------------------------------
if [[ ! -x "${GRADLEW}" ]]; then
  echo "❌ 找不到 gradlew：${GRADLEW}" >&2
  echo "   请确认 android-kotlin/ 目录下存在可执行的 gradlew 文件。" >&2
  exit 1
fi

# 检查 JAVA_HOME（需要 JDK 17+）
if [[ -z "${JAVA_HOME:-}" ]]; then
  if [[ -x "/usr/libexec/java_home" ]]; then
    export JAVA_HOME="$(/usr/libexec/java_home 2>/dev/null || true)"
  fi
fi

if [[ -z "${JAVA_HOME:-}" ]] || [[ ! -d "${JAVA_HOME}" ]]; then
  echo "⚠️  JAVA_HOME 未设置或无效，Gradle 可能无法正常运行（需要 JDK 17+）。" >&2
fi

# ---- 执行单元测试 ------------------------------------------------------------
echo "ℹ️  Android 项目目录：${ANDROID_DIR}"
echo "ℹ️  Gradle Wrapper：${GRADLEW}"
echo ""

echo "▶ 运行 webview-container 单元测试 ..."
"${GRADLEW}" -p "${ANDROID_DIR}" :webview-container:testDebugUnitTest --no-daemon

echo ""
echo "✅ Android 单元测试完成！"
echo "   报告目录：${ANDROID_DIR}/webview-container/build/reports/tests/"
