{"initial":{"graph":{"plan":["build"],"build":[]}},"counterexample":{"graph":{"a":["b"],"b":["a"]}},"tests":[{"name":"acyclic","input":{"graph":{"plan":["build"],"build":[]}},"expected":{"pass":true,"summary":"Dependency graph is acyclic.","checks":[{"name":"adjacency lists","pass":true},{"name":"known dependencies","pass":true},{"name":"acyclic","pass":true}]}},{"name":"cycle","input":{"graph":{"a":["b"],"b":["a"]}},"expected":{"pass":false,"summary":"Dependency cycle: a -> b -> a.","checks":[{"name":"adjacency lists","pass":true},{"name":"known dependencies","pass":true},{"name":"acyclic","pass":false}]}},{"name":"self cycle boundary","input":{"graph":{"a":["a"]}},"expected":{"pass":false,"summary":"Dependency cycle: a -> a.","checks":[{"name":"adjacency lists","pass":true},{"name":"known dependencies","pass":true},{"name":"acyclic","pass":false}]}},{"name":"dangling dependency","input":{"graph":{"plan":["missing"]}},"expected":{"pass":false,"summary":"Unknown dependency: plan -> missing.","checks":[{"name":"adjacency lists","pass":true},{"name":"known dependencies","pass":false}]}}]}
