Skip to content

Commit d77b55a

Browse files
committed
test: add common
1 parent 4689d1c commit d77b55a

File tree

1 file changed

+153
-0
lines changed

1 file changed

+153
-0
lines changed

crates/libs/kill_tree/src/common.rs

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,156 @@ pub(crate) fn kill_tree_internal(
151151
}
152152
Ok(outputs)
153153
}
154+
155+
#[cfg(test)]
156+
mod tests {
157+
use super::*;
158+
159+
#[cfg(windows)]
160+
#[test]
161+
fn available_max_process_id_windows() {
162+
assert_eq!(get_available_max_process_id(), 0xFFFF_FFFF);
163+
}
164+
165+
#[cfg(target_os = "linux")]
166+
#[test]
167+
fn available_max_process_id_linux() {
168+
assert_eq!(get_available_max_process_id(), 0x0040_0000);
169+
}
170+
171+
#[cfg(target_os = "macos")]
172+
#[test]
173+
fn available_max_process_id_macos() {
174+
assert_eq!(get_available_max_process_id(), 99998);
175+
}
176+
177+
#[test]
178+
fn get_child_process_id_map_no_filter() {
179+
let process_infos = vec![
180+
ProcessInfo {
181+
process_id: 1,
182+
parent_process_id: 0,
183+
name: "1".to_string(),
184+
},
185+
ProcessInfo {
186+
process_id: 2,
187+
parent_process_id: 1,
188+
name: "2".to_string(),
189+
},
190+
ProcessInfo {
191+
process_id: 3,
192+
parent_process_id: 1,
193+
name: "3".to_string(),
194+
},
195+
];
196+
let filter = |_: &ProcessInfo| false;
197+
let map = get_child_process_id_map(&process_infos, filter);
198+
assert_eq!(map.len(), 2);
199+
}
200+
201+
#[test]
202+
fn get_child_process_id_map_filter_process_id_and_parant_process_id_is_same() {
203+
let process_infos = vec![
204+
ProcessInfo {
205+
process_id: 1,
206+
parent_process_id: 1,
207+
name: "1".to_string(),
208+
},
209+
ProcessInfo {
210+
process_id: 2,
211+
parent_process_id: 1,
212+
name: "2".to_string(),
213+
},
214+
ProcessInfo {
215+
process_id: 3,
216+
parent_process_id: 1,
217+
name: "3".to_string(),
218+
},
219+
];
220+
let filter =
221+
|process_info: &ProcessInfo| process_info.process_id == process_info.parent_process_id;
222+
let map = get_child_process_id_map(&process_infos, filter);
223+
assert_eq!(map.len(), 1);
224+
}
225+
226+
#[test]
227+
fn get_process_info_map_test() {
228+
let process_infos = vec![
229+
ProcessInfo {
230+
process_id: 1,
231+
parent_process_id: 0,
232+
name: "1".to_string(),
233+
},
234+
ProcessInfo {
235+
process_id: 2,
236+
parent_process_id: 1,
237+
name: "2".to_string(),
238+
},
239+
ProcessInfo {
240+
process_id: 3,
241+
parent_process_id: 1,
242+
name: "3".to_string(),
243+
},
244+
];
245+
let map = get_process_info_map(process_infos);
246+
assert_eq!(map.len(), 3);
247+
}
248+
249+
#[test]
250+
fn get_process_ids_to_kill_test() {
251+
let process_infos = vec![
252+
ProcessInfo {
253+
process_id: 1,
254+
parent_process_id: 0,
255+
name: "1".to_string(),
256+
},
257+
ProcessInfo {
258+
process_id: 2,
259+
parent_process_id: 1,
260+
name: "2".to_string(),
261+
},
262+
ProcessInfo {
263+
process_id: 3,
264+
parent_process_id: 1,
265+
name: "3".to_string(),
266+
},
267+
];
268+
let child_process_id_map =
269+
get_child_process_id_map(&process_infos, |_: &ProcessInfo| false);
270+
let config = Config::default();
271+
let process_ids_to_kill = get_process_ids_to_kill(1, &child_process_id_map, &config);
272+
assert_eq!(process_ids_to_kill, vec![1, 2, 3]);
273+
}
274+
275+
#[test]
276+
fn parse_kill_output_test() {
277+
let mut process_info_map = ProcessInfoMap::new();
278+
process_info_map.insert(
279+
1,
280+
ProcessInfo {
281+
process_id: 1,
282+
parent_process_id: 0,
283+
name: "1".to_string(),
284+
},
285+
);
286+
let kill_output = KillOutput::Killed { process_id: 1 };
287+
let output = parse_kill_output(kill_output, &mut process_info_map).expect("output is None");
288+
match output {
289+
Output::Killed {
290+
process_id,
291+
parent_process_id,
292+
name,
293+
} => {
294+
assert_eq!(process_id, 1);
295+
assert_eq!(parent_process_id, 0);
296+
assert_eq!(name, "1");
297+
}
298+
Output::MaybeAlreadyTerminated {
299+
process_id: _process_id,
300+
source: _source,
301+
} => {
302+
panic!("output is MaybeAlreadyTerminated");
303+
}
304+
}
305+
}
306+
}

0 commit comments

Comments
 (0)