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

View File

@ -6,31 +6,27 @@ import re
from . import ftools from . import ftools
# A parser that can be used to identify weather a line is a test result or a section statement. # 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 = {}
self.test_regex[0] = {} self.test_regex['pass'] = re.compile(r"^PASS:(.+)")
self.test_regex[0]['pass'] = re.compile(r"^PASS:(.+)") self.test_regex['fail'] = re.compile(r"^FAIL:(.+)")
self.test_regex[0]['fail'] = re.compile(r"^FAIL:(.+)") self.test_regex['skip'] = re.compile(r"^SKIP:(.+)")
self.test_regex[0]['skip'] = re.compile(r"^SKIP:(.+)")
self.section_regex = {} self.section_regex = {}
self.section_regex[0] = {} self.section_regex['begin'] = re.compile(r"^BEGIN: .*/(.+)/ptest")
self.section_regex[0]['begin'] = re.compile(r"^BEGIN: .*/(.+)/ptest") self.section_regex['end'] = re.compile(r"^END: .*/(.+)/ptest")
self.section_regex[0]['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 # 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): 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(): for test_status, status_regex in test_status_list.items():
test_name = status_regex.search(line) test_name = status_regex.search(line)
if test_name: if test_name:
return ['test', test_category, test_status, test_name.group(1)] 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(): for section_status, status_regex in section_status_list.items():
section_name = status_regex.search(line) section_name = status_regex.search(line)
if section_name: if section_name: