diff options
Diffstat (limited to 'tests/util.rs')
-rw-r--r-- | tests/util.rs | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/tests/util.rs b/tests/util.rs deleted file mode 100644 index b89a3027..00000000 --- a/tests/util.rs +++ /dev/null @@ -1,76 +0,0 @@ -use std::{env, process::Command}; - -use hashbrown::HashMap; - -/// Returns a QEMU runner target given an architecture. -fn get_qemu_target(arch: &str) -> &str { - match arch { - "armv7" => "arm", - "i686" => "i386", - "powerpc" => "ppc", - "powerpc64le" => "ppc64le", - _ => arch, - } -} - -/// This is required since running binary tests via cross can cause be tricky! We need to basically "magically" grab -/// the correct runner in some cases, which can be done by inspecting env variables that should only show up while -/// using cross. -/// -/// Originally inspired by [ripgrep's test files](https://cs.github.com/BurntSushi/ripgrep/blob/9f0e88bcb14e02da1b88872435b17d74786640b5/tests/util.rs#L470), -/// but adapted to work more generally with the architectures supported by bottom after looking through cross' -/// [linux-runner](https://github.com/cross-rs/cross/blob/main/docker/linux-runner) file. -fn cross_runner() -> Option<String> { - const TARGET_RUNNER: &str = "CARGO_TARGET_RUNNER"; - const CROSS_RUNNER: &str = "CROSS_RUNNER"; - - let env_mapping = env::vars_os() - .filter_map(|(k, v)| { - let (k, v) = (k.to_string_lossy(), v.to_string_lossy()); - - if k.starts_with("CARGO_TARGET_") && k.ends_with("_RUNNER") && !v.is_empty() { - Some((TARGET_RUNNER.to_string(), v.to_string())) - } else if k == CROSS_RUNNER && !v.is_empty() { - Some((k.to_string(), v.to_string())) - } else { - None - } - }) - .collect::<HashMap<_, _>>(); - - if let Some(cross_runner) = env_mapping.get(CROSS_RUNNER) { - if cross_runner == "qemu-user" { - env_mapping.get(TARGET_RUNNER).map(|target_runner| { - format!( - "qemu-{}", - get_qemu_target( - target_runner - .split_ascii_whitespace() - .collect::<Vec<_>>() - .last() - .unwrap() - ) - ) - }) - } else { - None - } - } else { - env_mapping.get(TARGET_RUNNER).cloned() - } -} - -/// Returns the [`Command`] of a binary invocation of bottom, alongside -/// any required env variables. -pub fn btm_command() -> Command { - let btm_exe = env!("CARGO_BIN_EXE_btm"); - match cross_runner() { - None => Command::new(btm_exe), - Some(runner) => { - let mut cmd = Command::new(runner); - cmd.env("NO_COLOR", "1"); - cmd.arg(btm_exe); - cmd - } - } -} |