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

1from unittest import TestCase 

2 

3from ovos_bus_client.message import Message 

4from ovos_utils.log import LOG 

5 

6from ovoscope import End2EndTest, get_minicroft 

7 

8 

9class TestNoSkills(TestCase): 

10 

11 def setUp(self): 

12 LOG.set_level("DEBUG") 

13 self.minicroft = get_minicroft([]) # reuse for speed, but beware if skills keeping internal state 

14 

15 def tearDown(self): 

16 if self.minicroft: 

17 self.minicroft.stop() 

18 LOG.set_level("CRITICAL") 

19 

20 def test_complete_failure(self): 

21 message = Message("recognizer_loop:utterance", 

22 {"utterances": ["hello world"]}) 

23 

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 ) 

37 

38 test.execute() 

39 

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"}) 

46 

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 ) 

60 

61 test.execute()