mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
test: improve coverage and fix bugs
Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
@@ -2,6 +2,8 @@ branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
platform: x86
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
|
||||
@@ -31,6 +33,10 @@ environment:
|
||||
# PYTHON_ARCH: "64"
|
||||
|
||||
install:
|
||||
- cinst graphviz
|
||||
- cinst wget
|
||||
- wget --no-check-certificate https://github.com/dpinney/omf/raw/master/omf/static/pygraphviz-1.3.1-cp27-none-win32.whl
|
||||
- pip install pygraphviz-1.3.1-cp27-none-win32.whl
|
||||
- pip install -r requirements.txt
|
||||
- python setup.py install
|
||||
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
import os
|
||||
|
||||
from dvc.project import Project
|
||||
from dvc.logger import Logger
|
||||
from dvc.exceptions import DvcException
|
||||
|
||||
|
||||
class CmdBase(object):
|
||||
def __init__(self, args):
|
||||
self.project = Project(self._find_root())
|
||||
self.args = args
|
||||
|
||||
if args.quiet and not args.verbose:
|
||||
self.project.logger.be_quiet()
|
||||
elif not args.quiet and args.verbose:
|
||||
self.project.logger.be_verbose()
|
||||
|
||||
self.project = Project(self._find_root())
|
||||
self.args = args
|
||||
|
||||
def _find_root(self):
|
||||
root = os.getcwd()
|
||||
while not os.path.ismount(root):
|
||||
@@ -21,7 +23,7 @@ class CmdBase(object):
|
||||
return root
|
||||
root = os.path.dirname(root)
|
||||
msg = "Not a dvc repository (or any parent up to mount point {})"
|
||||
self.project.logger.error(msg.format(root))
|
||||
raise DvcException(msg.format(root))
|
||||
|
||||
def run_cmd(self):
|
||||
with self.project.lock:
|
||||
|
||||
@@ -12,7 +12,7 @@ class CmdShowPipeline(CmdBase):
|
||||
A.write(fname + '.dot')
|
||||
A.draw(fname + '.jpeg', format='jpeg', prog='dot')
|
||||
except Exception as exc:
|
||||
Logger.error('Failed to draw dependency graph for {}: {}'.format(target, exc))
|
||||
self.project.logger.error('Failed to draw dependency graph for {}: {}'.format(target, exc))
|
||||
return 1
|
||||
|
||||
return 0
|
||||
@@ -22,7 +22,7 @@ class CmdShowPipeline(CmdBase):
|
||||
if fname in s.nodes():
|
||||
return s
|
||||
|
||||
return self.g
|
||||
return None
|
||||
|
||||
def draw_targets(self, target):
|
||||
if not target:
|
||||
|
||||
+9
-1
@@ -1,5 +1,13 @@
|
||||
from dvc.logger import Logger
|
||||
from dvc.cli import parse_args
|
||||
|
||||
def main(argv=None):
|
||||
args = parse_args(argv)
|
||||
return args.func(args).run_cmd()
|
||||
|
||||
try:
|
||||
cmd = args.func(args)
|
||||
except Exception as ex:
|
||||
Logger.error('Initialization error: {}'.format(str(ex)))
|
||||
return 255
|
||||
|
||||
return cmd.run_cmd()
|
||||
|
||||
@@ -94,3 +94,4 @@ pyyaml==3.12
|
||||
tinydb==3.7.0
|
||||
gitpython==2.1.8
|
||||
ntfsutils==0.1.3
|
||||
pygraphviz==1.3.1
|
||||
|
||||
@@ -99,6 +99,7 @@ install_requires = [
|
||||
'tinydb==3.7.0',
|
||||
'gitpython==2.1.8',
|
||||
'ntfsutils==0.1.3',
|
||||
'pygraphviz==1.3.1',
|
||||
]
|
||||
|
||||
if platform.system() == 'Darwin':
|
||||
|
||||
+20
-15
@@ -3,30 +3,35 @@ import stat
|
||||
import shutil
|
||||
import filecmp
|
||||
|
||||
from dvc.main import main
|
||||
from dvc.data_cloud import file_md5
|
||||
from dvc.stage import Stage, OutputNoCacheError, OutputOutsideOfRepoError
|
||||
from dvc.stage import OutputDoesNotExistError, OutputIsNotFileError
|
||||
from dvc.project import StageNotFoundError
|
||||
|
||||
from tests.basic_env import TestDvc
|
||||
from tests.test_repro import TestRepro
|
||||
|
||||
|
||||
class TestCheckout(TestDvc):
|
||||
def test_checkout(self):
|
||||
cmd = 'python {} {} {}'.format(self.CODE, self.FOO, 'out')
|
||||
deps = [self.FOO, self.CODE]
|
||||
outs = [os.path.join(self.dvc.root_dir, 'out')]
|
||||
outs_no_cache = []
|
||||
locked = False
|
||||
fname = os.path.join(self.dvc.root_dir, 'out.dvc')
|
||||
cwd = os.curdir
|
||||
class TestCheckout(TestRepro):
|
||||
def setUp(self):
|
||||
super(TestCheckout, self).setUp()
|
||||
|
||||
self.dvc.add(self.FOO)
|
||||
stage = self.dvc.run(cmd, deps, outs, outs_no_cache, locked, fname, cwd)
|
||||
|
||||
shutil.copy(self.FOO, 'orig')
|
||||
self.orig = 'orig'
|
||||
shutil.copy(self.FOO, self.orig)
|
||||
os.chmod(self.FOO, stat.S_IWRITE)
|
||||
os.unlink(self.FOO)
|
||||
|
||||
def test(self):
|
||||
self.dvc.checkout()
|
||||
self._test_checkout()
|
||||
|
||||
def _test_checkout(self):
|
||||
self.assertTrue(os.path.isfile(self.FOO))
|
||||
self.assertTrue(filecmp.cmp(self.FOO, 'orig'))
|
||||
self.assertTrue(filecmp.cmp(self.FOO, self.orig))
|
||||
|
||||
|
||||
class TestCmdCheckout(TestCheckout):
|
||||
def test(self):
|
||||
ret = main(['checkout'])
|
||||
self.assertEqual(ret, 0)
|
||||
self._test_checkout()
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
import os
|
||||
import pygraphviz
|
||||
|
||||
from dvc.main import main
|
||||
|
||||
from tests.test_repro import TestRepro
|
||||
|
||||
|
||||
class TestShowPipeline(TestRepro):
|
||||
def test_show(self):
|
||||
ret = main(['show',
|
||||
'pipeline'])
|
||||
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertTrue(os.path.isfile('pipeline_all.dot'))
|
||||
self.assertTrue(os.path.isfile('pipeline_all.jpeg'))
|
||||
|
||||
def test_target(self):
|
||||
base = 'pipeline_' + os.path.basename(self.file1_stage)
|
||||
ret = main(['show',
|
||||
'pipeline',
|
||||
self.file1_stage])
|
||||
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertTrue(os.path.isfile(base + '.dot'))
|
||||
self.assertTrue(os.path.isfile(base + '.jpeg'))
|
||||
|
||||
def test_non_existing_target(self):
|
||||
ret = main(['show',
|
||||
'pipeline',
|
||||
'non-existing-target'])
|
||||
|
||||
self.assertNotEqual(ret, 0)
|
||||
+11
-3
@@ -1,12 +1,15 @@
|
||||
from unittest import TestCase
|
||||
|
||||
from dvc.main import main
|
||||
from dvc.graph.workflow import Workflow,\
|
||||
CollapseDvcReproCommitsStrategy, CollapseNotMeticsCommitsStrategy
|
||||
from dvc.graph.commit import Commit
|
||||
|
||||
from tests.basic_env import TestDvc
|
||||
|
||||
class TestWorkflow(TestCase):
|
||||
|
||||
class TestWorkflow(TestDvc):
|
||||
def setUp(self):
|
||||
super(TestWorkflow, self).setUp()
|
||||
|
||||
self._commit4 = Commit('4', '3', 'name1', 'today', 'comment4')
|
||||
self._commit3 = Commit('3', '2', 'name1', 'today', 'DVC repro-run ...')
|
||||
self._commit2 = Commit('2', '1', 'name1', 'today', 'DVC repro-run ...')
|
||||
@@ -148,3 +151,8 @@ class TestWorkflow(TestCase):
|
||||
is_collapsed_commit_presented(self, wf._commits['3'], not_metric_commit2)
|
||||
is_collapsed_commit_presented(self, wf._commits['3'], self._commit1)
|
||||
pass
|
||||
|
||||
def test_cli(self):
|
||||
ret = main(['show',
|
||||
'workflow'])
|
||||
self.assertEqual(ret, 0)
|
||||
|
||||
Reference in New Issue
Block a user