Skip to content

Commit 4064c3b

Browse files
committed
test: add windows
1 parent 2a2caa4 commit 4064c3b

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed

crates/libs/kill_tree/src/core.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ pub(crate) trait KillableBuildable {
9898
fn new_killable(&self, config: &Config) -> Result<impl Killable>;
9999
}
100100

101+
#[derive(Debug)]
101102
pub(crate) enum KillOutput {
102103
Killed {
103104
process_id: ProcessId,

crates/libs/kill_tree/src/windows.rs

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,99 @@ pub(crate) mod tokio {
187187
}
188188
}
189189
}
190+
191+
#[cfg(test)]
192+
mod tests {
193+
use super::*;
194+
195+
#[test]
196+
fn validate_process_id_system_idle_process() {
197+
let process_id = SYSTEM_IDLE_PROCESS_PROCESS_ID;
198+
let result = validate_process_id(process_id);
199+
assert!(result.is_err());
200+
assert_eq!(
201+
format!("{}", result.unwrap_err()),
202+
format!(
203+
"Invalid process id: {process_id}. Reason: Not allowed to kill System Idle Process",
204+
process_id = process_id
205+
)
206+
);
207+
}
208+
209+
#[test]
210+
fn validate_process_id_system() {
211+
let process_id = SYSTEM_PROCESS_ID;
212+
let result = validate_process_id(process_id);
213+
assert!(result.is_err());
214+
assert_eq!(
215+
format!("{}", result.unwrap_err()),
216+
format!(
217+
"Invalid process id: {process_id}. Reason: Not allowed to kill System",
218+
process_id = process_id
219+
)
220+
);
221+
}
222+
223+
#[test]
224+
fn validate_process_id_other() {
225+
let process_id = 1;
226+
let result = validate_process_id(process_id);
227+
assert!(result.is_ok());
228+
}
229+
230+
#[test]
231+
fn validate_process_id_available_max() {
232+
let process_id = AVAILABLE_MAX_PROCESS_ID;
233+
let result = validate_process_id(process_id);
234+
assert!(result.is_ok());
235+
}
236+
237+
#[test]
238+
fn child_process_id_map_filter_same() {
239+
let process_info = ProcessInfo {
240+
process_id: 1,
241+
parent_process_id: 1,
242+
name: "1".to_string(),
243+
};
244+
assert_eq!(child_process_id_map_filter(&process_info), true);
245+
}
246+
247+
#[test]
248+
fn child_process_id_map_filter_not_same() {
249+
let process_info = ProcessInfo {
250+
process_id: 1,
251+
parent_process_id: 0,
252+
name: "1".to_string(),
253+
};
254+
assert_eq!(child_process_id_map_filter(&process_info), false);
255+
}
256+
257+
#[test]
258+
fn kill_available_max_process_id() {
259+
let target_process_id = AVAILABLE_MAX_PROCESS_ID;
260+
let result = kill(target_process_id);
261+
assert!(result.is_ok());
262+
let result = result.unwrap();
263+
match result {
264+
KillOutput::MaybeAlreadyTerminated { process_id, source } => {
265+
assert_eq!(target_process_id, process_id);
266+
match source {
267+
crate::Error::Windows(e) => {
268+
assert_eq!(e.code(), E_INVALIDARG);
269+
assert_eq!(e.message(), "The parameter is incorrect.");
270+
}
271+
_ => panic!("Unexpected source: {source:?}",),
272+
}
273+
}
274+
_ => panic!("Unexpected result: {result:?}",),
275+
}
276+
}
277+
278+
#[test]
279+
fn get_process_infos_test() {
280+
let result = get_process_infos();
281+
assert!(result.is_ok());
282+
let process_infos = result.unwrap();
283+
assert!(process_infos.len() > 2);
284+
}
285+
}

0 commit comments

Comments
 (0)