#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import unittest
import traceback
from cros.tests.cros_ec_accel import *
from cros.tests.cros_ec_gyro import *
from cros.tests.cros_ec_mcu import *
from cros.tests.cros_ec_pwm import *
from cros.tests.cros_ec_rtc import *
from cros.tests.cros_ec_power import *
from cros.tests.cros_ec_extcon import *
[docs]class LavaTextTestResult(unittest.TestResult):
def __init__(self, runner, verbosity=0):
super().__init__()
self.trace_on = verbosity > 0
self.debug_on = verbosity > 1
self.runner = runner
[docs] def addSuccess(self, test):
super().addSuccess(test)
testcase = test.id().rsplit(".")[-1]
self.runner.writeUpdate(
f"<LAVA_SIGNAL_TESTCASE TEST_CASE_ID={testcase} RESULT=pass>\n")
[docs] def addError(self, test, err):
super().addError(test, err)
testcase = test.id().rsplit(".")[-1]
if self.trace_on:
exc_type, exc_value, exc_tb = err
msg = str(exc_value).split(' : ')
if len(msg) > 1:
msg = ''.join(msg[1:])
else:
msg = msg[0]
self.runner.writeUpdate(f"{testcase} ERROR: {msg}\n")
if self.debug_on:
exc_type, exc_value, exc_tb = err
traceback.print_tb(exc_tb, file=self.runner.stream)
self.runner.writeUpdate(
f"<LAVA_SIGNAL_TESTCASE TEST_CASE_ID={testcase} RESULT=unknown>\n")
[docs] def addFailure(self, test, err):
super().addFailure(test, err)
testcase = test.id().rsplit(".")[-1]
if self.trace_on:
exc_type, exc_value, exc_tb = err
msg = str(exc_value).split(' : ')
if len(msg) > 1:
msg = ''.join(msg[1:])
else:
msg = msg[0]
self.runner.writeUpdate(f"{testcase} FAIL: {msg}\n")
if self.debug_on:
exc_type, exc_value, exc_tb = err
traceback.print_tb(exc_tb, file=self.runner.stream)
self.runner.writeUpdate(
f"<LAVA_SIGNAL_TESTCASE TEST_CASE_ID={testcase} RESULT=fail>\n")
[docs] def addSkip(self, test, reason):
super().addSkip(test, reason)
testcase = test.id().rsplit(".")[-1]
if self.trace_on:
self.runner.writeUpdate(f"{testcase} SKIP: {reason}\n")
self.runner.writeUpdate(
f"<LAVA_SIGNAL_TESTCASE TEST_CASE_ID={testcase} RESULT=skip>\n")
class LavaTestRunner:
def __init__(self, stream=sys.stderr, verbosity=0):
self.stream = stream
self.verbosity = verbosity
def writeUpdate(self, message):
self.stream.write(message)
def run(self, test):
result = LavaTextTestResult(self, self.verbosity)
test(result)
result.testsRun
return result
if __name__ == "__main__":
verbosity = 0
# Parse additional "verbosity" parameter and strip it from sys.argv
# so that unittest can do the rest of the command line parsing
if '--verbosity' in sys.argv:
i = sys.argv.index('--verbosity')
try:
verbosity = int(sys.argv[i+1])
sys.argv.pop(i+1)
except IndexError:
pass
except ValueError:
sys.argv.pop(i+1)
finally:
sys.argv.pop(i)
unittest.main(
testRunner=LavaTestRunner(verbosity=verbosity),
# these make sure that some options that are not applicable
# remain hidden from the help menu.
failfast=False,
buffer=False,
catchbreak=False,
)