mod common;
#[test]
fn test_run() {
let env = common::TestEnv::new();
env.assert_success_and_get_output(None, &[]);
}
#[test]
#[cfg(target_os = "macos")]
fn test_run_force_libusb() {
let env = common::TestEnv::new();
env.assert_success_and_get_output(None, &["--force-libusb"]);
}
#[test]
fn test_list() {
let env = common::TestEnv::new();
let mut comp_sp = common::sp_data_from_libusb_linux();
comp_sp.into_flattened();
let devices = comp_sp.flattened_devices();
let comp = serde_json::to_string_pretty(&devices).unwrap();
env.assert_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json"],
&comp,
false,
);
}
#[test]
fn test_list_filtering() {
let env = common::TestEnv::new();
let mut comp_sp = common::sp_data_from_libusb_linux();
let filter = cyme::profiler::Filter {
name: Some("Black Magic".into()),
no_exclude_root_hub: true,
..Default::default()
};
comp_sp.into_flattened();
let mut devices = comp_sp.flattened_devices();
filter.retain_flattened_devices_ref(&mut devices);
let comp = serde_json::to_string_pretty(&devices).unwrap();
env.assert_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--filter-name", "Black Magic"],
&comp,
false,
);
env.assert_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--vidpid", "1d50"],
&comp,
false,
);
env.assert_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--vidpid", "1d50:6018"],
&comp,
false,
);
env.assert_failure(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--vidpid", "1d50:unhappy"],
);
env.assert_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--filter-serial", "97B6A11D"],
&comp,
false,
);
let mut comp_sp = common::sp_data_from_libusb_linux();
let mut filter = cyme::profiler::Filter {
bus: Some(2),
no_exclude_root_hub: true,
..Default::default()
};
comp_sp.into_flattened();
let mut devices = comp_sp.flattened_devices();
filter.retain_flattened_devices_ref(&mut devices);
let comp = serde_json::to_string_pretty(&devices).unwrap();
env.assert_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--show", "2:"],
&comp,
false,
);
env.assert_failure(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--show", "f"],
);
filter.number = Some(23);
filter.retain_flattened_devices_ref(&mut devices);
let comp = serde_json::to_string_pretty(&devices).unwrap();
env.assert_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--show", "2:23"],
&comp,
false,
);
env.assert_failure(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--show", "blah"],
);
}
#[test]
#[cfg(not(target_os = "windows"))]
fn test_tree() {
let env = common::TestEnv::new();
let comp = common::read_dump_to_string(common::CYME_LIBUSB_LINUX_TREE_DUMP);
env.assert_output_json(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--tree"],
&comp,
);
}
#[test]
fn test_tree_filtering() {
let env = common::TestEnv::new();
let mut comp_sp = common::sp_data_from_libusb_linux();
let filter = cyme::profiler::Filter {
name: Some("Black Magic".into()),
..Default::default()
};
filter.retain_buses(&mut comp_sp.buses);
let comp = serde_json::to_string_pretty(&comp_sp).unwrap();
env.assert_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--json", "--tree", "--vidpid", "1d50"],
&comp,
false,
);
}
#[test]
fn test_device_filter() {
let env = common::TestEnv::new();
env.assert_success_and_get_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--device", "/dev/bus/usb/001/001"],
);
env.assert_success_and_get_output(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--device", "/dev/bus/usb/001/002"],
);
env.assert_failure(
Some(common::CYME_LIBUSB_LINUX_TREE_DUMP),
&["--device", "/dev/bus/usb/001/010"],
);
}