Is there a cleaner way to find a binary executable from an integration test other than looking at current_exe() and finding it from there? Cargo itself uses this logic:
|
pub fn cargo_dir() -> PathBuf { |
|
env::var_os("CARGO_BIN_PATH") |
|
.map(PathBuf::from) |
|
.or_else(|| { |
|
env::current_exe().ok().map(|mut path| { |
|
path.pop(); |
|
if path.ends_with("deps") { |
|
path.pop(); |
|
} |
|
path |
|
}) |
|
}) |
|
.unwrap_or_else(|| panic!("CARGO_BIN_PATH wasn't set. Cannot continue running test")) |
|
} |
|
|
|
pub fn cargo_exe() -> PathBuf { |
|
cargo_dir().join(format!("cargo{}", env::consts::EXE_SUFFIX)) |
|
} |
I've seen others use Command::new("./target/debug/NAME") which can fail in some cases.
It seems like this should be easier. Am I missing a better way? If not, would it make sense to provide some method to more easily find binaries?
Is there a cleaner way to find a binary executable from an integration test other than looking at
current_exe()and finding it from there? Cargo itself uses this logic:cargo/tests/testsuite/cargotest/support/mod.rs
Lines 392 to 409 in 8482505
I've seen others use
Command::new("./target/debug/NAME")which can fail in some cases.It seems like this should be easier. Am I missing a better way? If not, would it make sense to provide some method to more easily find binaries?