#!/usr/bin/env bash # skyworth_empty_test.sh - 创维 videoList 空候选测试 # 投递 videoList 为空串的广播,验证 Adapter firstNonEmpty() 后走 dropped 分支 # # 可选参数(通过环境变量控制,均为可选): # SKYWORTH_SKIP_COMPONENT=1 省略 -n 参数(不显式指定 Receiver 组件) # SKYWORTH_SKIP_SENDER=1 省略 -p 参数(不指定 sender 包名,Adapter 内部用白名单默认值兜底) # # 用法: skyworth_empty_test.sh [mode] # mode: empty 只投一个空串候选(默认) # multi 投 [空串, 真实片名],验证跳过空候选取首个非空 set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" # shellcheck disable=SC1091 source "${SCRIPT_DIR}/lib/common.sh" require_adb check_skyworth_adapter_exists MODE="${1:-empty}" # 组装 -n 和 -p(按开关可选,与 send_skyworth_broadcast 保持一致) n_arg="" p_arg="" if [ -z "${SKYWORTH_SKIP_COMPONENT}" ]; then n_arg="-n '${SKYWORTH_RECEIVER_COMPONENT}' " fi if [ -z "${SKYWORTH_SKIP_SENDER}" ]; then p_arg="-p '${DEFAULT_SKYWORTH_SENDER}' " fi print_header "创维 videoList 空候选测试(mode=${MODE})" if [ "${MODE}" = "multi" ]; then # JSON 数组多个候选,模拟创维识别返回多个结果且首个为空 log_info "投递 [\"\", \"镖人\"],预期跳过空候选、取 \"镖人\" 走正常链路" ${ADB} shell "am broadcast \ -a '${ACTION_SKYWORTH_VOD}' \ ${n_arg}${p_arg}--es videoList '[\"\", \"镖人\"]' \ --include-stopped-packages" 2>&1 | sed 's/^/ [adb] /' log_ok "预期进入 VideoDetailActivity 或 SearchActivity" else log_info "投递 [\"\"],预期 Adapter 判定 videoList empty 走 dropped" ${ADB} shell "am broadcast \ -a '${ACTION_SKYWORTH_VOD}' \ ${n_arg}${p_arg}--es videoList '[\"\"]' \ --include-stopped-packages" 2>&1 | sed 's/^/ [adb] /' log_ok "预期被丢弃,无任何页面跳转(logcat: dropped skyworth videoList empty)" fi log_warn "验证方法:adb logcat -v threadtime VoiceCommand:V '*:S' 过滤 dropped 日志"