SSH Android SDK capability validation Commit: 390ff71aeaf4dfb827ad1e5bffb173ba8dc06cbc Tree: eac42860b1c7629a57d16333608fc28b97bbeeac vp test run apps/server/src/device/sshDeviceScript.test.ts apps/server/src/device/SshDeviceHost.test.ts apps/server/src/device/DeviceToolchain.test.ts --reporter=verbose Windows results ✓ apps/server/src/device/DeviceToolchain.test.ts > failed installation cleans staging and exposes only a safe failure message 1396ms ✓ apps/server/src/device/sshDeviceScript.test.ts > reports Android on SSH hosts missing Platform-Tools while retaining iOS 2932ms ✓ apps/server/src/device/sshDeviceScript.test.ts > reports Android on SSH hosts missing Android Emulator while retaining iOS 2513ms ✓ apps/server/src/device/DeviceToolchain.test.ts > inventory reports only completed versions without installing the required version 4573ms ✓ apps/server/src/device/DeviceToolchain.test.ts > unreadable inventory stays unknown instead of reporting no installs 63ms ✓ apps/server/src/device/SshDeviceHost.test.ts > preserves installed status after probes and cleans failed agent activation 1989ms ✓ apps/server/src/device/sshDeviceScript.test.ts > reports Android on SSH hosts missing Command-line Tools while retaining iOS 3931ms ✓ apps/server/src/device/sshDeviceScript.test.ts > reports Android on SSH hosts missing nothing while retaining iOS 2272ms ✓ apps/server/src/device/sshDeviceScript.test.ts > resolves the Android SDK from ANDROID_SDK_ROOT when ANDROID_HOME is unset 2425ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a directory platform-tools/adb while retaining iOS 4839ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a non-executable platform-tools/adb while retaining iOS 4025ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a directory emulator/emulator while retaining iOS 2388ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a non-executable emulator/emulator while retaining iOS 1802ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a directory cmdline-tools/latest/bin/avdmanager while retaining iOS 2774ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a non-executable cmdline-tools/latest/bin/avdmanager while retaining iOS 3597ms ✓ apps/server/src/device/sshDeviceScript.test.ts > retains iOS when an SDK tool cannot be inspected 1974ms ✓ apps/server/src/device/sshDeviceScript.test.ts > does not select a Windows SDK default absent from the SSH shell setup 827ms ↓ apps/server/src/device/sshDeviceScript.test.ts > prefers ANDROID_SDK_ROOT over an incomplete default SDK in SSH commands ↓ apps/server/src/device/sshDeviceScript.test.ts > finds Android Studio Java for a non-interactive SSH session ↓ apps/server/src/device/sshDeviceScript.test.ts > preserves shell metacharacters and newlines in remote arguments ↓ apps/server/src/device/sshDeviceScript.test.ts > remote helper lifecycle > reuses its own healthy helpers and stops only its own runtime Test Files 3 passed (3) Tests 17 passed | 4 skipped (21) macOS arm64 results ✓ apps/server/src/device/DeviceToolchain.test.ts > failed installation cleans staging and exposes only a safe failure message 9ms ✓ apps/server/src/device/DeviceToolchain.test.ts > inventory reports only completed versions without installing the required version 8ms ✓ apps/server/src/device/DeviceToolchain.test.ts > unreadable inventory stays unknown instead of reporting no installs 1ms ✓ apps/server/src/device/SshDeviceHost.test.ts > preserves installed status after probes and cleans failed agent activation 29ms ✓ apps/server/src/device/sshDeviceScript.test.ts > reports Android on SSH hosts missing Platform-Tools while retaining iOS 47ms ✓ apps/server/src/device/sshDeviceScript.test.ts > reports Android on SSH hosts missing Android Emulator while retaining iOS 39ms ✓ apps/server/src/device/sshDeviceScript.test.ts > reports Android on SSH hosts missing Command-line Tools while retaining iOS 41ms ✓ apps/server/src/device/sshDeviceScript.test.ts > reports Android on SSH hosts missing nothing while retaining iOS 40ms ✓ apps/server/src/device/sshDeviceScript.test.ts > resolves the Android SDK from ANDROID_SDK_ROOT when ANDROID_HOME is unset 39ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a directory platform-tools/adb while retaining iOS 39ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a non-executable platform-tools/adb while retaining iOS 40ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a directory emulator/emulator while retaining iOS 42ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a non-executable emulator/emulator while retaining iOS 40ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a directory cmdline-tools/latest/bin/avdmanager while retaining iOS 43ms ✓ apps/server/src/device/sshDeviceScript.test.ts > rejects a non-executable cmdline-tools/latest/bin/avdmanager while retaining iOS 46ms ✓ apps/server/src/device/sshDeviceScript.test.ts > retains iOS when an SDK tool cannot be inspected 48ms ✓ apps/server/src/device/sshDeviceScript.test.ts > does not select a Windows SDK default absent from the SSH shell setup 40ms ✓ apps/server/src/device/sshDeviceScript.test.ts > prefers ANDROID_SDK_ROOT over an incomplete default SDK in SSH commands 932ms ✓ apps/server/src/device/sshDeviceScript.test.ts > finds Android Studio Java for a non-interactive SSH session 170ms ✓ apps/server/src/device/sshDeviceScript.test.ts > preserves shell metacharacters and newlines in remote arguments 11ms ✓ apps/server/src/device/sshDeviceScript.test.ts > remote helper lifecycle > reuses its own healthy helpers and stops only its own runtime 6256ms Test Files 3 passed (3) Tests 21 passed (21) Static validation vp lint --report-unused-disable-directives apps/server/src/device/sshDeviceScript.ts apps/server/src/device/sshDeviceScript.test.ts Exit code: 0 vp fmt --check apps/server/src/device/sshDeviceScript.ts apps/server/src/device/sshDeviceScript.test.ts docs/user/devices.md Exit code: 0 vp run --filter t3 typecheck Exit code: 0 git diff --check 13aa882c22d584de5388dfce3b3ca413387ba059 HEAD Exit code: 0 Server typechecking emitted advisory Effect suggestions. Coverage limits The tests use isolated SDK fixtures and stub helper installation. They do not exercise a live SSH host, a real SDK installation or a native application. No client code changed.