From 891ec0bad4791aa44e3d0958e758aa1cc1dc8861 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 4 Aug 2018 19:27:34 +0300 Subject: [PATCH 1/6] test: cover metrics Signed-off-by: Ruslan Kuprieiev --- tests/test_metrics.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_metrics.py b/tests/test_metrics.py index b6e31d267..370a97a3b 100644 --- a/tests/test_metrics.py +++ b/tests/test_metrics.py @@ -110,6 +110,9 @@ class TestMetricsReproCLI(TestDvc): ret = main(['metrics', 'add', 'metrics']) self.assertEqual(ret, 0) + ret = main(['metrics', 'modify', '-t', 'csv', '-x', '0,0', 'metrics']) + self.assertEqual(ret, 0) + ret = main(['repro', '-f', '-m', stage.path]) self.assertEqual(ret, 0) @@ -195,6 +198,9 @@ class TestMetricsCLI(TestMetrics): ret = main(['metrics', 'add', 'non-existing']) self.assertNotEqual(ret, 0) + ret = main(['metrics', 'modify', 'non-existing']) + self.assertNotEqual(ret, 0) + ret = main(['metrics', 'remove', 'non-existing']) self.assertNotEqual(ret, 0) From b9a5bde22f3f539aa3b0b228b57db8a4aacb86ba Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 4 Aug 2018 19:34:09 +0300 Subject: [PATCH 2/6] test: cover status Signed-off-by: Ruslan Kuprieiev --- tests/test_repro.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_repro.py b/tests/test_repro.py index d1c79453a..a3f2fc3e8 100644 --- a/tests/test_repro.py +++ b/tests/test_repro.py @@ -245,8 +245,10 @@ class TestReproMissingMd5InStageFile(TestRepro): self.assertEqual(len(stages), 1) -class TestCmdRepro(TestRepro): +class TestCmdRepro(TestReproChangedData): def test(self): + self.swap_foo_with_bar() + ret = main(['status']) self.assertEqual(ret, 0) From e4137542dff929588395312b76acedbd96e27ead Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 4 Aug 2018 19:37:21 +0300 Subject: [PATCH 3/6] coverage: skip service lines Signed-off-by: Ruslan Kuprieiev --- .coveragerc | 1 + dvc/cli.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.coveragerc b/.coveragerc index 5a05ca875..4522fb86a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -7,3 +7,4 @@ exclude_lines = if __name__ == .__main__.: pass raise NotImplementedError + # pragma: no cover diff --git a/dvc/cli.py b/dvc/cli.py index 656157675..26574d0c7 100644 --- a/dvc/cli.py +++ b/dvc/cli.py @@ -34,7 +34,7 @@ def _fix_subparsers(subparsers): # More info at: # https://bugs.python.org/issue16308 # https://github.com/iterative/dvc/issues/769 - if sys.version_info[0] == 3: + if sys.version_info[0] == 3: # pragma: no cover subparsers.required = True subparsers.dest = 'cmd' From baac7a16bd138d515e2e4cde2335a3b5da145632 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 4 Aug 2018 19:38:06 +0300 Subject: [PATCH 4/6] lock: remove unused method init() Signed-off-by: Ruslan Kuprieiev --- dvc/lock.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dvc/lock.py b/dvc/lock.py index 81781975f..35a73dab6 100644 --- a/dvc/lock.py +++ b/dvc/lock.py @@ -17,10 +17,6 @@ class Lock(object): self.lock_file = os.path.join(dvc_dir, name) self._lock = None - @staticmethod - def init(dvc_dir): - return Lock(dvc_dir) - def _do_lock(self): try: self._lock = zc.lockfile.LockFile(self.lock_file) From 75a6352d3dc8177b758adb54731c2c4acd83ec28 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 4 Aug 2018 19:39:54 +0300 Subject: [PATCH 5/6] logger: don't cover tty code Signed-off-by: Ruslan Kuprieiev --- dvc/logger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dvc/logger.py b/dvc/logger.py index 2ecd6246a..51f707f17 100644 --- a/dvc/logger.py +++ b/dvc/logger.py @@ -62,7 +62,7 @@ class Logger(object): header = '' footer = '' - if sys.stdout.isatty(): + if sys.stdout.isatty(): # pragma: no cover header = Logger.COLOR_MAP.get(typ.lower(), '') footer = colorama.Style.RESET_ALL From b5b8b8d06c5a0a6bae0b022a38a3ad87097634b7 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 4 Aug 2018 19:51:21 +0300 Subject: [PATCH 6/6] test: test for unsupported outs/deps Signed-off-by: Ruslan Kuprieiev --- dvc/dependency/local.py | 2 +- tests/test_dependency.py | 10 ++++++++++ tests/test_output.py | 10 ++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/test_dependency.py create mode 100644 tests/test_output.py diff --git a/dvc/dependency/local.py b/dvc/dependency/local.py index e8de9f68b..c4ea5e9ba 100644 --- a/dvc/dependency/local.py +++ b/dvc/dependency/local.py @@ -13,7 +13,7 @@ from dvc.remote.local import RemoteLOCAL class DependencyLOCAL(DependencyBase): - REGEX = r'^(?P(/+|.:\\+)?.*)$' + REGEX = r'^(?P(/+|.:\\+)?[^:]*)$' DoesNotExistError = DependencyDoesNotExistError IsNotFileOrDirError = DependencyIsNotFileOrDirError diff --git a/tests/test_dependency.py b/tests/test_dependency.py new file mode 100644 index 000000000..57a6f75d0 --- /dev/null +++ b/tests/test_dependency.py @@ -0,0 +1,10 @@ +from dvc.dependency import _get +from dvc.exceptions import DvcException + +from tests.basic_env import TestDvc + + +class TestUnsupported(TestDvc): + def test(self): + with self.assertRaises(DvcException): + _get(None, 'unsupported://a/b', None) diff --git a/tests/test_output.py b/tests/test_output.py new file mode 100644 index 000000000..d391458da --- /dev/null +++ b/tests/test_output.py @@ -0,0 +1,10 @@ +from dvc.output import _get +from dvc.exceptions import DvcException + +from tests.basic_env import TestDvc + + +class TestUnsupported(TestDvc): + def test(self): + with self.assertRaises(DvcException): + _get(None, 'unsupported://a/b', None, None, None)