refs: provide a more general error message for dwim

If we cannot dwim the input, set the error message to be explicit about
that. Otherwise we leave the error for the last failed lookup, which
can be rather unexpected as it mentions a remote when the user thought
they were trying to look up a branch.
This commit is contained in:
Carlos Martín Nieto 2016-04-11 17:43:07 +02:00 committed by Edward Thomson
parent ab062a3938
commit 3e2e8240c0
2 changed files with 11 additions and 0 deletions

View File

@ -289,6 +289,9 @@ cleanup:
"Could not use '%s' as valid reference name", git_buf_cstr(&name)); "Could not use '%s' as valid reference name", git_buf_cstr(&name));
} }
if (error == GIT_ENOTFOUND)
giterr_set(GITERR_REFERENCE, "no reference found for shorthand '%s'", refname);
git_buf_free(&name); git_buf_free(&name);
git_buf_free(&refnamebuf); git_buf_free(&refnamebuf);
return error; return error;

View File

@ -58,3 +58,11 @@ void test_refs_lookup__namespace(void)
error = git_reference_lookup(&ref, g_repo, "refs/heads/"); error = git_reference_lookup(&ref, g_repo, "refs/heads/");
cl_assert_equal_i(error, GIT_EINVALIDSPEC); cl_assert_equal_i(error, GIT_EINVALIDSPEC);
} }
void test_refs_lookup__dwim_notfound(void)
{
git_reference *ref;
cl_git_fail_with(GIT_ENOTFOUND, git_reference_dwim(&ref, g_repo, "idontexist"));
cl_assert_equal_s("no reference found for shorthand 'idontexist'", giterr_last()->message);
}