mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
oeqa/logparser: Various misc cleanups
Get rid of further unneeded code complications: * value mappings we could just direct use * ftools when we can write files easily ourself * test result status filtering we don't use * variable overwriting module imports (From OE-Core rev: d6065f136f6d353c3054cc3f440a4e259509f876) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
54d4694f32
commit
7b17274c30
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
import pprint
|
||||
import re
|
||||
import datetime
|
||||
|
||||
from oeqa.runtime.case import OERuntimeTestCase
|
||||
from oeqa.core.decorator.depends import OETestDepends
|
||||
|
@ -21,8 +21,6 @@ class PtestRunnerTest(OERuntimeTestCase):
|
|||
if status != 0:
|
||||
self.skipTest("No -ptest packages are installed in the image")
|
||||
|
||||
import datetime
|
||||
|
||||
test_log_dir = self.td.get('TEST_LOG_DIR', '')
|
||||
# The TEST_LOG_DIR maybe NULL when testimage is added after
|
||||
# testdata.json is generated.
|
||||
|
@ -30,9 +28,9 @@ class PtestRunnerTest(OERuntimeTestCase):
|
|||
test_log_dir = os.path.join(self.td.get('WORKDIR', ''), 'testimage')
|
||||
# Don't use self.td.get('DATETIME'), it's from testdata.json, not
|
||||
# up-to-date, and may cause "File exists" when re-reun.
|
||||
datetime = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
|
||||
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
|
||||
ptest_log_dir_link = os.path.join(test_log_dir, 'ptest_log')
|
||||
ptest_log_dir = '%s.%s' % (ptest_log_dir_link, datetime)
|
||||
ptest_log_dir = '%s.%s' % (ptest_log_dir_link, timestamp)
|
||||
ptest_runner_log = os.path.join(ptest_log_dir, 'ptest-runner.log')
|
||||
|
||||
status, output = self.target.run('ptest-runner', 0)
|
||||
|
@ -51,7 +49,7 @@ class PtestRunnerTest(OERuntimeTestCase):
|
|||
# Parse and save results
|
||||
parser = PtestParser()
|
||||
results, sections = parser.parse(ptest_runner_log)
|
||||
parser.results_as_files(ptest_log_dir, test_status = ['pass','fail', 'skip'])
|
||||
parser.results_as_files(ptest_log_dir)
|
||||
if os.path.exists(ptest_log_dir_link):
|
||||
# Remove the old link to create a new one
|
||||
os.remove(ptest_log_dir_link)
|
||||
|
@ -60,12 +58,11 @@ class PtestRunnerTest(OERuntimeTestCase):
|
|||
extras['ptestresult.sections'] = sections
|
||||
|
||||
trans = str.maketrans("()", "__")
|
||||
resmap = {'pass': 'PASSED', 'skip': 'SKIPPED', 'fail': 'FAILED'}
|
||||
for section in results:
|
||||
for test in results[section]:
|
||||
result = results[section][test]
|
||||
testname = "ptestresult." + (section or "No-section") + "." + "_".join(test.translate(trans).split())
|
||||
extras[testname] = {'status': resmap[result]}
|
||||
extras[testname] = {'status': result}
|
||||
|
||||
failed_tests = {}
|
||||
for section in results:
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
import sys
|
||||
import os
|
||||
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 PtestParser(object):
|
||||
|
@ -13,9 +12,9 @@ class PtestParser(object):
|
|||
|
||||
def parse(self, logfile):
|
||||
test_regex = {}
|
||||
test_regex['pass'] = re.compile(r"^PASS:(.+)")
|
||||
test_regex['fail'] = re.compile(r"^FAIL:(.+)")
|
||||
test_regex['skip'] = re.compile(r"^SKIP:(.+)")
|
||||
test_regex['PASSED'] = re.compile(r"^PASS:(.+)")
|
||||
test_regex['FAILED'] = re.compile(r"^FAIL:(.+)")
|
||||
test_regex['SKIPPED'] = re.compile(r"^SKIP:(.+)")
|
||||
|
||||
section_regex = {}
|
||||
section_regex['begin'] = re.compile(r"^BEGIN: .*/(.+)/ptest")
|
||||
|
@ -72,9 +71,7 @@ class PtestParser(object):
|
|||
return self.results, self.sections
|
||||
|
||||
# Log the results as files. The file name is the section name and the contents are the tests in that section.
|
||||
def results_as_files(self, target_dir, test_status):
|
||||
if not type(test_status) == type([]):
|
||||
raise Exception("test_status should be a list. Got " + str(test_status) + " instead.")
|
||||
def results_as_files(self, target_dir):
|
||||
if not os.path.exists(target_dir):
|
||||
raise Exception("Target directory does not exist: %s" % target_dir)
|
||||
|
||||
|
@ -84,10 +81,8 @@ class PtestParser(object):
|
|||
prefix = section
|
||||
section_file = os.path.join(target_dir, prefix)
|
||||
# purge the file contents if it exists
|
||||
open(section_file, 'w').close()
|
||||
for test_name in sorted(self.results[section]):
|
||||
status = self.results[section][test_name]
|
||||
# we log only the tests with status in the test_status list
|
||||
if status in test_status:
|
||||
ftools.append_file(section_file, status + ": " + test_name)
|
||||
with open(section_file, 'w') as f:
|
||||
for test_name in sorted(self.results[section]):
|
||||
status = self.results[section][test_name]
|
||||
f.write(status + ": " + test_name + "\n")
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user