mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
* build(deps): bump pytest-mock from 1.11.2 to 3.5.1 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.11.2 to 3.5.1. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.11.2...v3.5.1) Signed-off-by: dependabot[bot] <[email protected]> * change spy.return_value to spy.spy_return This was introduced in pytest-mock 2.0.0 https://github.com/pytest-dev/pytest-mock/commit/78499644cb800f8fe65a5c17e81d168fa2a4c6b9 Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Saugat Pachhai (सौगात) <[email protected]>
91 lines
2.8 KiB
Python
91 lines
2.8 KiB
Python
import os
|
|
from unittest.mock import call
|
|
|
|
import pytest
|
|
|
|
from dvc.external_repo import external_repo
|
|
from tests.unit.fs.test_repo import make_subrepo
|
|
|
|
|
|
def test_hook_is_called(tmp_dir, erepo_dir, mocker):
|
|
subrepo_paths = [
|
|
"subrepo1",
|
|
"subrepo2",
|
|
os.path.join("dir", "subrepo3"),
|
|
os.path.join("dir", "subrepo4"),
|
|
"subrepo5",
|
|
os.path.join("subrepo5", "subrepo6"),
|
|
]
|
|
subrepos = [erepo_dir / path for path in subrepo_paths]
|
|
for repo in subrepos:
|
|
make_subrepo(repo, erepo_dir.scm)
|
|
|
|
for repo in subrepos + [erepo_dir]:
|
|
with repo.chdir():
|
|
repo.scm_gen("foo", "foo", commit=f"git add {repo}/foo")
|
|
repo.dvc_gen("bar", "bar", commit=f"dvc add {repo}/bar")
|
|
|
|
with external_repo(str(erepo_dir)) as repo:
|
|
spy = mocker.spy(repo.repo_fs, "repo_factory")
|
|
|
|
list(repo.repo_fs.walk(repo.root_dir)) # drain
|
|
assert spy.call_count == len(subrepos)
|
|
|
|
paths = [os.path.join(repo.root_dir, path) for path in subrepo_paths]
|
|
spy.assert_has_calls(
|
|
[
|
|
call(
|
|
path,
|
|
scm=repo.scm,
|
|
rev=repo.get_rev(),
|
|
repo_factory=repo.repo_fs.repo_factory,
|
|
)
|
|
for path in paths
|
|
],
|
|
any_order=True,
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize("root_is_dvc", [False, True])
|
|
def test_subrepo_is_constructed_properly(
|
|
tmp_dir, scm, mocker, make_tmp_dir, root_is_dvc
|
|
):
|
|
if root_is_dvc:
|
|
make_subrepo(tmp_dir, scm)
|
|
|
|
subrepo = tmp_dir / "subrepo"
|
|
make_subrepo(subrepo, scm)
|
|
local_cache = subrepo.dvc.odb.local.cache_dir
|
|
|
|
tmp_dir.scm_gen("bar", "bar", commit="add bar")
|
|
subrepo.dvc_gen("foo", "foo", commit="add foo")
|
|
|
|
cache_dir = make_tmp_dir("temp-cache")
|
|
with external_repo(
|
|
str(tmp_dir), cache_dir=str(cache_dir), cache_types=["symlink"]
|
|
) as repo:
|
|
spy = mocker.spy(repo.repo_fs, "repo_factory")
|
|
|
|
list(repo.repo_fs.walk(repo.root_dir)) # drain
|
|
assert spy.call_count == 1
|
|
subrepo = spy.spy_return
|
|
|
|
assert repo.url == str(tmp_dir)
|
|
assert repo.config["cache"]["dir"] == str(cache_dir)
|
|
assert repo.odb.local.cache_dir == str(cache_dir)
|
|
assert subrepo.odb.local.cache_dir == str(cache_dir)
|
|
|
|
assert repo.config["cache"]["type"] == ["symlink"]
|
|
assert repo.odb.local.cache_types == ["symlink"]
|
|
assert subrepo.odb.local.cache_types == ["symlink"]
|
|
|
|
assert (
|
|
subrepo.config["remote"]["auto-generated-upstream"]["url"]
|
|
== local_cache
|
|
)
|
|
if root_is_dvc:
|
|
main_cache = tmp_dir.dvc.odb.local.cache_dir
|
|
assert repo.config["remote"]["auto-generated-upstream"][
|
|
"url"
|
|
] == str(main_cache)
|