[devtools] make a copy of the xvfb-run script so we can kill it properly
Since changeset a3d3bdd46463 we don't run firefox directly but through a
wrapper script. This meant that on stopping the test, we would kill
that wrapper script but leave the Xvfb server and firefox processes
running. So make a local copy of xvfb-run, and make it kill Xvfb when
it goes down, not just when its client exits.
try:
rtype, = __args__
except ValueError:
print 'USAGE: cubicweb-ctl shell <instance> detect_cycle.py -- <relation type>'
print
graph = {}
for fromeid, toeid in rql('Any X,Y WHERE X %s Y' % rtype):
graph.setdefault(fromeid, []).append(toeid)
from logilab.common.graph import get_cycles
for cycle in get_cycles(graph):
print 'cycle', '->'.join(str(n) for n in cycle)