blob: 7402fc2c74c5dafd296394799fd3d9779c05ed45 [file] [log] [blame]
mod common;
use adevice::adevice::Profiler;
use adevice::cli::RestartChoice;
use adevice::cli::Wait;
use adevice::commands::{AdbAction, AdbCommand};
use adevice::restart_chooser::RestartChooser;
use anyhow::Result;
use common::fakes::FakeDevice;
use std::collections::HashMap;
use std::path::PathBuf;
// Just placeholder for now to show we can call adevice.
fn call_update_with_reboot(wait: Wait) -> Result<FakeDevice> {
// Use real device for device tests.
let device = FakeDevice::new(&HashMap::new());
let mut profiler = Profiler::default();
// Capture adb command?
let restart_chooser = RestartChooser::new(&RestartChoice::Reboot);
let initial_adb_cmds = HashMap::from([(
PathBuf::from("ignore_me"),
AdbCommand::from_action(AdbAction::Mkdir, &PathBuf::from("ignore_me")),
)]);
adevice::device::update(&restart_chooser, &initial_adb_cmds, &mut profiler, &device, wait)?;
Ok(device)
}
#[test]
fn update_has_timeout_commands() -> Result<()> {
// Wait has two parts
// 1) The prep that clear sys.boot_completed.
let device = call_update_with_reboot(Wait::Yes)?;
assert!(
device.raw_cmds().iter().any(|c| c.contains("setprop sys.boot_completed")),
"Did not find setprop cmd, did find\n{:?}",
device.raw_cmds()
);
// 2) A call to device.wait() that calls "adb timeout ..."
// but the FakeDevice mocks this out.
assert_eq!(1, device.wait_calls());
Ok(())
}
#[test]
fn update_nowait_has_no_timeout_commands() -> Result<()> {
let device = call_update_with_reboot(Wait::No)?;
// Wait has two parts
// 1) The prep that clear sys.boot_completed.
assert_eq!(
0,
device.raw_cmds().iter().filter(|c| c.contains("setprop sys.boot_completed")).count(),
"Found timeout cmd, did not expect to\nn{:?}",
device.raw_cmds()
);
// 2) A call to device.wait() that calls "adb timeout ..."
// but the FakeDevice mocks this out.
assert_eq!(0, device.wait_calls());
Ok(())
}