Files
dvc/tests/unit/scm/test_scm.py
T
Saugat Pachhai 3741f730e0 show git-add hint on stage:add, refactor scm_context (#5290)
* Refactor scm_context, show git-add hint on stage:add

* move tests
2021-01-24 22:43:38 +02:00

62 lines
1.7 KiB
Python

import pytest
from dvc.repo.scm_context import scm_context
from dvc.scm import NoSCM
def test_scm_context(dvc, mocker):
scm = dvc.scm
m = mocker.patch.object(
scm, "track_file_changes", wraps=scm.track_file_changes
)
ret_val = 0
wrapped = scm_context(mocker.Mock(return_value=ret_val))
assert wrapped(dvc) == ret_val
m.assert_called_once_with(config=dvc.config)
def test_track_file_changes(mocker):
scm = mocker.Mock(NoSCM)
with NoSCM.track_file_changes(scm):
pass
assert scm.reset_ignores.call_count == 1
assert scm.remind_to_track.call_count == 1
assert scm.track_changed_files.call_count == 0
assert scm.cleanup_ignores.call_count == 0
assert scm.reset_tracked_files.call_count == 1
def test_track_file_changes_autostage(mocker):
scm = mocker.Mock(NoSCM)
config = {"core": {"autostage": True}}
with NoSCM.track_file_changes(scm, config=config):
pass
assert scm.track_changed_files.call_count == 1
assert scm.reset_ignores.call_count == 1
assert scm.remind_to_track.call_count == 0
assert scm.cleanup_ignores.call_count == 0
assert scm.reset_tracked_files.call_count == 1
def test_track_file_changes_throw_and_cleanup(mocker):
scm = mocker.Mock(NoSCM)
class CustomException(Exception):
pass
with pytest.raises(CustomException, match="oops"):
with NoSCM.track_file_changes(scm):
raise CustomException("oops")
assert scm.cleanup_ignores.call_count == 1
assert scm.reset_ignores.call_count == 0
assert scm.track_changed_files.call_count == 0
assert scm.remind_to_track.call_count == 0
assert scm.reset_tracked_files.call_count == 0