mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
dvc: override replace in HTTPURLInfo to include extra_parts (#4517)
* dvc: override replace in HTTPURLInfo to include extra_parts The objective is to passtrough any parameter configured in http remotes. fixes #4508 * add unit test for #4508 * Use HTTPURLInfo directly instead of decorator
This commit is contained in:
@@ -253,6 +253,15 @@ class HTTPURLInfo(URLInfo):
|
||||
self.query = p.query
|
||||
self.fragment = p.fragment
|
||||
|
||||
def replace(self, path=None):
|
||||
return self.from_parts(
|
||||
*self._base_parts,
|
||||
params=self.params,
|
||||
query=self.query,
|
||||
fragment=self.fragment,
|
||||
path=path,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def from_parts(
|
||||
cls,
|
||||
|
||||
@@ -85,3 +85,20 @@ def test_https_url_info_str():
|
||||
def test_path_info_as_posix(mocker, path, as_posix, osname):
|
||||
mocker.patch("os.name", osname)
|
||||
assert PathInfo(path).as_posix() == as_posix
|
||||
|
||||
|
||||
def test_url_replace_path():
|
||||
url = "https://[email protected]/original/path;p=par?q=quer#frag"
|
||||
|
||||
u = HTTPURLInfo(url)
|
||||
new_u = u.replace("/new/path")
|
||||
|
||||
assert u.path == "/original/path"
|
||||
assert new_u.path == "/new/path"
|
||||
|
||||
assert u.scheme == new_u.scheme
|
||||
assert u.host == new_u.host
|
||||
assert u.user == new_u.user
|
||||
assert u.params == new_u.params
|
||||
assert u.query == new_u.query
|
||||
assert u.fragment == new_u.fragment
|
||||
|
||||
Reference in New Issue
Block a user