From ca852170c1ed590f42b2eb5ecaf5ea2f32e934d3 Mon Sep 17 00:00:00 2001 From: pawel Date: Tue, 3 Dec 2019 10:49:38 +0100 Subject: [PATCH] get: test: from non-dvc master: refactor --- dvc/external_repo.py | 5 ++++- tests/conftest.py | 8 +------- tests/func/test_get.py | 38 +++++++------------------------------- 3 files changed, 12 insertions(+), 39 deletions(-) diff --git a/dvc/external_repo.py b/dvc/external_repo.py index 9b5ef49d7..8f53da4ef 100644 --- a/dvc/external_repo.py +++ b/dvc/external_repo.py @@ -84,7 +84,10 @@ def _git_checkout(repo_path, revision): from dvc.scm import Git git = Git(repo_path) - git.checkout(revision) + try: + git.checkout(revision) + finally: + git.close() def clean_repos(): diff --git a/tests/conftest.py b/tests/conftest.py index ec724fcee..0cdb204b8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -13,7 +13,7 @@ from .basic_env import TestGitFixture from dvc.remote.config import RemoteConfig from dvc.remote.ssh.connection import SSHConnection from dvc.repo import Repo as DvcRepo -from dvc.utils.compat import cast_bytes_py2, fspath +from dvc.utils.compat import cast_bytes_py2 # Prevent updater and analytics from running their processes os.environ[cast_bytes_py2("DVC_TEST")] = cast_bytes_py2("true") @@ -190,9 +190,3 @@ def git_erepo(): repo.setUp() yield repo repo.tearDown() - - -@pytest.fixture -def empty_dir(tmp_path, monkeypatch): - monkeypatch.chdir(tmp_path) - return fspath(tmp_path) diff --git a/tests/func/test_get.py b/tests/func/test_get.py index c166b3781..07551c5f3 100644 --- a/tests/func/test_get.py +++ b/tests/func/test_get.py @@ -9,10 +9,10 @@ import pytest from dvc.config import Config from dvc.exceptions import GetDVCFileError from dvc.exceptions import UrlNotDvcRepoError -from dvc.remote import RemoteConfig from dvc.repo import Repo from dvc.system import System from dvc.utils import makedirs +from dvc.utils.compat import fspath from tests.utils import trees_equal @@ -91,41 +91,17 @@ def test_get_to_dir(dname, erepo): assert filecmp.cmp(erepo.FOO, dst, shallow=False) -def test_get_from_non_dvc_master(empty_dir, git_erepo, caplog): - storage = git_erepo.mkdtemp() - - dvc_branch = "dvc_test" - git_erepo.git.git.checkout("master", b=dvc_branch) - - dvc_repo = Repo.init(git_erepo._root_dir) - stage, = dvc_repo.add([git_erepo.FOO]) - - rconfig = RemoteConfig(dvc_repo.config) - rconfig.add("upstream", storage, default=True) - - dvc_repo.push() - dvc_repo.scm.add([dvc_repo.config.config_file]) - - dvc_repo.scm.add([".dvc", stage.relpath]) - dvc_repo.scm.commit("dvc branch initial") - - git_erepo.git.git.checkout("master") - - os.chdir(empty_dir) +def test_get_from_non_dvc_master(erepo, tmp_path, monkeypatch, caplog): + monkeypatch.chdir(fspath(tmp_path)) + erepo.dvc.scm.repo.index.remove([".dvc"], r=True) + erepo.dvc.scm.commit("remove .dvc") caplog.clear() imported_file = "foo_imported" with caplog.at_level(logging.INFO, logger="dvc"): - Repo.get( - git_erepo._root_dir, - git_erepo.FOO, - out=imported_file, - rev=dvc_branch, - ) + Repo.get(erepo._root_dir, erepo.FOO, out=imported_file, rev="branch") assert caplog.text == "" assert filecmp.cmp( - os.path.join(git_erepo._root_dir, git_erepo.FOO), - imported_file, - shallow=False, + os.path.join(erepo._root_dir, erepo.FOO), imported_file, shallow=False )