Skip to content

Commit 0fdaca0

Browse files
committed
test converse
1 parent 433fc05 commit 0fdaca0

File tree

4 files changed

+111
-2
lines changed

4 files changed

+111
-2
lines changed

requirements/skills-audio.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@
22
ovos-skill-boot-finished>=0.4.8,<1.0.0
33
ovos-skill-audio-recording>=0.2.4,<1.0.0
44
ovos-skill-dictation>=0.2.5,<1.0.0
5-
ovos-skill-parrot>=0.1.9,<1.0.0
65
ovos-skill-volume>=0.1.16,<1.0.0
76
ovos-skill-naptime>=0.3.15,<1.0.0

requirements/skills-essential.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ ovos-skill-date-time>=1.1.3,<2.0.0
66
ovos-skill-hello-world>=0.1.10,<1.0.0
77
ovos-skill-spelling>=0.2.5,<1.0.0
88
ovos-skill-diagnostics>=0.0.2,<1.0.0
9+
ovos-skill-parrot>=0.1.25,<1.0.0

requirements/tests.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ pytest-cov>=2.8.1
55
pytest-testmon>=2.1.3
66
pytest-randomly>=3.16.0
77
cov-core>=1.15.0
8-
ovoscope>=0.4.0,<1.0.0
8+
ovoscope>=0.5.0,<1.0.0

test/end2end/test_converse.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
from unittest import TestCase
2+
3+
from ovos_bus_client.message import Message
4+
from ovos_bus_client.session import Session
5+
from ovos_utils.log import LOG
6+
7+
from ovoscope import End2EndTest, get_minicroft
8+
9+
10+
class TestConverse(TestCase):
11+
12+
def setUp(self):
13+
LOG.set_level("DEBUG")
14+
self.skill_id = "ovos-skill-parrot.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_parrot_mode(self):
23+
session = Session("123")
24+
session.pipeline = ["ovos-converse-pipeline-plugin", "ovos-padatious-pipeline-plugin-high"]
25+
26+
message1 = Message("recognizer_loop:utterance",
27+
{"utterances": ["start parrot mode"], "lang": "en-US"},
28+
{"session": session.serialize(), "source": "A", "destination": "B"})
29+
# NOTE: we dont pass session, End2EndTest will inject/update the session from message1
30+
message2 = Message("recognizer_loop:utterance",
31+
{"utterances": ["echo test"], "lang": "en-US"},
32+
{"source": "A", "destination": "B"})
33+
34+
expected1 = [
35+
message1,
36+
Message(f"{self.skill_id}.activate",
37+
data={},
38+
context={"skill_id": self.skill_id}),
39+
Message(f"{self.skill_id}:start_parrot.intent",
40+
data={"utterance": "start parrot mode", "lang": "en-US"},
41+
context={"skill_id": self.skill_id}),
42+
Message("mycroft.skill.handler.start",
43+
data={"name": "ParrotSkill.handle_start_parrot_intent"},
44+
context={"skill_id": self.skill_id}),
45+
Message("speak",
46+
data={"expect_response": False,
47+
"meta": {
48+
"dialog": "parrot_start",
49+
"data": {},
50+
"skill": self.skill_id
51+
}},
52+
context={"skill_id": self.skill_id}),
53+
Message("mycroft.skill.handler.complete",
54+
data={"name": "ParrotSkill.handle_start_parrot_intent"},
55+
context={"skill_id": self.skill_id}),
56+
Message("ovos.utterance.handled",
57+
data={},
58+
context={"skill_id": self.skill_id}),
59+
]
60+
expected2 = [
61+
message2,
62+
Message(f"{self.skill_id}.converse.ping",
63+
data={"utterances": ["echo test"], "skill_id": self.skill_id},
64+
context={}),
65+
Message("skill.converse.pong",
66+
data={"can_handle": True, "skill_id": self.skill_id},
67+
context={"skill_id": self.skill_id}),
68+
Message(f"{self.skill_id}.activate",
69+
data={},
70+
context={"skill_id": self.skill_id}),
71+
72+
Message(f"{self.skill_id}.converse.request",
73+
data={"utterances": ["echo test"], "lang": "en-US"},
74+
context={"skill_id": self.skill_id}),
75+
76+
Message("speak",
77+
data={"utterance": "echo test",
78+
"expect_response": False,
79+
"lang": "en-US",
80+
"meta": {
81+
"skill": self.skill_id
82+
}},
83+
context={"skill_id": self.skill_id}),
84+
85+
Message("skill.converse.response",
86+
data={"skill_id": self.skill_id},
87+
context={"skill_id": self.skill_id}),
88+
89+
Message("mycroft.skill.handler.complete",
90+
data={"name": "ParrotSkill.handle_start_parrot_intent"},
91+
context={"skill_id": self.skill_id}),
92+
Message("ovos.utterance.handled",
93+
data={},
94+
context={"skill_id": self.skill_id}),
95+
]
96+
97+
test = End2EndTest(
98+
minicroft=self.minicroft,
99+
skill_ids=[self.skill_id],
100+
flip_points=["recognizer_loop:utterance"],
101+
source_message=[message1, message2],
102+
expected_messages=expected1 + expected2,
103+
activation_points={
104+
f"{self.skill_id}:start_parrot.intent": self.skill_id
105+
},
106+
keep_original_src=[f"{self.skill_id}.converse.ping", "skill.converse.response"]
107+
)
108+
109+
test.execute(timeout=10)

0 commit comments

Comments
 (0)