aboutsummaryrefslogtreecommitdiff
path: root/src/tests/extensions.rs
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2020-10-04 09:46:31 -0700
committerDaniel Mueller <deso@posteo.net>2020-10-11 17:07:08 -0700
commitf65b150049ec9dc5ff2500d7e54c464d530f2e66 (patch)
treebd63618507dee5ec142c606662356a61fd8c1d00 /src/tests/extensions.rs
parent8cf63c6790192c30c81294e7a940d470bf061cbf (diff)
downloadnitrocli-f65b150049ec9dc5ff2500d7e54c464d530f2e66.tar.gz
nitrocli-f65b150049ec9dc5ff2500d7e54c464d530f2e66.tar.bz2
Display available extensions in the help text
With recent changes we are able to execute user-provided extensions through the program. However, discoverability is arguably lacking, because nitrocli provides no insight into what extensions are available to begin with. This patch changes this state of affairs by listing available extensions in the help text.
Diffstat (limited to 'src/tests/extensions.rs')
-rw-r--r--src/tests/extensions.rs30
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()?;