mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-25 01:06:50 +00:00
Merge pull request #2206 from ThomasWaldmann/fix-location-regex-smb
Location: accept //servername/share/path
This commit is contained in:
commit
e59d313666
2 changed files with 15 additions and 3 deletions
|
@ -1004,10 +1004,17 @@ class Location:
|
|||
|
||||
# path must not contain :: (it ends at :: or string end), but may contain single colons.
|
||||
# to avoid ambiguities with other regexes, it must also not start with ":" nor with "//" nor with "ssh://".
|
||||
path_re = r"""
|
||||
scp_path_re = r"""
|
||||
(?!(:|//|ssh://)) # not starting with ":" or // or ssh://
|
||||
(?P<path>([^:]|(:(?!:)))+) # any chars, but no "::"
|
||||
"""
|
||||
|
||||
# file_path must not contain :: (it ends at :: or string end), but may contain single colons.
|
||||
# it must start with a / and that slash is part of the path.
|
||||
file_path_re = r"""
|
||||
(?P<path>(([^/]*)/([^:]|(:(?!:)))+)) # start opt. servername, then /, then any chars, but no "::"
|
||||
"""
|
||||
|
||||
# abs_path must not contain :: (it ends at :: or string end), but may contain single colons.
|
||||
# it must start with a / and that slash is part of the path.
|
||||
abs_path_re = r"""
|
||||
|
@ -1032,7 +1039,7 @@ class Location:
|
|||
|
||||
file_re = re.compile(r"""
|
||||
(?P<proto>file):// # file://
|
||||
""" + path_re + optional_archive_re, re.VERBOSE) # path or path::archive
|
||||
""" + file_path_re + optional_archive_re, re.VERBOSE) # servername/path, path or path::archive
|
||||
|
||||
# note: scp_re is also use for local pathes
|
||||
scp_re = re.compile(r"""
|
||||
|
@ -1040,7 +1047,7 @@ class Location:
|
|||
""" + optional_user_re + r""" # user@ (optional)
|
||||
(?P<host>[^:/]+): # host: (don't match / in host to disambiguate from file:)
|
||||
)? # user@host: part is optional
|
||||
""" + path_re + optional_archive_re, re.VERBOSE) # path with optional archive
|
||||
""" + scp_path_re + optional_archive_re, re.VERBOSE) # path with optional archive
|
||||
|
||||
# get the repo from BORG_REPO env and the optional archive from param.
|
||||
# if the syntax requires giving REPOSITORY (see "borg mount"),
|
||||
|
|
|
@ -60,6 +60,11 @@ def test_scp(self, monkeypatch):
|
|||
assert repr(Location('user@host:/some/path')) == \
|
||||
"Location(proto='ssh', user='user', host='host', port=None, path='/some/path', archive=None)"
|
||||
|
||||
def test_smb(self, monkeypatch):
|
||||
monkeypatch.delenv('BORG_REPO', raising=False)
|
||||
assert repr(Location('file:////server/share/path::archive')) == \
|
||||
"Location(proto='file', user=None, host=None, port=None, path='//server/share/path', archive='archive')"
|
||||
|
||||
def test_folder(self, monkeypatch):
|
||||
monkeypatch.delenv('BORG_REPO', raising=False)
|
||||
assert repr(Location('path::archive')) == \
|
||||
|
|
Loading…
Reference in a new issue