oeqa/logparser: Further simplification/clarification

Rename the paster to be ptest specific and apply some further cleanups
to the code to simplify and clarify what its doing.

(From OE-Core rev: 45a5886f1ec458d4c306b8d68fd31d568bc36b47)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2019-01-29 13:00:41 +00:00
parent 95427c47ab
commit 4ee85b1cd6
2 changed files with 18 additions and 22 deletions

View File

@ -6,13 +6,13 @@ from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.oeid import OETestID
from oeqa.core.decorator.data import skipIfNotFeature
from oeqa.runtime.decorator.package import OEHasPackage
from oeqa.utils.logparser import Lparser, Result
from oeqa.utils.logparser import PtestParser, Result
class PtestRunnerTest(OERuntimeTestCase):
# a ptest log parser
def parse_ptest(self, logfile):
parser = Lparser()
parser = PtestParser()
result = Result()
with open(logfile, errors='replace') as f:
@ -20,7 +20,7 @@ class PtestRunnerTest(OERuntimeTestCase):
result_tuple = parser.parse_line(line)
if not result_tuple:
continue
result_tuple = line_type, category, status, name = parser.parse_line(line)
line_type, category, status, name = result_tuple
if line_type == 'section' and status == 'begin':
current_section = name

View File

@ -6,31 +6,27 @@ import re
from . import ftools
# A parser that can be used to identify weather a line is a test result or a section statement.
class Lparser(object):
class PtestParser(object):
def __init__(self, **kwargs):
def __init__(self):
self.test_regex = {}
self.test_regex[0] = {}
self.test_regex[0]['pass'] = re.compile(r"^PASS:(.+)")
self.test_regex[0]['fail'] = re.compile(r"^FAIL:(.+)")
self.test_regex[0]['skip'] = re.compile(r"^SKIP:(.+)")
self.test_regex['pass'] = re.compile(r"^PASS:(.+)")
self.test_regex['fail'] = re.compile(r"^FAIL:(.+)")
self.test_regex['skip'] = re.compile(r"^SKIP:(.+)")
self.section_regex = {}
self.section_regex[0] = {}
self.section_regex[0]['begin'] = re.compile(r"^BEGIN: .*/(.+)/ptest")
self.section_regex[0]['end'] = re.compile(r"^END: .*/(.+)/ptest")
self.section_regex['begin'] = re.compile(r"^BEGIN: .*/(.+)/ptest")
self.section_regex['end'] = re.compile(r"^END: .*/(.+)/ptest")
# Parse a line and return a tuple containing the type of result (test/section) and its category, status and name
def parse_line(self, line):
for test_category, test_status_list in self.test_regex.items():
for test_status, status_regex in test_status_list.items():
test_name = status_regex.search(line)
if test_name:
return ['test', test_category, test_status, test_name.group(1)]
for section_category, section_status_list in self.section_regex.items():
for section_status, status_regex in section_status_list.items():
section_name = status_regex.search(line)
if section_name: