Skip to content

Commit a65e97d

Browse files
authored
test: add unit tests for pet-global-virtualenvs crate (Fixes #389) (#445)
Add 6 new unit tests to pet-global-virtualenvs (10 total, up from 4): - get_global_virtualenv_dirs: all None returns empty, nonexistent work_on_home skipped, nonexistent xdg skipped - list_global_virtual_envs_paths: all None returns empty, nonexistent virtual_env skipped, empty dirs produce no envs Fixes #389
1 parent e9e15dc commit a65e97d

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

  • crates/pet-global-virtualenvs/src

crates/pet-global-virtualenvs/src/lib.rs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,4 +234,73 @@ mod tests {
234234

235235
fs::remove_dir_all(root).unwrap();
236236
}
237+
238+
#[test]
239+
fn global_virtualenv_dirs_returns_empty_when_all_none() {
240+
let dirs = get_global_virtualenv_dirs(None, None, None);
241+
assert!(dirs.is_empty());
242+
}
243+
244+
#[test]
245+
fn global_virtualenv_dirs_skips_nonexistent_work_on_home() {
246+
let root = create_test_dir("skip-work-on");
247+
let nonexistent = root.join("does-not-exist");
248+
249+
let dirs =
250+
get_global_virtualenv_dirs(Some(nonexistent.to_string_lossy().to_string()), None, None);
251+
assert!(dirs.is_empty());
252+
253+
fs::remove_dir_all(root).unwrap();
254+
}
255+
256+
#[test]
257+
fn global_virtualenv_dirs_skips_nonexistent_xdg_virtualenvs() {
258+
let root = create_test_dir("skip-xdg");
259+
let xdg = root.join("xdg-missing");
260+
261+
let dirs = get_global_virtualenv_dirs(None, Some(xdg.to_string_lossy().to_string()), None);
262+
assert!(dirs.is_empty());
263+
264+
fs::remove_dir_all(root).unwrap();
265+
}
266+
267+
#[test]
268+
fn list_global_virtual_envs_all_none_returns_empty() {
269+
let paths = list_global_virtual_envs_paths(None, None, None, None);
270+
assert!(paths.is_empty());
271+
}
272+
273+
#[test]
274+
fn list_global_virtual_envs_virtual_env_var_nonexistent_is_skipped() {
275+
let root = create_test_dir("skip-virtual-env");
276+
let nonexistent = root.join("nonexistent-venv");
277+
278+
let paths = list_global_virtual_envs_paths(
279+
Some(nonexistent.to_string_lossy().to_string()),
280+
None,
281+
None,
282+
None,
283+
);
284+
assert!(paths.is_empty());
285+
286+
fs::remove_dir_all(root).unwrap();
287+
}
288+
289+
#[test]
290+
fn list_global_virtual_envs_skips_empty_dirs() {
291+
let root = create_test_dir("empty-dirs");
292+
let work_on_home = root.join("workon");
293+
fs::create_dir_all(&work_on_home).unwrap();
294+
295+
// workon dir exists but has no children
296+
let paths = list_global_virtual_envs_paths(
297+
None,
298+
Some(work_on_home.to_string_lossy().to_string()),
299+
None,
300+
None,
301+
);
302+
assert!(paths.is_empty());
303+
304+
fs::remove_dir_all(root).unwrap();
305+
}
237306
}

0 commit comments

Comments
 (0)