use super::{build_dependency_graph, metadata};
use petgraph::{
dot::{Config, Dot},
Graph,
};
use serde_json;
use tests::run_test;
#[test]
fn test_build_dependency_graph() {
run_test("test_build_dependency_graph", || {
let (dependencies, _features) = build_dependency_graph();
let dependencies_json = serde_json::to_string(&dependencies).unwrap();
info!("dependency graph : {}", dependencies_json);
let dependencies2: Graph<metadata::PackageId, metadata::dependency::Kind> =
serde_json::from_str(&dependencies_json).unwrap();
assert_eq!(
Dot::with_config(&dependencies, &[Config::EdgeNoLabel]).to_string(),
Dot::with_config(&dependencies2, &[Config::EdgeNoLabel]).to_string()
);
info!(
"dependency Graphviz Dot diagram: {:?}",
Dot::with_config(
&dependencies.map(
|_, node| format!("{}-{}", node.name().to_string(), node.version()),
|_, edge| *edge
),
&[Config::EdgeNoLabel]
)
);
});
}