Coverage for test/end2end/test_padatious.py: 100%
47 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 TestPadatiousIntent(TestCase):
12 def setUp(self):
13 LOG.set_level("DEBUG")
14 self.skill_id = "ovos-skill-hello-world.openvoiceos"
15 self.minicroft = get_minicroft([self.skill_id])
17 def tearDown(self):
18 if self.minicroft:
19 self.minicroft.stop()
20 LOG.set_level("CRITICAL")
22 def test_padatious_match(self):
23 session = Session("123")
24 session.lang = "en-US"
25 session.pipeline = ["ovos-padatious-pipeline-plugin-high"]
26 message = Message("recognizer_loop:utterance",
27 {"utterances": ["good morning"], "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)]
33 test = End2EndTest(
34 minicroft=self.minicroft,
35 skill_ids=[self.skill_id],
36 source_message=message,
37 final_session=final_session,
38 activation_points=[f"{self.skill_id}:Greetings.intent"],
39 # keep_original_src=[f"{self.skill_id}.activate"], # TODO
40 expected_messages=[
41 message,
42 Message(f"{self.skill_id}.activate",
43 data={},
44 context={"skill_id": self.skill_id}),
45 Message(f"{self.skill_id}:Greetings.intent",
46 data={"utterance": "good morning", "lang": session.lang},
47 context={"skill_id": self.skill_id}),
48 Message("mycroft.skill.handler.start",
49 data={"name": "HelloWorldSkill.handle_greetings"},
50 context={"skill_id": self.skill_id}),
51 Message("speak",
52 data={"lang": session.lang,
53 "expect_response": False,
54 "meta": {
55 "dialog": "hello",
56 "data": {},
57 "skill": self.skill_id
58 }},
59 context={"skill_id": self.skill_id}),
60 Message("mycroft.skill.handler.complete",
61 data={"name": "HelloWorldSkill.handle_greetings"},
62 context={"skill_id": self.skill_id}),
63 Message("ovos.utterance.handled",
64 data={},
65 context={"skill_id": self.skill_id}),
66 ]
67 )
69 test.execute(timeout=10)
71 def test_skill_blacklist(self):
72 session = Session("123")
73 session.lang = "en-US"
74 session.pipeline = ["ovos-padatious-pipeline-plugin-high"]
75 session.blacklisted_skills = [self.skill_id]
76 message = Message("recognizer_loop:utterance",
77 {"utterances": ["good morning"], "lang": session.lang},
78 {"session": session.serialize(), "source": "A", "destination": "B"})
80 test = End2EndTest(
81 minicroft=self.minicroft,
82 skill_ids=[self.skill_id],
83 source_message=message,
84 final_session=session,
85 expected_messages=[
86 message,
87 Message("mycroft.audio.play_sound", {"uri": "snd/error.mp3"}),
88 Message("complete_intent_failure", {}),
89 Message("ovos.utterance.handled", {})
90 ]
91 )
93 test.execute(timeout=10)
95 def test_intent_blacklist(self):
96 session = Session("123")
97 session.lang = "en-US"
98 session.pipeline = ["ovos-padatious-pipeline-plugin-high"]
99 session.blacklisted_intents = [f"{self.skill_id}:Greetings.intent"]
100 message = Message("recognizer_loop:utterance",
101 {"utterances": ["good morning"], "lang": session.lang},
102 {"session": session.serialize(), "source": "A", "destination": "B"})
104 test = End2EndTest(
105 minicroft=self.minicroft,
106 skill_ids=[self.skill_id],
107 source_message=message,
108 final_session=session,
109 expected_messages=[
110 message,
111 Message("mycroft.audio.play_sound", {"uri": "snd/error.mp3"}),
112 Message("complete_intent_failure", {}),
113 Message("ovos.utterance.handled", {})
114 ]
115 )
117 test.execute(timeout=10)
119 def test_adapt_no_match(self):
120 session = Session("123")
121 session.lang = "en-US"
122 session.pipeline = ['ovos-adapt-pipeline-plugin-high']
123 message = Message("recognizer_loop:utterance",
124 {"utterances": ["good morning"], "lang": session.lang},
125 {"session": session.serialize(), "source": "A", "destination": "B"})
127 test = End2EndTest(
128 minicroft=self.minicroft,
129 skill_ids=[self.skill_id],
130 source_message=message,
131 final_session=session,
132 expected_messages=[
133 message,
134 Message("mycroft.audio.play_sound", {"uri": "snd/error.mp3"}),
135 Message("complete_intent_failure", {}),
136 Message("ovos.utterance.handled", {})
137 ]
138 )
140 test.execute(timeout=10)