mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
Using output path or a subdir/subfile path within an output now works
with `dvc push/pull/fetch/status -c` commands. Other commands don't
support the same logic for now, as there are some questions about what
should commands like `dvc remove` do when given a specific output path.
Example:
dvc add data
dvc pull data/subdir # will only pull files within data/subdir
Related to #2458
52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
import os
|
|
|
|
import pytest
|
|
|
|
|
|
def test_is_dvc_internal(dvc):
|
|
assert dvc.is_dvc_internal(os.path.join("path", "to", ".dvc", "file"))
|
|
assert not dvc.is_dvc_internal(os.path.join("path", "to-non-.dvc", "file"))
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"path",
|
|
[
|
|
os.path.join("dir", "subdir", "file"),
|
|
os.path.join("dir", "subdir"),
|
|
"dir",
|
|
],
|
|
)
|
|
def test_find_outs_by_path(tmp_dir, dvc, path):
|
|
stage, = tmp_dir.dvc_gen(
|
|
{"dir": {"subdir": {"file": "file"}, "other": "other"}}
|
|
)
|
|
|
|
outs = dvc.find_outs_by_path(path, strict=False)
|
|
assert len(outs) == 1
|
|
assert outs[0].path_info == stage.outs[0].path_info
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"path",
|
|
[os.path.join("dir", "subdir", "file"), os.path.join("dir", "subdir")],
|
|
)
|
|
def test_used_cache(tmp_dir, dvc, path):
|
|
from dvc.cache import NamedCache
|
|
|
|
tmp_dir.dvc_gen({"dir": {"subdir": {"file": "file"}, "other": "other"}})
|
|
expected = NamedCache.make(
|
|
"local", "70922d6bf66eb073053a82f77d58c536.dir", "dir"
|
|
)
|
|
expected.add(
|
|
"local",
|
|
"8c7dd922ad47494fc02c388e12c00eac",
|
|
os.path.join("dir", "subdir", "file"),
|
|
)
|
|
|
|
with dvc.state:
|
|
used_cache = dvc.used_cache([path])
|
|
assert (
|
|
used_cache._items == expected._items
|
|
and used_cache.external == expected.external
|
|
)
|