Show 47 quoted lines
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> The `scalar` command needs a Scalar enlistment for many subcommands, and
> looks in the current directory for such an enlistment (traversing the
> parent directories until it finds one).
>
> These is subcommands can also be called with an optional argument
> specifying the enlistment. Here, too, we traverse parent directories as
> needed, until we find an enlistment.
>
> However, if the specified directory does not even exist, or is not a
> directory, we should stop right there, with an error message.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> contrib/scalar/scalar.c | 6 ++++--
> contrib/scalar/t/t9099-scalar.sh | 5 +++++
> 2 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/contrib/scalar/scalar.c b/contrib/scalar/scalar.c
> index 1ce9c2b00e8..00dcd4b50ef 100644
> --- a/contrib/scalar/scalar.c
> +++ b/contrib/scalar/scalar.c
> @@ -43,9 +43,11 @@ static void setup_enlistment_directory(int argc, const char **argv,
> usage_with_options(usagestr, options);
>
> /* find the worktree, determine its corresponding root */
> - if (argc == 1)
> + if (argc == 1) {
> strbuf_add_absolute_path(&path, argv[0]);
> - else if (strbuf_getcwd(&path) < 0)
> + if (!is_directory(path.buf))
> + die(_("'%s' does not exist"), path.buf);
> + } else if (strbuf_getcwd(&path) < 0)
> die(_("need a working directory"));
>
> strbuf_trim_trailing_dir_sep(&path);
> diff --git a/contrib/scalar/t/t9099-scalar.sh b/contrib/scalar/t/t9099-scalar.sh
> index 2e1502ad45e..9d83fdf25e8 100755
> --- a/contrib/scalar/t/t9099-scalar.sh
> +++ b/contrib/scalar/t/t9099-scalar.sh
> @@ -85,4 +85,9 @@ test_expect_success 'scalar delete with enlistment' '
> test_path_is_missing cloned
> '
>
> +test_expect_success '`scalar [...] <dir>` errors out when dir is missing' '
> + ! scalar run config cloned 2>err &&