api: Move to sub-package.

Split into sub-modules.

Split tests.
This commit is contained in:
David de la Iglesia Castro
2022-06-21 20:52:19 +03:00
committed by Ruslan Kuprieiev
parent b994c529a2
commit 20f69a121e
16 changed files with 670 additions and 651 deletions
@@ -1,5 +1,4 @@
import os
from textwrap import dedent
import pytest
from funcy import first, get_in
@@ -11,8 +10,8 @@ from dvc.exceptions import (
PathMissingError,
)
from dvc.testing.test_api import TestAPI # noqa, pylint: disable=unused-import
from dvc.testing.tmp_dir import make_subrepo
from dvc.utils.fs import remove
from tests.unit.fs.test_dvc import make_subrepo
def test_get_url_external(tmp_dir, erepo_dir, cloud):
@@ -229,128 +228,3 @@ def test_open_from_remote(tmp_dir, erepo_dir, cloud, local_cloud):
remote="other",
) as fd:
assert fd.read() == "foo content"
@pytest.fixture
def params_repo(tmp_dir, scm, dvc):
tmp_dir.gen("params.yaml", "foo: 1")
tmp_dir.gen("params.json", '{"bar": 2, "foobar": 3}')
tmp_dir.gen("other_params.json", '{"foo": {"bar": 4}}')
dvc.run(
name="stage-1",
cmd="echo stage-1",
params=["foo", "params.json:bar"],
)
dvc.run(
name="stage-2",
cmd="echo stage-2",
params=["other_params.json:foo"],
)
dvc.run(
name="stage-3",
cmd="echo stage-2",
params=["params.json:foobar"],
)
scm.add(
[
"params.yaml",
"params.json",
"other_params.json",
"dvc.yaml",
"dvc.lock",
]
)
scm.commit("commit dvc files")
tmp_dir.gen("params.yaml", "foo: 5")
scm.add(["params.yaml"])
scm.commit("update params.yaml")
def test_params_show_no_args(params_repo):
assert api.params_show() == {
"params.yaml:foo": 5,
"bar": 2,
"foobar": 3,
"other_params.json:foo": {"bar": 4},
}
def test_params_show_targets(params_repo):
assert api.params_show("params.yaml") == {"foo": 5}
assert api.params_show("params.yaml", "params.json") == {
"foo": 5,
"bar": 2,
"foobar": 3,
}
def test_params_show_deps(params_repo):
params = api.params_show(deps=True)
assert params == {
"params.yaml:foo": 5,
"bar": 2,
"foobar": 3,
"other_params.json:foo": {"bar": 4},
}
def test_params_show_stages(params_repo):
assert api.params_show(stages="stage-2") == {"foo": {"bar": 4}}
assert api.params_show() == api.params_show(
stages=["stage-1", "stage-2", "stage-3"]
)
assert api.params_show("params.json", stages="stage-3") == {"foobar": 3}
def test_params_show_revs(params_repo):
assert api.params_show(rev="HEAD~1") == {
"params.yaml:foo": 1,
"bar": 2,
"foobar": 3,
"other_params.json:foo": {"bar": 4},
}
def test_params_show_while_running_stage(tmp_dir, dvc):
(tmp_dir / "params.yaml").dump({"foo": {"bar": 1}})
(tmp_dir / "params.json").dump({"bar": 2})
tmp_dir.gen(
"merge.py",
dedent(
"""
import json
from dvc import api
with open("merged.json", "w") as f:
json.dump(api.params_show(stages="merge"), f)
"""
),
)
dvc.stage.add(
name="merge",
cmd="python merge.py",
params=["foo.bar", {"params.json": ["bar"]}],
outs=["merged.json"],
)
dvc.reproduce()
assert (tmp_dir / "merged.json").parse() == {"foo": {"bar": 1}, "bar": 2}
def test_params_show_repo(tmp_dir, erepo_dir):
with erepo_dir.chdir():
erepo_dir.scm_gen("params.yaml", "foo: 1", commit="Create params.yaml")
erepo_dir.dvc.run(
name="stage-1",
cmd="echo stage-1",
params=["foo"],
)
assert api.params_show(repo=erepo_dir) == {"foo": 1}
+130
View File
@@ -0,0 +1,130 @@
from textwrap import dedent
import pytest
from dvc import api
@pytest.fixture
def params_repo(tmp_dir, scm, dvc):
tmp_dir.gen("params.yaml", "foo: 1")
tmp_dir.gen("params.json", '{"bar": 2, "foobar": 3}')
tmp_dir.gen("other_params.json", '{"foo": {"bar": 4}}')
dvc.run(
name="stage-1",
cmd="echo stage-1",
params=["foo", "params.json:bar"],
)
dvc.run(
name="stage-2",
cmd="echo stage-2",
params=["other_params.json:foo"],
)
dvc.run(
name="stage-3",
cmd="echo stage-2",
params=["params.json:foobar"],
)
scm.add(
[
"params.yaml",
"params.json",
"other_params.json",
"dvc.yaml",
"dvc.lock",
]
)
scm.commit("commit dvc files")
tmp_dir.gen("params.yaml", "foo: 5")
scm.add(["params.yaml"])
scm.commit("update params.yaml")
def test_params_show_no_args(params_repo):
assert api.params_show() == {
"params.yaml:foo": 5,
"bar": 2,
"foobar": 3,
"other_params.json:foo": {"bar": 4},
}
def test_params_show_targets(params_repo):
assert api.params_show("params.yaml") == {"foo": 5}
assert api.params_show("params.yaml", "params.json") == {
"foo": 5,
"bar": 2,
"foobar": 3,
}
def test_params_show_deps(params_repo):
params = api.params_show(deps=True)
assert params == {
"params.yaml:foo": 5,
"bar": 2,
"foobar": 3,
"other_params.json:foo": {"bar": 4},
}
def test_params_show_stages(params_repo):
assert api.params_show(stages="stage-2") == {"foo": {"bar": 4}}
assert api.params_show() == api.params_show(
stages=["stage-1", "stage-2", "stage-3"]
)
assert api.params_show("params.json", stages="stage-3") == {"foobar": 3}
def test_params_show_revs(params_repo):
assert api.params_show(rev="HEAD~1") == {
"params.yaml:foo": 1,
"bar": 2,
"foobar": 3,
"other_params.json:foo": {"bar": 4},
}
def test_params_show_while_running_stage(tmp_dir, dvc):
(tmp_dir / "params.yaml").dump({"foo": {"bar": 1}})
(tmp_dir / "params.json").dump({"bar": 2})
tmp_dir.gen(
"merge.py",
dedent(
"""
import json
from dvc import api
with open("merged.json", "w") as f:
json.dump(api.params_show(stages="merge"), f)
"""
),
)
dvc.stage.add(
name="merge",
cmd="python merge.py",
params=["foo.bar", {"params.json": ["bar"]}],
outs=["merged.json"],
)
dvc.reproduce()
assert (tmp_dir / "merged.json").parse() == {"foo": {"bar": 1}, "bar": 2}
def test_params_show_repo(tmp_dir, erepo_dir):
with erepo_dir.chdir():
erepo_dir.scm_gen("params.yaml", "foo: 1", commit="Create params.yaml")
erepo_dir.dvc.run(
name="stage-1",
cmd="echo stage-1",
params=["foo"],
)
assert api.params_show(repo=erepo_dir) == {"foo": 1}
+1 -1
View File
@@ -544,7 +544,7 @@ def test_subdir(tmp_dir, scm, dvc, workspace):
@pytest.mark.parametrize("workspace", [True, False])
def test_subrepo(tmp_dir, scm, workspace):
from tests.unit.fs.test_dvc import make_subrepo
from dvc.testing.tmp_dir import make_subrepo
subrepo = tmp_dir / "dir" / "repo"
make_subrepo(subrepo, scm)
+1 -1
View File
@@ -4,11 +4,11 @@ from unittest.mock import ANY
from scmrepo.git import Git
from dvc.external_repo import CLONES, external_repo
from dvc.testing.tmp_dir import make_subrepo
from dvc.utils import relpath
from dvc.utils.fs import makedirs, remove
from dvc_data.stage import stage
from dvc_data.transfer import transfer
from tests.unit.fs.test_dvc import make_subrepo
def test_external_repo(erepo_dir, mocker):
+1 -1
View File
@@ -8,8 +8,8 @@ from dvc.fs import system
from dvc.odbmgr import ODBManager
from dvc.repo import Repo
from dvc.repo.get import GetDVCFileError
from dvc.testing.tmp_dir import make_subrepo
from dvc.utils.fs import makedirs
from tests.unit.fs.test_dvc import make_subrepo
def test_get_repo_file(tmp_dir, erepo_dir):
+1 -1
View File
@@ -12,8 +12,8 @@ from dvc.exceptions import DownloadError, PathMissingError
from dvc.fs import system
from dvc.odbmgr import ODBManager
from dvc.stage.exceptions import StagePathNotFoundError
from dvc.testing.tmp_dir import make_subrepo
from dvc.utils.fs import makedirs, remove
from tests.unit.fs.test_dvc import make_subrepo
def test_import(tmp_dir, scm, dvc, erepo_dir):
+1 -1
View File
@@ -4,7 +4,7 @@ import pytest
from dvc.dvcfile import Dvcfile
from dvc.exceptions import InvalidArgumentError
from tests.unit.fs.test_dvc import make_subrepo
from dvc.testing.tmp_dir import make_subrepo
@pytest.mark.parametrize("cached", [True, False])
+1 -9
View File
@@ -6,6 +6,7 @@ from unittest import mock
import pytest
from dvc.fs.dvc import DvcFileSystem
from dvc.testing.tmp_dir import make_subrepo
from dvc_data.hashfile.hash_info import HashInfo
from dvc_data.stage import stage
@@ -318,15 +319,6 @@ def test_isdvc(tmp_dir, dvc):
assert fs.isdvc("dir/baz", recursive=True)
def make_subrepo(dir_, scm, config=None):
dir_.mkdir(parents=True, exist_ok=True)
with dir_.chdir():
dir_.scm = scm
dir_.init(dvc=True, subdir=True)
if config:
dir_.add_remote(config=config)
def test_subrepos(tmp_dir, scm, dvc, mocker):
tmp_dir.scm_gen(
{"dir": {"repo.txt": "file to confuse DvcFileSystem"}},
+1 -1
View File
@@ -3,7 +3,7 @@ import os
import pytest
from dvc.fs.dvc import DvcFileSystem
from tests.unit.fs.test_dvc import make_subrepo
from dvc.testing.tmp_dir import make_subrepo
@pytest.fixture
+1 -1
View File
@@ -4,7 +4,7 @@ from unittest.mock import call
import pytest
from dvc.external_repo import external_repo
from tests.unit.fs.test_dvc import make_subrepo
from dvc.testing.tmp_dir import make_subrepo
def test_hook_is_called(tmp_dir, erepo_dir, mocker):