Remote: Set an error when a remote cannot be found.

Inside `git_remote_load`, the calls to `get_optional_config` use
`giterr_clear` to unset any errors that are set due to missing config
keys. If neither a fetch nor a push url config was found for a remote,
we should set an error again.
This commit is contained in:
Arthur Schreiber 2014-05-30 19:26:49 +02:00
parent 58eea5ebf4
commit d723dbed0c
2 changed files with 10 additions and 0 deletions

View File

@ -403,6 +403,7 @@ int git_remote_load(git_remote **out, git_repository *repo, const char *name)
if (!optional_setting_found) { if (!optional_setting_found) {
error = GIT_ENOTFOUND; error = GIT_ENOTFOUND;
giterr_set(GITERR_CONFIG, "Remote '%s' does not exist.", name);
goto cleanup; goto cleanup;
} }

View File

@ -60,6 +60,15 @@ void test_network_remote_remotes__pushurl(void)
cl_assert(git_remote_pushurl(_remote) == NULL); cl_assert(git_remote_pushurl(_remote) == NULL);
} }
void test_network_remote_remotes__error_when_not_found(void)
{
git_remote *r;
cl_git_fail_with(git_remote_load(&r, _repo, "does-not-exist"), GIT_ENOTFOUND);
cl_assert(giterr_last() != NULL);
cl_assert(giterr_last()->klass == GITERR_CONFIG);
}
void test_network_remote_remotes__error_when_no_push_available(void) void test_network_remote_remotes__error_when_no_push_available(void)
{ {
git_remote *r; git_remote *r;