pipelines: fix edges gathering (#3421)

This commit is contained in:
Ruslan Kuprieiev
2020-03-05 14:16:57 +02:00
committed by GitHub
parent 05cc023164
commit 06c634adee
2 changed files with 27 additions and 1 deletions
+1 -1
View File
@@ -61,7 +61,7 @@ class CmdPipelineShow(CmdBase):
for out in stage.outs:
edges.append((str(out), str(dep)))
else:
for from_stage, to_stage in networkx.dfs_edges(G, target_stage):
for from_stage, to_stage in networkx.edge_dfs(G, target_stage):
if commands:
if to_stage.cmd is None:
continue
+26
View File
@@ -237,3 +237,29 @@ class TestDvcRepoPipeline(TestDvc):
pipelines = self.dvc.pipelines
self.assertEqual(len(pipelines), 0)
def test_split_pipeline(tmp_dir, dvc):
tmp_dir.dvc_gen("data", "source file content")
dvc.run(
deps=["data"],
outs=["data_train", "data_valid"],
cmd="echo train >> data_train && echo valid >> data_valid",
)
stage = dvc.run(
deps=["data_train", "data_valid"],
outs=["result"],
cmd="echo result >> result",
)
command = CmdPipelineShow([])
nodes, edges, is_tree = command._build_graph(
stage.path, commands=False, outs=True
)
assert set(nodes) == {"data", "data_train", "data_valid", "result"}
assert set(edges) == {
("result", "data_train"),
("result", "data_valid"),
("data_train", "data"),
("data_valid", "data"),
}