diff --git a/swh/loader/svn/tests/test_utils.py b/swh/loader/svn/tests/test_utils.py index a41a8f4fe4bf5042981537c9fa1130f4f608f74f..ccc3c2a59cb1dbae3a40b3642fc97e4ee6a9355a 100644 --- a/swh/loader/svn/tests/test_utils.py +++ b/swh/loader/svn/tests/test_utils.py @@ -408,6 +408,18 @@ def test_svn_urljoin(base_url, paths_to_join, expected_result): False, ), ), + ( + "-r 123 http://svn.example.com/repos/sounds@100 third-party/sounds", + "trunk/externals", + "http://svn.example.org/repos/test", + ("third-party/sounds", "http://svn.example.com/repos/sounds", 123, False), + ), + ( + "-r 123 http://svn.example.com/repos/sounds@150 third-party/sounds", + "trunk/externals", + "http://svn.example.org/repos/test", + ("third-party/sounds", "http://svn.example.com/repos/sounds", 123, False), + ), ], ) def test_parse_external_definition(external, dir_path, repo_url, expected_result): diff --git a/swh/loader/svn/utils.py b/swh/loader/svn/utils.py index 3fbe9fe64fe81e25c0049f109b893b597e64f3b6..3319efee4d30382bf854ce97c128a671040e627c 100644 --- a/swh/loader/svn/utils.py +++ b/swh/loader/svn/utils.py @@ -288,7 +288,10 @@ def parse_external_definition( # http://svn.example.org/repos/test/path@XXX url, revision_s = external_url.rsplit("@", maxsplit=1) try: - revision = int(revision_s) + # ensure revision_s can be parsed to int + rev = int(revision_s) + # -r XXX takes priority over <svn_url>@XXX + revision = revision or rev external_url = url except ValueError: # handle URL like http://user@svn.example.org/