From 6eb0e18f209a9052931deec3a9d2c7141d70576f Mon Sep 17 00:00:00 2001
From: Antoine Lambert <anlambert@softwareheritage.org>
Date: Thu, 2 Mar 2023 11:09:10 +0100
Subject: [PATCH] loader: Fix subversion sub-project dump URL

Previously SvnLoaderFromRemoteDump class was using the repository
root URL to dump a sub-project.
---
 swh/loader/svn/loader.py            |  1 +
 swh/loader/svn/tests/test_loader.py | 10 +++++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/swh/loader/svn/loader.py b/swh/loader/svn/loader.py
index 48fd052..721f533 100644
--- a/swh/loader/svn/loader.py
+++ b/swh/loader/svn/loader.py
@@ -856,6 +856,7 @@ class SvnLoaderFromRemoteDump(SvnLoader):
             self.temp_dir,
             self.max_content_size,
             debug=self.debug,
+            from_dump=True,
         )
 
         # Ensure to use remote URL retrieved by SvnRepo as origin URL might redirect
diff --git a/swh/loader/svn/tests/test_loader.py b/swh/loader/svn/tests/test_loader.py
index ac22b2c..b7049b0 100644
--- a/swh/loader/svn/tests/test_loader.py
+++ b/swh/loader/svn/tests/test_loader.py
@@ -1931,7 +1931,9 @@ def test_loader_svn_add_property_on_directory_link(
 @pytest.mark.parametrize(
     "svn_loader_cls", [SvnLoader, SvnLoaderFromDumpArchive, SvnLoaderFromRemoteDump]
 )
-def test_loader_with_subprojects(swh_storage, repo_url, tmp_path, svn_loader_cls):
+def test_loader_with_subprojects(
+    swh_storage, repo_url, tmp_path, svn_loader_cls, mocker
+):
 
     # first commit
     add_commit(
@@ -1991,6 +1993,9 @@ def test_loader_with_subprojects(swh_storage, repo_url, tmp_path, svn_loader_cls
 
         loader = svn_loader_cls(**loader_params)
 
+        if svn_loader_cls == SvnLoaderFromRemoteDump:
+            dump_revisions = mocker.spy(loader, "dump_svn_revisions")
+
         assert loader.load() == {"status": "eventful"}
         assert_last_visit_matches(
             loader.storage,
@@ -2000,6 +2005,9 @@ def test_loader_with_subprojects(swh_storage, repo_url, tmp_path, svn_loader_cls
         )
         check_snapshot(loader.snapshot, loader.storage)
 
+        if svn_loader_cls == SvnLoaderFromRemoteDump:
+            dump_revisions.assert_called_once_with(origin_url.rstrip("/"), -1)
+
         if svn_loader_cls == SvnLoaderFromDumpArchive:
             loader_params["archive_path"] = _dump_project(tmp_path, origin_url)
 
-- 
GitLab