evaluatePendingUpdate static method

  1. @visibleForTesting
Future<bool> evaluatePendingUpdate({
  1. required Future<bool> oldFileExists(),
  2. required Future<WindowsServiceStatus> queryStatus(),
})

待生效 helper 更新的判定逻辑:<helper>.old 存在(App 更新时重命名降级 的产物,运行中服务仍挂在旧文件上)且服务当前 running。

组合逻辑拆为静态纯函数(oldFileExists / queryStatus 为注入的异步输入), 公共入口 hasPendingHelperUpdate 组装真实依赖——ProfileStorage 目录与 status CLI 子进程在单测环境均不可用。

Implementation

@visibleForTesting
static Future<bool> evaluatePendingUpdate({
  required Future<bool> Function() oldFileExists,
  required Future<WindowsServiceStatus> Function() queryStatus,
}) async {
  // 短路:绝大多数场景无待生效更新,不启动 status CLI 子进程
  if (!await oldFileExists()) return false;
  return await queryStatus() == WindowsServiceStatus.running;
}