diff options
Diffstat (limited to 'src/tests/extensions.rs')
-rw-r--r-- | src/tests/extensions.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/tests/extensions.rs b/src/tests/extensions.rs index a295949..d546e8a 100644 --- a/src/tests/extensions.rs +++ b/src/tests/extensions.rs @@ -9,6 +9,36 @@ use std::fs; use super::*; #[test] +fn no_extensions_to_discover() -> anyhow::Result<()> { + let exts = crate::commands::discover_extensions(&ffi::OsString::new())?; + assert!(exts.is_empty(), "{:?}", exts); + Ok(()) +} + +#[test] +fn extension_discovery() -> anyhow::Result<()> { + let dir1 = tempfile::tempdir()?; + let dir2 = tempfile::tempdir()?; + + { + let ext1_path = dir1.path().join("nitrocli-ext1"); + let ext2_path = dir1.path().join("nitrocli-ext2"); + let ext3_path = dir2.path().join("nitrocli-super-1337-extensions111one"); + let _ext1 = fs::File::create(&ext1_path)?; + let _ext2 = fs::File::create(&ext2_path)?; + let _ext3 = fs::File::create(&ext3_path)?; + + let path = env::join_paths(&[dir1.path(), dir2.path()])?; + let mut exts = crate::commands::discover_extensions(&path)?; + // We can't assume a fixed ordering of extensions, because that is + // platform/file system dependent. So sort here to fix it. + exts.sort(); + assert_eq!(exts, vec!["ext1", "ext2", "super-1337-extensions111one"]); + } + Ok(()) +} + +#[test] fn resolve_extensions() -> anyhow::Result<()> { let dir1 = tempfile::tempdir()?; let dir2 = tempfile::tempdir()?; |