@@ -88,11 +88,18 @@ def skill_stop_lifecycle(skill_id):
8888 return [
8989 Message ("stop.openvoiceos.activate" , {},
9090 {"skill_id" : "stop.openvoiceos" }),
91+ # §9.2 matched notification precedes the dispatch
92+ Message (INTENT_MATCHED ,
93+ {"skill_id" : "stop.openvoiceos" , "intent_name" : "stop:skill" },
94+ {"skill_id" : "stop.openvoiceos" }),
95+ # §8.1 orchestrator handler-start
96+ Message (HANDLER_START ,
97+ {"skill_id" : "stop.openvoiceos" , "intent_name" : "skill" },
98+ {"skill_id" : "stop.openvoiceos" }),
9199 Message ("stop:skill" ,
92100 {"skill_id" : skill_id },
93101 {"skill_id" : "stop.openvoiceos" }),
94- # StopService wraps handle_skill_stop in HandlerLifecycle (the framework
95- # done-signal trio the orchestrator translates into the §8 terminal)
102+ # StopService wraps handle_skill_stop in HandlerLifecycle (legacy done-signal)
96103 Message ("mycroft.skill.handler.start" ,
97104 {"name" : "StopService.handle_skill_stop" },
98105 {"skill_id" : "stop.openvoiceos" }),
@@ -101,27 +108,22 @@ def skill_stop_lifecycle(skill_id):
101108 Message ("mycroft.skill.handler.complete" ,
102109 {"name" : "StopService.handle_skill_stop" },
103110 {"skill_id" : "stop.openvoiceos" }),
104- # §9.5 end-marker
111+ # §8 orchestrator terminal + §9.5 end-marker
112+ Message (HANDLER_COMPLETE ,
113+ {"skill_id" : "stop.openvoiceos" , "intent_name" : "skill" },
114+ {"skill_id" : "stop.openvoiceos" }),
105115 Message (UTTERANCE_HANDLED , {},
106116 {"skill_id" : "stop.openvoiceos" }),
107117 ]
108118
109119
110120# Shared End2EndTest config for the skill-stop (ping-pong) scenarios: isolate the
111121# stop dispatch lifecycle and wait for BOTH utterances to terminate before filtering.
112- # The §8 SPEC trio (ovos.intent.matched/handler.start/handler.complete) is filtered:
113- # in these concurrent-lifecycle scenarios under heavy parallel load it is not
114- # reliably observed alongside the legacy done-signal, so it is asserted in the
115- # single-lifecycle adapt/padatious suites instead. The legacy mycroft.skill.handler
116- # done-signal trio (which the orchestrator translates into the §8 terminal) IS
117- # asserted above.
118122SKILL_STOP_LIFECYCLE_KWARGS = dict (
119123 skill_id = "stop.openvoiceos" ,
120124 eof_msgs = [UTTERANCE_HANDLED ],
121125 eof_count = 2 ,
122126 test_active_skills = False ,
123- ignore_messages = [INTENT_MATCHED , HANDLER_START , HANDLER_COMPLETE , HANDLER_ERROR ,
124- "ovos.skills.settings_changed" ],
125127)
126128
127129
@@ -398,6 +400,12 @@ def make_it_count():
398400 stop_skill_from_global = [
399401 Message ("stop.openvoiceos.activate" , {},
400402 {"skill_id" : "stop.openvoiceos" }),
403+ Message (INTENT_MATCHED ,
404+ {"skill_id" : "stop.openvoiceos" , "intent_name" : "stop:global" },
405+ {"skill_id" : "stop.openvoiceos" }),
406+ Message (HANDLER_START ,
407+ {"skill_id" : "stop.openvoiceos" , "intent_name" : "global" },
408+ {"skill_id" : "stop.openvoiceos" }),
401409 Message ("stop:global" , {},
402410 {"skill_id" : "stop.openvoiceos" }),
403411 Message ("mycroft.skill.handler.start" ,
@@ -408,15 +416,21 @@ def make_it_count():
408416 Message ("mycroft.skill.handler.complete" ,
409417 {"name" : "StopService.handle_global_stop" },
410418 {"skill_id" : "stop.openvoiceos" }),
419+ Message (HANDLER_COMPLETE ,
420+ {"skill_id" : "stop.openvoiceos" , "intent_name" : "global" },
421+ {"skill_id" : "stop.openvoiceos" }),
411422 Message (UTTERANCE_HANDLED , {},
412423 {"skill_id" : "stop.openvoiceos" }),
413424 ]
414425 test = End2EndTest (
415426 minicroft = minicroft ,
416427 skill_ids = [],
428+ skill_id = "stop.openvoiceos" ,
429+ eof_msgs = [UTTERANCE_HANDLED ],
430+ eof_count = 2 ,
431+ test_active_skills = False ,
417432 source_message = message ,
418433 expected_messages = stop_skill_from_global ,
419- ** SKILL_STOP_LIFECYCLE_KWARGS ,
420434 )
421435 test .execute ()
422436 finally :
0 commit comments