in aziotd/src/main.rs [221:296]
fn process_name_from_args() {
// Success test cases
let mut test_cases = vec![
(&["aziot-certd"][..], super::ProcessName::Certd),
(&["aziot-identityd"][..], super::ProcessName::Identityd),
(&["aziot-keyd"][..], super::ProcessName::Keyd),
(&["aziot-tpmd"][..], super::ProcessName::Tpmd),
(
&["/usr/libexec/aziot/aziot-certd"][..],
super::ProcessName::Certd,
),
(
&["/usr/libexec/aziot/aziot-identityd"][..],
super::ProcessName::Identityd,
),
(
&["/usr/libexec/aziot/aziot-keyd"][..],
super::ProcessName::Keyd,
),
(
&["/usr/libexec/aziot/aziot-tpmd"][..],
super::ProcessName::Tpmd,
),
];
// argv[1] fallback is only in release builds.
if cfg!(debug_assertions) {
test_cases.extend_from_slice(&[
(&["aziotd", "aziot-certd"][..], super::ProcessName::Certd),
(
&["aziotd", "aziot-identityd"][..],
super::ProcessName::Identityd,
),
(&["aziotd", "aziot-keyd"][..], super::ProcessName::Keyd),
(
&["/usr/libexec/aziot/aziotd", "aziot-certd"][..],
super::ProcessName::Certd,
),
(
&["/usr/libexec/aziot/aziotd", "aziot-identityd"][..],
super::ProcessName::Identityd,
),
(
&["/usr/libexec/aziot/aziotd", "aziot-keyd"][..],
super::ProcessName::Keyd,
),
(
&["/usr/libexec/aziot/aziotd", "aziot-tpmd"][..],
super::ProcessName::Tpmd,
),
]);
}
for (input, expected) in test_cases {
let mut input = input.iter().copied().map(std::ffi::OsStr::new);
let actual = super::process_name_from_args(&mut input).unwrap();
assert_eq!(None, input.next());
assert_eq!(expected, actual);
}
// Failure test cases
for &input in &[
// Unrecognized process name in argv[0]
&["foo"][..],
&["/usr/libexec/aziot/foo"][..],
&["/usr/libexec/aziot/foo", "aziot-certd"][..],
// Either fails because it's a release build so argv[1] fallback is disabled,
// or fails because it's a debug build where argv[1] fallback is enabled
// but the process name in argv[1] is unrecognized anyway.
&["aziotd", "foo"][..],
&["/usr/libexec/aziot/aziotd", "foo"][..],
] {
let mut input = input.iter().copied().map(std::ffi::OsStr::new);
let _ = super::process_name_from_args(&mut input).unwrap_err();
}
}