Files
dvc/tests/func/test_pkg.py
T
2019-06-17 21:06:10 +03:00

175 lines
4.7 KiB
Python

import os
import git
import filecmp
from dvc.pkg import PkgManager
from tests.utils import trees_equal
def test_install_and_uninstall(repo_dir, dvc_repo, pkg):
name = os.path.basename(pkg.root_dir)
pkg_dir = os.path.join(repo_dir.root_dir, ".dvc", "pkg")
mypkg_dir = os.path.join(pkg_dir, name)
dvc_repo.pkg.install(pkg.root_dir)
assert os.path.exists(pkg_dir)
assert os.path.isdir(pkg_dir)
assert os.path.exists(mypkg_dir)
assert os.path.isdir(mypkg_dir)
assert os.path.isdir(os.path.join(mypkg_dir, ".git"))
dvc_repo.pkg.install(pkg.root_dir)
assert os.path.exists(pkg_dir)
assert os.path.isdir(pkg_dir)
assert os.path.exists(mypkg_dir)
assert os.path.isdir(mypkg_dir)
assert os.path.isdir(os.path.join(mypkg_dir, ".git"))
git_repo = git.Repo(mypkg_dir)
assert git_repo.active_branch.name == "master"
dvc_repo.pkg.uninstall(name)
assert not os.path.exists(mypkg_dir)
dvc_repo.pkg.uninstall(name)
assert not os.path.exists(mypkg_dir)
def test_uninstall_corrupted(repo_dir, dvc_repo):
name = os.path.basename("mypkg")
pkg_dir = os.path.join(repo_dir.root_dir, ".dvc", "pkg")
mypkg_dir = os.path.join(pkg_dir, name)
os.makedirs(mypkg_dir)
dvc_repo.pkg.uninstall(name)
assert not os.path.exists(mypkg_dir)
def test_force_install(repo_dir, dvc_repo, pkg):
name = os.path.basename(pkg.root_dir)
pkg_dir = os.path.join(repo_dir.root_dir, ".dvc", "pkg")
mypkg_dir = os.path.join(pkg_dir, name)
os.makedirs(mypkg_dir)
dvc_repo.pkg.install(pkg.root_dir)
assert not os.listdir(mypkg_dir)
dvc_repo.pkg.install(pkg.root_dir, force=True)
assert os.path.exists(pkg_dir)
assert os.path.isdir(pkg_dir)
assert os.path.exists(mypkg_dir)
assert os.path.isdir(mypkg_dir)
assert os.path.isdir(os.path.join(mypkg_dir, ".git"))
def test_install_version(repo_dir, dvc_repo, pkg):
name = os.path.basename(pkg.root_dir)
pkg_dir = os.path.join(repo_dir.root_dir, ".dvc", "pkg")
mypkg_dir = os.path.join(pkg_dir, name)
dvc_repo.pkg.install(pkg.root_dir, version="branch")
assert os.path.exists(pkg_dir)
assert os.path.isdir(pkg_dir)
assert os.path.exists(mypkg_dir)
assert os.path.isdir(mypkg_dir)
assert os.path.isdir(os.path.join(mypkg_dir, ".git"))
git_repo = git.Repo(mypkg_dir)
assert git_repo.active_branch.name == "branch"
def test_import(repo_dir, dvc_repo, pkg):
name = os.path.basename(pkg.root_dir)
src = pkg.FOO
dst = pkg.FOO + "_imported"
dvc_repo.pkg.install(pkg.root_dir)
dvc_repo.pkg.imp(name, src, dst)
assert os.path.exists(dst)
assert os.path.isfile(dst)
assert filecmp.cmp(repo_dir.FOO, dst, shallow=False)
def test_import_dir(repo_dir, dvc_repo, pkg):
name = os.path.basename(pkg.root_dir)
src = pkg.DATA_DIR
dst = pkg.DATA_DIR + "_imported"
dvc_repo.pkg.install(pkg.root_dir)
dvc_repo.pkg.imp(name, src, dst)
assert os.path.exists(dst)
assert os.path.isdir(dst)
trees_equal(src, dst)
def test_import_url(repo_dir, dvc_repo, pkg):
name = os.path.basename(pkg.root_dir)
pkg_dir = os.path.join(repo_dir.root_dir, ".dvc", "pkg")
mypkg_dir = os.path.join(pkg_dir, name)
src = pkg.FOO
dst = pkg.FOO + "_imported"
dvc_repo.pkg.imp(pkg.root_dir, src, dst)
assert os.path.exists(pkg_dir)
assert os.path.isdir(pkg_dir)
assert os.path.exists(mypkg_dir)
assert os.path.isdir(mypkg_dir)
assert os.path.isdir(os.path.join(mypkg_dir, ".git"))
assert os.path.exists(dst)
assert os.path.isfile(dst)
assert filecmp.cmp(repo_dir.FOO, dst, shallow=False)
def test_import_url_version(repo_dir, dvc_repo, pkg):
name = os.path.basename(pkg.root_dir)
pkg_dir = os.path.join(repo_dir.root_dir, ".dvc", "pkg")
mypkg_dir = os.path.join(pkg_dir, name)
src = "version"
dst = src
dvc_repo.pkg.imp(pkg.root_dir, src, dst, version="branch")
assert os.path.exists(pkg_dir)
assert os.path.isdir(pkg_dir)
assert os.path.exists(mypkg_dir)
assert os.path.isdir(mypkg_dir)
assert os.path.isdir(os.path.join(mypkg_dir, ".git"))
assert os.path.exists(dst)
assert os.path.isfile(dst)
with open(dst, "r+") as fobj:
assert fobj.read() == "branch"
def test_get_file(repo_dir, dvc_repo, pkg):
src = pkg.FOO
dst = pkg.FOO + "_imported"
PkgManager.get(pkg.root_dir, src, dst)
assert os.path.exists(dst)
assert os.path.isfile(dst)
assert filecmp.cmp(repo_dir.FOO, dst, shallow=False)
def test_get_dir(repo_dir, dvc_repo, pkg):
src = pkg.DATA_DIR
dst = pkg.DATA_DIR + "_imported"
PkgManager.get(pkg.root_dir, src, dst)
assert os.path.exists(dst)
assert os.path.isdir(dst)
trees_equal(src, dst)