mirror of
https://git.yoctoproject.org/poky
synced 2026-05-31 12:49:46 +00:00
oeqa/selftest/binutils: Create selftest case for binutils test suite
Create a oeqa selftest test case to execute the binutils test suites and report the results. The results are populated into the extraresults variable of the test case which are written to testresults.json for resulttool to analyse. (From OE-Core rev: e5629aa4bd939072208f6eb5b30a98e17eb6a8ae) Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
db62562db5
commit
d8f39cc971
@@ -0,0 +1,64 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
import logging
|
||||
from oeqa.core.decorator import OETestTag
|
||||
from oeqa.selftest.case import OESelftestTestCase
|
||||
from oeqa.utils.commands import bitbake, get_bb_var, get_bb_vars
|
||||
|
||||
def parse_values(content):
|
||||
for i in content:
|
||||
for v in ["PASS", "FAIL", "XPASS", "XFAIL", "UNRESOLVED", "UNSUPPORTED", "UNTESTED", "ERROR", "WARNING"]:
|
||||
if i.startswith(v + ": "):
|
||||
yield i[len(v) + 2:].strip(), v
|
||||
break
|
||||
|
||||
@OETestTag("machine")
|
||||
class BinutilsCrossSelfTest(OESelftestTestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
if not hasattr(cls.tc, "extraresults"):
|
||||
cls.tc.extraresults = {}
|
||||
|
||||
if "ptestresult.sections" not in cls.tc.extraresults:
|
||||
cls.tc.extraresults["ptestresult.sections"] = {}
|
||||
|
||||
def test_binutils(self):
|
||||
self.run_binutils("binutils")
|
||||
|
||||
def test_gas(self):
|
||||
self.run_binutils("gas")
|
||||
|
||||
def test_ld(self):
|
||||
self.run_binutils("ld")
|
||||
|
||||
def run_binutils(self, suite):
|
||||
features = []
|
||||
features.append('CHECK_TARGETS = "{0}"'.format(suite))
|
||||
self.write_config("\n".join(features))
|
||||
|
||||
recipe = "binutils-cross-testsuite"
|
||||
bb_vars = get_bb_vars(["B", "TARGET_SYS", "T"], recipe)
|
||||
builddir, target_sys, tdir = bb_vars["B"], bb_vars["TARGET_SYS"], bb_vars["T"]
|
||||
|
||||
bitbake("{0} -c check".format(recipe))
|
||||
|
||||
ptestsuite = "binutils-{}".format(suite) if suite != "binutils" else suite
|
||||
self.tc.extraresults["ptestresult.sections"][ptestsuite] = {}
|
||||
|
||||
sumspath = os.path.join(builddir, suite, "{0}.sum".format(suite))
|
||||
if not os.path.exists(sumspath):
|
||||
sumspath = os.path.join(builddir, suite, "testsuite", "{0}.sum".format(suite))
|
||||
|
||||
failed = 0
|
||||
with open(sumspath, "r") as f:
|
||||
for test, result in parse_values(f):
|
||||
self.tc.extraresults["ptestresult.{}.{}".format(ptestsuite, test)] = {"status" : result}
|
||||
if result == "FAIL":
|
||||
self.logger.info("failed: '{}'".format(test))
|
||||
failed += 1
|
||||
|
||||
self.assertEqual(failed, 0)
|
||||
|
||||
Reference in New Issue
Block a user