twister: move more code from main script

Move code from twister script into respective classes.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2022-06-13 07:43:36 -04:00
commit 57dbaa3da3
3 changed files with 44 additions and 34 deletions

View file

@ -207,3 +207,29 @@ class Gcovr(CoverageTool):
"--html-details"] + tracefiles + "--html-details"] + tracefiles +
["-o", os.path.join(subdir, "index.html")], ["-o", os.path.join(subdir, "index.html")],
stdout=coveragelog) stdout=coveragelog)
def run_coverage(testplan, options):
if not options.gcov_tool:
use_system_gcov = False
for plat in options.coverage_platform:
ts_plat = testplan.get_platform(plat)
if ts_plat and (ts_plat.type in {"native", "unit"}):
use_system_gcov = True
if use_system_gcov or "ZEPHYR_SDK_INSTALL_DIR" not in os.environ:
options.gcov_tool = "gcov"
else:
options.gcov_tool = os.path.join(os.environ["ZEPHYR_SDK_INSTALL_DIR"],
"x86_64-zephyr-elf/bin/x86_64-zephyr-elf-gcov")
logger.info("Generating coverage files...")
coverage_tool = CoverageTool.factory(options.coverage_tool)
coverage_tool.gcov_tool = options.gcov_tool
coverage_tool.base_dir = os.path.abspath(options.coverage_basedir)
coverage_tool.add_ignore_file('generated')
coverage_tool.add_ignore_directory('tests')
coverage_tool.add_ignore_directory('samples')
coverage_tool.generate(options.outdir)

View file

@ -186,6 +186,18 @@ class HardwareMap:
d.fixtures.extend(self.options.fixture) d.fixtures.extend(self.options.fixture)
return 1 return 1
def summary(self, selected_platforms):
print("\nHardware distribution summary:\n")
table = []
header = ['Board', 'ID', 'Counter']
for d in self.duts:
if d.connected and d.platform in selected_platforms:
row = [d.platform, d.id, d.counter]
table.append(row)
print(tabulate(table, headers=header, tablefmt="github"))
def add_device(self, serial, platform, pre_script, is_pty, baud=None): def add_device(self, serial, platform, pre_script, is_pty, baud=None):
device = DUT(platform=platform, connected=True, pre_script=pre_script, serial_baud=baud) device = DUT(platform=platform, connected=True, pre_script=pre_script, serial_baud=baud)

View file

@ -199,11 +199,10 @@ except ImportError:
sys.path.insert(0, os.path.join(ZEPHYR_BASE, "scripts/pylib/twister")) sys.path.insert(0, os.path.join(ZEPHYR_BASE, "scripts/pylib/twister"))
from twister.testplan import TestPlan from twister.testplan import TestPlan
from twister.runner import ExecutionCounter from twister.enviornment import TwisterEnv
from twister.enviornment import TwisterEnv, canonical_zephyr_base
from twister.reports import Reporting from twister.reports import Reporting
from twister.hardwaremap import HardwareMap from twister.hardwaremap import HardwareMap
from twister.coverage import CoverageTool from twister.coverage import run_coverage
from twister.runner import TwisterRunner from twister.runner import TwisterRunner
logger = logging.getLogger('twister') logger = logging.getLogger('twister')
@ -890,11 +889,12 @@ def main():
env.discover() env.discover()
hwm = HardwareMap(env) hwm = HardwareMap(env)
env.hwm = hwm
ret = hwm.discover() ret = hwm.discover()
if ret == 0: if ret == 0:
return return
env.hwm = hwm
tplan = TestPlan(options.board_root, options.testsuite_root, env, options.outdir) tplan = TestPlan(options.board_root, options.testsuite_root, env, options.outdir)
try: try:
tplan.discover() tplan.discover()
@ -977,38 +977,10 @@ def main():
report.summary(runner.results, options.disable_unrecognized_section_test, duration) report.summary(runner.results, options.disable_unrecognized_section_test, duration)
if options.coverage: if options.coverage:
if not options.gcov_tool: run_coverage(tplan, options)
use_system_gcov = False
for plat in options.coverage_platform:
ts_plat = tplan.get_platform(plat)
if ts_plat and (ts_plat.type in {"native", "unit"}):
use_system_gcov = True
if use_system_gcov or "ZEPHYR_SDK_INSTALL_DIR" not in os.environ:
options.gcov_tool = "gcov"
else:
options.gcov_tool = os.path.join(os.environ["ZEPHYR_SDK_INSTALL_DIR"],
"x86_64-zephyr-elf/bin/x86_64-zephyr-elf-gcov")
logger.info("Generating coverage files...")
coverage_tool = CoverageTool.factory(options.coverage_tool)
coverage_tool.gcov_tool = options.gcov_tool
coverage_tool.base_dir = os.path.abspath(options.coverage_basedir)
coverage_tool.add_ignore_file('generated')
coverage_tool.add_ignore_directory('tests')
coverage_tool.add_ignore_directory('samples')
coverage_tool.generate(options.outdir)
if options.device_testing and not options.build_only: if options.device_testing and not options.build_only:
print("\nHardware distribution summary:\n") hwm.summary(tplan.selected_platforms)
table = []
header = ['Board', 'ID', 'Counter']
for d in hwm.duts:
if d.connected and d.platform in tplan.selected_platforms:
row = [d.platform, d.id, d.counter]
table.append(row)
print(tabulate(table, headers=header, tablefmt="github"))
report.save_reports(options.report_name, report.save_reports(options.report_name,
options.report_suffix, options.report_suffix,