Skip to content

Commit

Permalink
Merge pull request #3170 from pared/3105
Browse files Browse the repository at this point in the history
utils: resolve_output: normpath before extracting basename
  • Loading branch information
efiop authored Jan 17, 2020
2 parents bdd1d61 + cf08529 commit 4d49b6b
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
2 changes: 1 addition & 1 deletion dvc/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ def env2bool(var, undefined=False):
def resolve_output(inp, out):
from urllib.parse import urlparse

name = os.path.basename(urlparse(inp).path)
name = os.path.basename(os.path.normpath(urlparse(inp).path))
if not out:
return name
if os.path.isdir(out):
Expand Down
27 changes: 26 additions & 1 deletion tests/unit/utils/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import pytest

from dvc.path_info import PathInfo
from dvc.utils import file_md5
from dvc.utils import file_md5, resolve_output
from dvc.utils import fix_env
from dvc.utils import relpath
from dvc.utils import to_chunks
Expand Down Expand Up @@ -104,3 +104,28 @@ def test_relpath():
path_info = PathInfo(path)

assert relpath(path) == relpath(path_info)


@pytest.mark.parametrize(
"inp,out,is_dir,expected",
[
["target", None, False, "target"],
["target", "dir", True, os.path.join("dir", "target")],
["target", "file_target", False, "file_target"],
[
"target",
os.path.join("dir", "subdir"),
True,
os.path.join("dir", "subdir", "target"),
],
["dir/", None, False, "dir"],
["dir", None, False, "dir"],
["dir", "other_dir", False, "other_dir"],
["dir", "other_dir", True, os.path.join("other_dir", "dir")],
],
)
def test_resolve_output(inp, out, is_dir, expected, mocker):
with mocker.patch("os.path.isdir", return_value=is_dir):
result = resolve_output(inp, out)

assert result == expected

0 comments on commit 4d49b6b

Please sign in to comment.