Mercurial > kallithea
changeset 8286:4aa6a17afc49
validators: don't catch all Exceptions as invalid clone URIs, be specific
When adding a new repository with a remote clone URI, the URI will be
validated in some way. Several exceptions could occur during that
validation.
Previously, the code would catch based on 'Exception', which means that
_any_ exception would cause the URI to be found invalid. This means that
errors in the code (e.g. related to Python 3 conversion) were also
categorized as 'invalid clone URI'. And thus, the tests that test an
actually invalid URI would pass, even though there was a bug.
Now, things have been refactored so it only is relevant to catch
InvalidCloneUriException. Any other exception will now yield a 500 Internal
Server Error, as expected.
author | Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> |
---|---|
date | Sun, 01 Mar 2020 21:40:32 +0100 |
parents | eb795f7a7a18 |
children | abb83e4edfd9 |
files | kallithea/lib/utils.py kallithea/model/validators.py |
diffstat | 2 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/utils.py Fri Mar 06 19:20:36 2020 +0100 +++ b/kallithea/lib/utils.py Sun Mar 01 21:40:32 2020 +0100 @@ -226,7 +226,7 @@ def is_valid_repo_uri(repo_type, url, ui): """Check if the url seems like a valid remote repo location - Raise InvalidCloneUriException or other Exception if any problems""" + Raise InvalidCloneUriException if any problems""" if repo_type == 'hg': if url.startswith('http') or url.startswith('ssh'): # initially check if it's at least the proper URL
--- a/kallithea/model/validators.py Fri Mar 06 19:20:36 2020 +0100 +++ b/kallithea/model/validators.py Sun Mar 01 21:40:32 2020 +0100 @@ -30,7 +30,7 @@ from kallithea.config.routing import ADMIN_PREFIX from kallithea.lib.auth import HasPermissionAny, HasRepoGroupPermissionLevel from kallithea.lib.compat import OrderedSet -from kallithea.lib.exceptions import LdapImportError +from kallithea.lib.exceptions import InvalidCloneUriException, LdapImportError from kallithea.lib.utils import is_valid_repo_uri from kallithea.lib.utils2 import aslist, repo_name_slug, str2bool from kallithea.model.db import RepoGroup, Repository, User, UserGroup @@ -409,7 +409,7 @@ if url and url != value.get('clone_uri_hidden'): try: is_valid_repo_uri(repo_type, url, make_ui()) - except Exception as e: + except InvalidCloneUriException as e: log.warning('validation of clone URL %r failed: %s', url, e) msg = self.message('clone_uri', state) raise formencode.Invalid(msg, value, state,