Reduce timeout when skill has been handled

pull/1527/head
Åke Forslund 2018-03-21 00:20:03 +01:00 committed by Matthew D. Scholefield
parent 79bf94e48e
commit e7ead7ca6e
1 changed files with 12 additions and 1 deletions

View File

@ -190,6 +190,13 @@ class SkillTest(object):
Args:
loader: A list of loaded skills
"""
handled = []
def handle_complete(message):
handled.append(True)
self.emitter.on('mycroft.skill.handler.complete', handle_complete)
s = [s for s in loader.skills if s and s._dir == self.skill][0]
print 'Test case file: ' + self.test_case_file
test_case = json.load(open(self.test_case_file, 'r'))
@ -242,6 +249,10 @@ class SkillTest(object):
isinstance(test_case['evaluation_timeout'], int) \
else time.time() + DEFAULT_EVALUAITON_TIMEOUT
while not evaluation_rule.all_succeeded():
if handled:
timeout = min(timeout, time.time() + 5)
handled = []
try:
event = q.get(timeout=1)
evaluation_rule.evaluate(event.data)
@ -255,7 +266,7 @@ class SkillTest(object):
# remove the skill which is not responding
self.emitter.remove_all_listeners('speak')
self.emitter.remove_all_listeners('mycroft.skill.handler.complete')
# Report test result if failed
if not evaluation_rule.all_succeeded():
print "Evaluation failed"