Page MenuHomeSoftware Heritage

D8943.diff
No OneTemporary

D8943.diff

diff --git a/swh/loader/svn/svn.py b/swh/loader/svn/svn.py
--- a/swh/loader/svn/svn.py
+++ b/swh/loader/svn/svn.py
@@ -13,7 +13,7 @@
import shutil
import tempfile
from typing import Dict, Iterator, List, Optional, Tuple, Union
-from urllib.parse import urlparse, urlunparse
+from urllib.parse import quote, urlparse, urlunparse
from subvertpy import SubversionException, client, properties, wc
from subvertpy.ra import (
@@ -43,7 +43,7 @@
def quote_svn_url(url: str) -> str:
- return url.replace(" ", "%20").replace("#", "%23")
+ return quote(url, safe="/:!$&'()*+,=@")
class SvnRepo:
diff --git a/swh/loader/svn/tests/test_loader.py b/swh/loader/svn/tests/test_loader.py
--- a/swh/loader/svn/tests/test_loader.py
+++ b/swh/loader/svn/tests/test_loader.py
@@ -3,6 +3,7 @@
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
+import itertools
import logging
import os
import shutil
@@ -2175,15 +2176,18 @@
check_snapshot(loader.snapshot, loader.storage)
-@pytest.mark.parametrize(
- "filename", ["file with spaces.txt", "file#with#hash#signs.txt"]
-)
-def test_loader_with_special_chars_in_svn_url(repo_url, tmp_path, filename):
+def test_loader_with_special_chars_in_svn_url(repo_url, tmp_path):
content = b"foo"
+ filename = "".join(
+ itertools.chain(
+ (chr(i) for i in range(32, 127)), (chr(i) for i in range(161, 256))
+ )
+ )
+
add_commit(
repo_url,
- "Add file with spaces in its name",
+ "Add file with characters to quote in its name",
[
CommitChange(
change_type=CommitChangeType.AddOrUpdate,

File Metadata

Mime Type
text/plain
Expires
Dec 20 2024, 12:04 AM (11 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3214889

Event Timeline