git-hook: don't run when not in dvc repo (#4091)

Related to #4073
This commit is contained in:
Ruslan Kuprieiev
2020-06-23 16:32:28 +03:00
committed by GitHub
parent b3d72e11fe
commit efcf4e3312
2 changed files with 23 additions and 2 deletions
+2 -2
View File
@@ -28,7 +28,7 @@ class CmdPreCommit(CmdHookBase):
class CmdPostCheckout(CmdHookBase):
def run(self):
def _run(self):
# when we are running from pre-commit tool, it doesn't provide CLI
# flags, but instead provides respective env vars that we could use.
flag = os.environ.get("PRE_COMMIT_CHECKOUT_TYPE")
@@ -52,7 +52,7 @@ class CmdPostCheckout(CmdHookBase):
class CmdPrePush(CmdHookBase):
def run(self):
def _run(self):
from dvc.main import main
return main(["push"])
+21
View File
@@ -0,0 +1,21 @@
import pytest
from dvc.cli import parse_args
from dvc.command.git_hook import CmdPostCheckout, CmdPreCommit, CmdPrePush
@pytest.mark.parametrize(
"hook, cls",
[
("pre-commit", CmdPreCommit),
("post-checkout", CmdPostCheckout),
("pre-push", CmdPrePush),
],
)
def test_out_of_repo(tmp_dir, hook, cls, mocker):
cli_args = parse_args(["git-hook", hook])
cli_args.func == cls
cmd = cli_args.func(cli_args)
mock_main = mocker.patch("dvc.main.main")
assert cmd.run() == 0
assert not mock_main.called