From 36c4a3a5af38121bc02911419683105d828e4ba3 Mon Sep 17 00:00:00 2001 From: Ivan Shcheklein Date: Sat, 9 Feb 2019 19:00:40 -0800 Subject: [PATCH] add metrics tests --- tests/test_metrics.py | 33 +++++++++++++++++++++++++++------ tests/test_run.py | 18 +++++++++++++++++- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/tests/test_metrics.py b/tests/test_metrics.py index c76704518..ce3d088f1 100644 --- a/tests/test_metrics.py +++ b/tests/test_metrics.py @@ -359,7 +359,7 @@ class TestNoMetrics(TestDvc): class TestCachedMetrics(TestDvc): - def _do_write(self, branch): + def _do_add(self, branch): self.dvc.scm.checkout(branch) self.dvc.checkout(force=True) @@ -369,20 +369,35 @@ class TestCachedMetrics(TestDvc): stages = self.dvc.add("metrics.json") self.assertEqual(len(stages), 1) stage = stages[0] - self.assertNotEqual(stage, None) + self.assertIsNotNone(stage) self.dvc.scm.add([".gitignore", "metrics.json.dvc"]) self.dvc.scm.commit(branch) - def test(self): + def _do_run(self, branch): + self.dvc.scm.checkout(branch) + self.dvc.checkout(force=True) + + content = json.dumps({"metrics": branch}) + stage = self.dvc.run( + metrics=["metrics.json"], + cmd="echo '{content}' > metrics.json".format(content=content), + ) + self.assertIsNotNone(stage) + self.assertEqual(stage.relpath, "metrics.json.dvc") + + self.dvc.scm.add([".gitignore", "metrics.json.dvc"]) + self.dvc.scm.commit(branch) + + def _test_metrics(self, func): self.dvc.scm.commit("init") self.dvc.scm.branch("one") self.dvc.scm.branch("two") - self._do_write("master") - self._do_write("one") - self._do_write("two") + func("master") + func("one") + func("two") self.dvc = Project(".") @@ -398,3 +413,9 @@ class TestCachedMetrics(TestDvc): "two": {"metrics.json": ["two"]}, }, ) + + def test_add(self): + self._test_metrics(self._do_add) + + def test_run(self): + self._test_metrics(self._do_run) diff --git a/tests/test_run.py b/tests/test_run.py index d68ce88de..5e6355500 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -50,7 +50,7 @@ class TestRun(TestDvc): self.assertTrue(stage.path, fname) with self.assertRaises(OutputDuplicationError): - stage = self.dvc.run( + self.dvc.run( cmd=cmd, deps=deps, outs=outs, @@ -530,6 +530,22 @@ class TestCmdRunOverwrite(TestDvc): self.assertNotEqual(stage_mtime, os.path.getmtime("out.dvc")) +class TestCmdRunCliMetrics(TestDvc): + def test_cached(self): + ret = main( + ["run", "-m", "metrics.txt", "echo -n 'test' > metrics.txt"] + ) + self.assertEqual(ret, 0) + self.assertEqual(open("metrics.txt", "r").read(), "test") + + def test_not_cached(self): + ret = main( + ["run", "-M", "metrics.txt", "echo -n 'test' > metrics.txt"] + ) + self.assertEqual(ret, 0) + self.assertEqual(open("metrics.txt", "r").read(), "test") + + class TestRunDeterministicBase(TestDvc): def setUp(self): super(TestRunDeterministicBase, self).setUp()