Files
dvc/tests/func/test_init.py
T
Casper da Costa-Luis 2bb7257a06 lint: isort pre-commit & misc improvements (#3749)
* test: clean flake8 config root clutter

* test: pre-commit: add isort

Compatible with black (see https://github.com/timothycrosley/isort/issues/694)

* lint: reorder imports

* lint: more complex imports

* lint: fix deepsource

* config: isort: add first party dvc

* tests: restyled: add isort

* temp commit to revert before merge

* Revert "temp commit to revert before merge"

This reverts commit 11db0fd8e95fe891597cbb9bf804480909b19e24.
2020-05-06 23:56:07 +03:00

105 lines
2.6 KiB
Python

import logging
import os
from dvc.compat import fspath
from dvc.config import Config
from dvc.exceptions import InitError
from dvc.main import main
from dvc.repo import Repo as DvcRepo
from tests.basic_env import TestDir, TestGit
class TestInit(TestGit):
def _test_init(self):
self.assertTrue(os.path.exists(DvcRepo.DVC_DIR))
self.assertTrue(os.path.isdir(DvcRepo.DVC_DIR))
def test_api(self):
DvcRepo.init()
self._test_init()
def test_cli(self):
ret = main(["init"])
self.assertEqual(ret, 0)
self._test_init()
class TestDoubleInit(TestInit):
def test(self):
ret = main(["init"])
self.assertEqual(ret, 0)
self._test_init()
ret = main(["init"])
self.assertNotEqual(ret, 0)
self._test_init()
ret = main(["init", "--force"])
self.assertEqual(ret, 0)
self._test_init()
class TestInitNoSCMFail(TestDir):
def test_api(self):
with self.assertRaises(InitError):
DvcRepo.init()
def test_cli(self):
ret = main(["init"])
self.assertNotEqual(ret, 0)
def test_init_no_scm_api(tmp_dir):
repo = DvcRepo.init(no_scm=True)
assert (tmp_dir / DvcRepo.DVC_DIR).is_dir()
assert repo.config["core"]["no_scm"]
def test_init_no_scm_cli(tmp_dir):
ret = main(["init", "--no-scm"])
assert ret == 0
dvc_path = tmp_dir / DvcRepo.DVC_DIR
assert dvc_path.is_dir()
assert Config(fspath(dvc_path))["core"]["no_scm"]
def test_init_quiet_should_not_display_welcome_screen(tmp_dir, scm, caplog):
with caplog.at_level(logging.INFO, logger="dvc"):
ret = main(["init", "--quiet"])
assert 0 == ret
assert "" == caplog.text
def test_allow_init_dvc_subdir(tmp_dir, scm, monkeypatch):
tmp_dir.gen({"subdir": {}})
with monkeypatch.context() as m:
m.chdir("subdir")
assert main(["init", "--subdir"]) == 0
repo = DvcRepo("subdir")
assert repo.root_dir == fspath(tmp_dir / "subdir")
assert repo.scm.root_dir == fspath(tmp_dir)
def test_subdir_init_no_option(tmp_dir, scm, monkeypatch, caplog):
tmp_dir.gen({"subdir": {}})
caplog.clear()
with monkeypatch.context() as m:
m.chdir("subdir")
with caplog.at_level(logging.ERROR, logger="dvc"):
assert main(["init"]) == 1
assert (
"{} is not tracked by any supported SCM tool (e.g. Git). "
"Use `--no-scm` if you don't want to use any SCM or "
"`--subdir` if initializing inside a subdirectory of a parent SCM "
"repository.".format(fspath(tmp_dir / "subdir"))
) in caplog.text