Skip to content

Commit

Permalink
fix: Allowing event without transition
Browse files Browse the repository at this point in the history
  • Loading branch information
fgmacedo committed Nov 27, 2024
1 parent efc2d8a commit ed35933
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 4 deletions.
6 changes: 2 additions & 4 deletions statemachine/io/scxml.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ def __init__(
state_field: str = "state",
start_value: Any = None,
rtc: bool = True,
allow_event_without_transition: bool = False,
allow_event_without_transition: bool = True,
listeners: "List[object] | None" = None,
):
model = model if model else Model()
Expand Down Expand Up @@ -370,9 +370,7 @@ def _parse_state(state_elem, final=False): # noqa: C901
for state_elem in scxml.findall(".//final"):
_parse_state(state_elem, final=True)

extra_data = {
"allow_event_without_transition": True,
}
extra_data = {}

# To initialize the data model, we override the SM __init__ method
datamodel = scxml.find("datamodel")
Expand Down
34 changes: 34 additions & 0 deletions tests/w3c_tests/testcases/test156.scxml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- test that an error causes the foreach to stop execution. The second piece of executable content
should cause an error, so var1 should be incremented only once -->
<scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance"
initial="s0" version="1.0" datamodel="ecmascript">
<datamodel>
<data id="Var1" expr="0" />
<data id="Var2" />
<data id="Var3">
[1,2,3]
</data>
</datamodel>
<state id="s0">
<onentry>
<foreach item="Var2" array="Var3">
<assign location="Var1" expr="Var1 + 1" />
<!-- assign an illegal value to a non-existent var -->
<assign location="Var5" expr="return" />
</foreach>
</onentry>
<transition cond="Var1==1" target="pass" />
<transition target="fail" />
</state>
<final id="pass">
<onentry>
<log label="Outcome" expr="'pass'" />
</onentry>
</final>
<final id="fail">
<onentry>
<log label="Outcome" expr="'fail'" />
</onentry>
</final>
</scxml>

0 comments on commit ed35933

Please sign in to comment.