Coverage for test/end2end/test_no_skills.py: 100%
20 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
3from ovos_bus_client.message import Message
4from ovos_utils.log import LOG
6from ovoscope import End2EndTest, get_minicroft
9class TestNoSkills(TestCase):
11 def setUp(self):
12 LOG.set_level("DEBUG")
13 self.minicroft = get_minicroft([]) # reuse for speed, but beware if skills keeping internal state
15 def tearDown(self):
16 if self.minicroft:
17 self.minicroft.stop()
18 LOG.set_level("CRITICAL")
20 def test_complete_failure(self):
21 message = Message("recognizer_loop:utterance",
22 {"utterances": ["hello world"]})
24 test = End2EndTest(
25 minicroft=self.minicroft,
26 skill_ids=[],
27 eof_msgs=["ovos.utterance.handled"],
28 flip_points=["recognizer_loop:utterance"],
29 source_message=message,
30 expected_messages=[
31 message,
32 Message("mycroft.audio.play_sound", {"uri": "snd/error.mp3"}),
33 Message("complete_intent_failure", {}),
34 Message("ovos.utterance.handled", {}),
35 ]
36 )
38 test.execute()
40 def test_routing(self):
41 # this test will validate source and destination are handled properly
42 # done automatically if "source" and "destination" are in message.context
43 message = Message("recognizer_loop:utterance",
44 {"utterances": ["hello world"]},
45 {"source": "A", "destination": "B"})
47 test = End2EndTest(
48 minicroft=self.minicroft,
49 skill_ids=[],
50 eof_msgs=["ovos.utterance.handled"],
51 flip_points=["recognizer_loop:utterance"],
52 source_message=message,
53 expected_messages=[
54 message,
55 Message("mycroft.audio.play_sound", {"uri": "snd/error.mp3"}),
56 Message("complete_intent_failure", {}),
57 Message("ovos.utterance.handled", {}),
58 ]
59 )
61 test.execute()