diff --git a/src/subcommand.rs b/src/subcommand.rs index 7174f36..90f1bf3 100644 --- a/src/subcommand.rs +++ b/src/subcommand.rs @@ -92,8 +92,19 @@ impl Subcommand { arguments: &[String], overrides: &BTreeMap, ) -> Result<(), Error<'src>> { - if config.unstable && config.search_config == SearchConfig::FromInvocationDirectory { - let mut path = config.invocation_directory.clone(); + if config.unstable + && matches!( + config.search_config, + SearchConfig::FromInvocationDirectory | SearchConfig::FromSearchDirectory { .. } + ) + { + let mut path = match &config.search_config { + SearchConfig::FromInvocationDirectory => config.invocation_directory.clone(), + SearchConfig::FromSearchDirectory { search_directory } => std::env::current_dir() + .unwrap() + .join(search_directory.clone()), + _ => unreachable!(), + }; let mut unknown_recipes_errors = None; diff --git a/tests/fall_back_to_parent.rs b/tests/fall_back_to_parent.rs index af6ee4f..a5d03cf 100644 --- a/tests/fall_back_to_parent.rs +++ b/tests/fall_back_to_parent.rs @@ -83,7 +83,7 @@ fn requires_unstable() { } #[test] -fn doesnt_work_with_search_directory() { +fn works_with_provided_search_directory() { Test::new() .tree(tree! { bar: { @@ -100,9 +100,15 @@ fn doesnt_work_with_search_directory() { ", ) .args(&["--unstable", "./foo"]) + .stdout("root\n") + .stderr(format!( + " + Trying ..{}justfile + echo root + ", + MAIN_SEPARATOR + )) .current_dir("bar") - .status(EXIT_FAILURE) - .stderr("error: Justfile does not contain recipe `foo`.\n") .run(); }