Files
dvc/tests/unit/scm/test_scm.py
T
Andrew Grigorev 7d79043bbb dvc.scm.scm_context -> dvc.repo.scm_context.scm_context
The `dvc/scm/__init__.py:scm_context` works with `Repo` objects and
is used mostly in `dvc/repo/...`, so it is better to put it in
`dvc/repo/scm_context.py`.

Fix #1769
2019-03-22 19:53:41 +03:00

38 lines
1.2 KiB
Python

from dvc.repo import Repo
from dvc.repo.scm_context import scm_context
from dvc.scm import NoSCM
from unittest import TestCase
import mock
class TestScmContext(TestCase):
def setUp(self):
self.repo_mock = mock.Mock(spec=Repo)
self.scm_mock = mock.Mock(spec=NoSCM)
self.repo_mock.scm = self.scm_mock
def test_should_successfully_perform_method(self):
method = mock.Mock()
wrapped = scm_context(method)
wrapped(self.repo_mock)
self.assertEqual(1, method.call_count)
self.assertEqual(1, self.scm_mock.reset_ignores.call_count)
self.assertEqual(1, self.scm_mock.remind_to_track.call_count)
self.assertEqual(0, self.scm_mock.cleanup_ignores.call_count)
def test_should_throw_and_cleanup(self):
method = mock.Mock(side_effect=Exception("some problem"))
wrapped = scm_context(method)
with self.assertRaises(Exception):
wrapped(self.repo_mock)
self.assertEqual(1, method.call_count)
self.assertEqual(1, self.scm_mock.cleanup_ignores.call_count)
self.assertEqual(0, self.scm_mock.reset_ignores.call_count)
self.assertEqual(0, self.scm_mock.remind_to_track.call_count)