| |
@@ -185,10 +185,11 @@
|
| |
"direct_dependencies": [],
|
| |
"remote_dependencies": [],
|
| |
"problematic_since": None,
|
| |
- "dot_graph": ""
|
| |
+ "dot_graph": "",
|
| |
+ "vis_js": {"nodes": [], "edges": []}
|
| |
}
|
| |
|
| |
- paths = self.g.get_all_simple_paths(self.pimap[p], self.ileafs)
|
| |
+ paths = [_ for _ in self.g.get_shortest_paths(self.pimap[p], self.ileafs) if len(_) >= 2]
|
| |
direct_deps = list(set([self.ipmap[l[-1]] for l in paths if len(l) == 2]))
|
| |
remote_deps = list(set([self.ipmap[l[-1]] for l in paths if len(l) > 2]))
|
| |
|
| |
@@ -204,13 +205,24 @@
|
| |
for path in paths:
|
| |
dot_graph += ' -- '.join('"%s"' % self.ipmap[i] for i in path) + ";\n"
|
| |
|
| |
+ _nodes = set()
|
| |
+ _edges = set()
|
| |
+ for path in paths:
|
| |
+ _nodes.update(path)
|
| |
+ for i in range(len(path)-1):
|
| |
+ _edges.add(tuple(path[i:i+2]))
|
| |
+
|
| |
+ nodes = [{'id': n, 'label': self.ipmap[n]} for n in _nodes]
|
| |
+ edges = [{'from': e[0], 'to': e[1]} for e in _edges]
|
| |
+
|
| |
return {
|
| |
"orphaned": p in self.orphans_data["status_change"].keys(),
|
| |
"depends_on_orphaned": bool(len(self.orphans_data["affected_packages"][p])),
|
| |
"direct_dependencies": direct_deps,
|
| |
"remote_dependencies": remote_deps,
|
| |
"problematic_since": problematic_since,
|
| |
- "dot_graph": dot_graph.strip()
|
| |
+ "dot_graph": dot_graph.strip(),
|
| |
+ "vis_js": {'nodes': nodes, 'edges': edges},
|
| |
}
|
| |
|
| |
def get_orphans(packages, orphans_data=None):
|
| |
@@ -710,7 +722,8 @@
|
| |
"direct_dependencies": [],
|
| |
"remote_dependencies": [],
|
| |
"problematic_since": None,
|
| |
- "dot_graph": ""
|
| |
+ "dot_graph": "",
|
| |
+ "vis_js": {"nodes": [], "edges": []}
|
| |
}
|
| |
assert out["Z"] == o_z
|
| |
|
| |
@@ -721,7 +734,8 @@
|
| |
"direct_dependencies": [],
|
| |
"remote_dependencies": [],
|
| |
"problematic_since": '2020-01-01T00:00:03',
|
| |
- "dot_graph": ""
|
| |
+ "dot_graph": "",
|
| |
+ "vis_js": {"nodes": [], "edges": []}
|
| |
}
|
| |
assert out["F"] == o_f
|
| |
|
| |
@@ -734,7 +748,9 @@
|
| |
"problematic_since": '2020-01-01T00:00:00'
|
| |
}
|
| |
dg = sorted(out["A"]["dot_graph"].split('\n'))
|
| |
+ vis_js = out["A"]["vis_js"]
|
| |
del(out["A"]["dot_graph"])
|
| |
+ del(out["A"]["vis_js"])
|
| |
|
| |
out["A"]["remote_dependencies"].sort()
|
| |
assert out["A"] == o_a
|
| |
@@ -742,13 +758,23 @@
|
| |
o_dg = sorted([
|
| |
'"A" -- "B" -- "C";',
|
| |
'"A" -- "B" -- "D";',
|
| |
- '"A" -- "B" -- "D" -- "E";',
|
| |
'"A" -- "B" -- "E";',
|
| |
'"A" -- "F";'
|
| |
])
|
| |
assert o_dg == dg
|
| |
|
| |
+ assert len(vis_js.keys()) == 2
|
| |
+ assert 'nodes' in vis_js.keys()
|
| |
+ assert 'edges' in vis_js.keys()
|
| |
+
|
| |
+ nodes = sorted([(n['id'], n['label']) for n in vis_js['nodes']])
|
| |
+ assert nodes == [(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D'), (4, 'E'), (5, 'F')]
|
| |
+
|
| |
+ edges = sorted([(e['from'], e['to']) for e in vis_js['edges']])
|
| |
+ assert edges == [(0, 1), (0, 5), (1, 2), (1, 3), (1, 4)]
|
| |
+
|
| |
print("OK")
|
| |
|
| |
|
| |
test_orphans()
|
| |
+
|
| |