mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
* ui/perf: do not clone same repo multiple times Closes #2490 External repos are still created in /tmp. They might be reused until main() end. If no perfect match is found then a repo with the same url is copied (not cloned again) and adjusted to fit a request: rev and cache_dir. NOTE: test_download_error_pulling_imported_stage() was modified to not rely on clone error. * test: fix import update test * test: fix external_repo test under Windows * dvc: fix non-master default branch for external repos * dvc: remove unused .unset_dir() method
29 lines
930 B
Python
29 lines
930 B
Python
import os
|
|
from mock import patch
|
|
|
|
from dvc.external_repo import external_repo
|
|
from dvc.scm.git import Git
|
|
|
|
|
|
def test_external_repo(erepo):
|
|
url = erepo.root_dir
|
|
# We will share cache dir, to fetch version file
|
|
cache_dir = erepo.dvc.cache.local.cache_dir
|
|
|
|
with patch.object(Git, "clone", wraps=Git.clone) as mock:
|
|
with external_repo(url, cache_dir=cache_dir) as repo:
|
|
with repo.open(os.path.join(repo.root_dir, "version")) as fd:
|
|
assert fd.read() == "master"
|
|
|
|
with external_repo(url, rev="branch", cache_dir=cache_dir) as repo:
|
|
with repo.open(os.path.join(repo.root_dir, "version")) as fd:
|
|
assert fd.read() == "branch"
|
|
|
|
# Check cache_dir is unset
|
|
with external_repo(url) as repo:
|
|
assert repo.cache.local.cache_dir.startswith(
|
|
repo.root_dir + os.sep
|
|
)
|
|
|
|
assert mock.call_count == 1
|