summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oeqa/runtime/cases/ptest.py6
-rw-r--r--meta/lib/oeqa/utils/logparser.py36
2 files changed, 19 insertions, 23 deletions
diff --git a/meta/lib/oeqa/runtime/cases/ptest.py b/meta/lib/oeqa/runtime/cases/ptest.py
index ebef3f9eac..1ce22a09e7 100644
--- a/meta/lib/oeqa/runtime/cases/ptest.py
+++ b/meta/lib/oeqa/runtime/cases/ptest.py
@@ -6,13 +6,13 @@ from oeqa.core.decorator.depends import OETestDepends
6from oeqa.core.decorator.oeid import OETestID 6from oeqa.core.decorator.oeid import OETestID
7from oeqa.core.decorator.data import skipIfNotFeature 7from oeqa.core.decorator.data import skipIfNotFeature
8from oeqa.runtime.decorator.package import OEHasPackage 8from oeqa.runtime.decorator.package import OEHasPackage
9from oeqa.utils.logparser import Lparser, Result 9from oeqa.utils.logparser import PtestParser, Result
10 10
11class PtestRunnerTest(OERuntimeTestCase): 11class PtestRunnerTest(OERuntimeTestCase):
12 12
13 # a ptest log parser 13 # a ptest log parser
14 def parse_ptest(self, logfile): 14 def parse_ptest(self, logfile):
15 parser = Lparser() 15 parser = PtestParser()
16 result = Result() 16 result = Result()
17 17
18 with open(logfile, errors='replace') as f: 18 with open(logfile, errors='replace') as f:
@@ -20,7 +20,7 @@ class PtestRunnerTest(OERuntimeTestCase):
20 result_tuple = parser.parse_line(line) 20 result_tuple = parser.parse_line(line)
21 if not result_tuple: 21 if not result_tuple:
22 continue 22 continue
23 result_tuple = line_type, category, status, name = parser.parse_line(line) 23 line_type, category, status, name = result_tuple
24 24
25 if line_type == 'section' and status == 'begin': 25 if line_type == 'section' and status == 'begin':
26 current_section = name 26 current_section = name
diff --git a/meta/lib/oeqa/utils/logparser.py b/meta/lib/oeqa/utils/logparser.py
index 328baeefaf..0807093fda 100644
--- a/meta/lib/oeqa/utils/logparser.py
+++ b/meta/lib/oeqa/utils/logparser.py
@@ -6,35 +6,31 @@ import re
6from . import ftools 6from . import ftools
7 7
8# A parser that can be used to identify weather a line is a test result or a section statement. 8# A parser that can be used to identify weather a line is a test result or a section statement.
9class Lparser(object): 9class PtestParser(object):
10 10
11 def __init__(self, **kwargs): 11 def __init__(self):
12 12
13 self.test_regex = {} 13 self.test_regex = {}
14 self.test_regex[0] = {} 14 self.test_regex['pass'] = re.compile(r"^PASS:(.+)")
15 self.test_regex[0]['pass'] = re.compile(r"^PASS:(.+)") 15 self.test_regex['fail'] = re.compile(r"^FAIL:(.+)")
16 self.test_regex[0]['fail'] = re.compile(r"^FAIL:(.+)") 16 self.test_regex['skip'] = re.compile(r"^SKIP:(.+)")
17 self.test_regex[0]['skip'] = re.compile(r"^SKIP:(.+)")
18 17
19 self.section_regex = {} 18 self.section_regex = {}
20 self.section_regex[0] = {} 19 self.section_regex['begin'] = re.compile(r"^BEGIN: .*/(.+)/ptest")
21 self.section_regex[0]['begin'] = re.compile(r"^BEGIN: .*/(.+)/ptest") 20 self.section_regex['end'] = re.compile(r"^END: .*/(.+)/ptest")
22 self.section_regex[0]['end'] = re.compile(r"^END: .*/(.+)/ptest")
23 21
24 # Parse a line and return a tuple containing the type of result (test/section) and its category, status and name 22 # Parse a line and return a tuple containing the type of result (test/section) and its category, status and name
25 def parse_line(self, line): 23 def parse_line(self, line):
26 24
27 for test_category, test_status_list in self.test_regex.items(): 25 for test_status, status_regex in test_status_list.items():
28 for test_status, status_regex in test_status_list.items(): 26 test_name = status_regex.search(line)
29 test_name = status_regex.search(line) 27 if test_name:
30 if test_name: 28 return ['test', test_category, test_status, test_name.group(1)]
31 return ['test', test_category, test_status, test_name.group(1)] 29
32 30 for section_status, status_regex in section_status_list.items():
33 for section_category, section_status_list in self.section_regex.items(): 31 section_name = status_regex.search(line)
34 for section_status, status_regex in section_status_list.items(): 32 if section_name:
35 section_name = status_regex.search(line) 33 return ['section', section_category, section_status, section_name.group(1)]
36 if section_name:
37 return ['section', section_category, section_status, section_name.group(1)]
38 return None 34 return None
39 35
40 36