summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-03-25 01:02:35 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2018-03-26 13:03:19 +0000
commit46145e80ec64f4941469debb8310be37fba69ded (patch)
treeddd870cf553057b5419f82fff84388ff0d295416 /contrib
parent167f808d7641f2a23f247cb1f66ec93d026ca366 (diff)
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
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/fsm-to-dot.py8
1 files changed, 5 insertions, 3 deletions
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):