Coverage for test/end2end/test_fallback.py: 100%
23 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-17 13:44 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-17 13:44 +0000
1from unittest import TestCase
2from copy import deepcopy
3from ovos_bus_client.message import Message
4from ovos_bus_client.session import Session
5from ovos_utils.log import LOG
7from ovoscope import End2EndTest, get_minicroft
10class TestFallback(TestCase):
12 def setUp(self):
13 LOG.set_level("DEBUG")
14 self.skill_id = "ovos-skill-fallback-unknown.openvoiceos"
15 self.minicroft = get_minicroft([self.skill_id]) # reuse for speed, but beware if skills keeping internal state
17 def tearDown(self):
18 if self.minicroft:
19 self.minicroft.stop()
20 LOG.set_level("CRITICAL")
22 def test_fallback_match(self):
23 session = Session("123")
24 session.lang = "en-US"
25 session.pipeline = ['ovos-fallback-pipeline-plugin-low']
26 message = Message("recognizer_loop:utterance",
27 {"utterances": ["hello world"], "lang": session.lang},
28 {"session": session.serialize(), "source": "A", "destination": "B"})
30 final_session = deepcopy(session)
31 # final_session.active_skills = [(self.skill_id, 0.0)] # TODO - failing
34 test = End2EndTest(
35 minicroft=self.minicroft,
36 skill_ids=[self.skill_id],
37 final_session=final_session,
38 keep_original_src=[
39 "ovos.skills.fallback.ping",
40 # "ovos.skills.fallback.pong", # TODO
41 ],
42 activation_points=[f"ovos.skills.fallback.{self.skill_id}.request"],
43 source_message=message,
44 expected_messages=[
45 message,
46 Message("ovos.skills.fallback.ping",
47 {"utterances": ["hello world"], "lang": session.lang, "range": [90, 101]}),
48 Message("ovos.skills.fallback.pong", {"skill_id": self.skill_id, "can_handle": True}),
49 Message(f"ovos.skills.fallback.{self.skill_id}.request",
50 {"utterances": ["hello world"], "lang": session.lang, "range": [90, 101], "skill_id": self.skill_id}),
51 Message(f"ovos.skills.fallback.{self.skill_id}.start", {}),
52 Message("speak",
53 data={"lang": session.lang,
54 "expect_response": False,
55 "meta": {
56 "dialog": "unknown",
57 "data": {},
58 "skill": self.skill_id
59 }},
60 context={"skill_id": self.skill_id}),
61 Message(f"ovos.skills.fallback.{self.skill_id}.response",
62 data={"fallback_handler":"UnknownSkill.handle_fallback"},
63 context={"skill_id": self.skill_id}),
65 Message("ovos.utterance.handled", {})
66 ]
67 )
69 test.execute(timeout=10)