From 46145e80ec64f4941469debb8310be37fba69ded Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Sun, 25 Mar 2018 01:02:35 +0100 Subject: contrib/fsm-to-dot: allow transition from and to the same state In osmo-bsc's new gscon FSM, there is an osmo_fsm_inst_state_chg() from ST_ACTIVE to ST_ACTIVE. Avoid an exception triggering on this simple fact. Change-Id: I420c7be84e3af555cc5e8bddbff7261013348375 --- contrib/fsm-to-dot.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'contrib') diff --git a/contrib/fsm-to-dot.py b/contrib/fsm-to-dot.py index 3e9678d3..276fccc9 100755 --- a/contrib/fsm-to-dot.py +++ b/contrib/fsm-to-dot.py @@ -205,9 +205,11 @@ class State: out_edge.add_events(edge.events) out_edge.add_actions(edge.actions) return - # sanity - if out_edge.to_state.get_label() == edge.to_state.get_label(): - raise Exception('Two distinct states exist with identical labels.') + elif out_edge.to_state.get_label() == edge.to_state.get_label(): + # sanity: there already is an edge to a state that a) is not identical to the target state of the + # newly added edge but b) has the same label. + raise Exception('Two distinct states exist with identical label: %r: states %r and %r.' + % (out_edge.to_state.get_label(), out_edge.to_state, edge.to_state)) state.out_edges.append(edge) def get_label(state): -- cgit v1.2.3