Hackish first step to getting skill tester up and running

pull/992/head^2
Åke Forslund 2017-06-16 18:33:10 +02:00 committed by Steve Penrod
parent 873b231a54
commit 73c53aa8ea
2 changed files with 13 additions and 3 deletions

View File

@ -6,6 +6,7 @@ from test.skills.skill_tester import MockSkillsLoader, SkillTest
__author__ = 'seanfitz' __author__ = 'seanfitz'
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
# PROJECT_ROOT = '/opt'
def discover_tests(): def discover_tests():
@ -31,7 +32,7 @@ class IntentTestSequenceMeta(type):
def __new__(mcs, name, bases, d): def __new__(mcs, name, bases, d):
def gen_test(a, b): def gen_test(a, b):
def test(self): def test(self):
SkillTest(a, b, self.emitter).run() SkillTest(a, b, self.emitter).run(self.loader)
return test return test
tests = discover_tests() tests = discover_tests()

View File

@ -1,4 +1,5 @@
import json import json
from os.path import dirname
from pyee import EventEmitter from pyee import EventEmitter
@ -24,11 +25,16 @@ class RegistrationOnlyEmitter(object):
event_name = event.type event_name = event.type
self.emitter.emit(event_name, event, *args, **kwargs) self.emitter.emit(event_name, event, *args, **kwargs)
def remove(self, event_name, func):
pass
class MockSkillsLoader(object): class MockSkillsLoader(object):
def __init__(self, skills_root): def __init__(self, skills_root):
self.skills_root = skills_root self.skills_root = skills_root
self.emitter = RegistrationOnlyEmitter() self.emitter = RegistrationOnlyEmitter()
from mycroft.skills.intent_service import IntentService
self.ih = IntentService(self.emitter)
def load_skills(self): def load_skills(self):
self.skills = load_skills(self.emitter, self.skills_root) self.skills = load_skills(self.emitter, self.skills_root)
@ -53,7 +59,10 @@ class SkillTest(object):
actual.get(key))) actual.get(key)))
assert False assert False
def run(self): def run(self, loader):
for s in loader.skills:
if s and s._dir == self.skill:
name = s.name
example_json = json.load(open(self.example, 'r')) example_json = json.load(open(self.example, 'r'))
event = {'utterances': [example_json.get('utterance')]} event = {'utterances': [example_json.get('utterance')]}
@ -61,7 +70,7 @@ class SkillTest(object):
self.compare_intents(example_json.get('intent'), intent.data) self.compare_intents(example_json.get('intent'), intent.data)
self.returned_intent = True self.returned_intent = True
self.emitter.once(example_json.get('intent_type'), compare) self.emitter.once(name + ':' + example_json.get('intent_type'), compare)
self.emitter.emit( self.emitter.emit(
'recognizer_loop:utterance', 'recognizer_loop:utterance',
Message('recognizer_loop:utterance', event)) Message('recognizer_loop:utterance', event))