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

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 

6 

7from ovoscope import End2EndTest, get_minicroft 

8 

9 

10class TestFallback(TestCase): 

11 

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 

16 

17 def tearDown(self): 

18 if self.minicroft: 

19 self.minicroft.stop() 

20 LOG.set_level("CRITICAL") 

21 

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

29 

30 final_session = deepcopy(session) 

31 # final_session.active_skills = [(self.skill_id, 0.0)] # TODO - failing 

32 

33 

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

64 

65 Message("ovos.utterance.handled", {}) 

66 ] 

67 ) 

68 

69 test.execute(timeout=10)