sanitycheck: get rid of global VERBOSE
Do not declare VERBOSE as global, instead pass verbosity as argument.
Also get rid of options as global and fix coverage class to not use
global option variable.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
diff --git a/scripts/sanity_chk/sanitylib.py b/scripts/sanity_chk/sanitylib.py
index 9bf0f24..8f7303a 100644
--- a/scripts/sanity_chk/sanitylib.py
+++ b/scripts/sanity_chk/sanitylib.py
@@ -64,13 +64,9 @@
from sanity_chk import scl
from sanity_chk import expr_parser
-VERBOSE = 0
-
logger = logging.getLogger('sanitycheck')
logger.setLevel(logging.DEBUG)
-
-options = None
pipeline = queue.LifoQueue()
class CMakeCacheEntry:
@@ -1807,6 +1803,7 @@
self.west_runner = kwargs.get('west_runner', None)
self.generator = kwargs.get('generator', None)
self.generator_cmd = kwargs.get('generator_cmd', None)
+ self.verbose = kwargs.get('verbose', None)
@staticmethod
def log_info(filename, inline_logs):
@@ -1977,7 +1974,7 @@
if instance.status in ["failed", "timeout"]:
self.suite.total_failed += 1
- if VERBOSE:
+ if self.verbose:
status = Fore.RED + "FAILED " + Fore.RESET + instance.reason
else:
print("")
@@ -1988,7 +1985,7 @@
Fore.RED,
Fore.RESET,
instance.reason))
- if not VERBOSE:
+ if not self.verbose:
self.log_info_file(self.inline_logs)
elif instance.status == "skipped":
self.suite.total_skipped += 1
@@ -1996,7 +1993,7 @@
else:
status = Fore.GREEN + "PASSED" + Fore.RESET
- if VERBOSE:
+ if self.verbose:
if self.cmake_only:
more_info = "cmake"
elif instance.status == "skipped":
@@ -2746,7 +2743,8 @@
west_flash=self.west_flash,
west_runner=self.west_runner,
generator=self.generator,
- generator_cmd=self.generator_cmd
+ generator_cmd=self.generator_cmd,
+ verbose=self.verbose
)
future_to_test[executor.submit(pb.process, message)] = test.name
@@ -3011,20 +3009,25 @@
"""
def __init__(self):
- self.gcov_tool = options.gcov_tool
+ self.gcov_tool = None
+ self.base_dir = None
@staticmethod
def factory(tool):
if tool == 'lcov':
- return Lcov()
- if tool == 'gcovr':
- return Gcovr()
- logger.error("Unsupported coverage tool specified: {}".format(tool))
+ t = Lcov()
+ elif tool == 'gcovr':
+ t = Lcov()
+ else:
+ logger.error("Unsupported coverage tool specified: {}".format(tool))
+ return None
+
+ t.gcov_tool = tool
+ return t
@staticmethod
def retrieve_gcov_data(intput_file):
- if VERBOSE:
- logger.debug("Working on %s" % intput_file)
+ logger.debug("Working on %s" % intput_file)
extracted_coverage_info = {}
capture_data = False
capture_complete = False
@@ -3057,8 +3060,7 @@
@staticmethod
def create_gcda_files(extracted_coverage_info):
- if VERBOSE:
- logger.debug("Generating gcda files")
+ logger.debug("Generating gcda files")
for filename, hexdump_val in extracted_coverage_info.items():
# if kobject_hash is given for coverage gcovr fails
# hence skipping it problem only in gcovr v4.1
@@ -3113,14 +3115,14 @@
# We want to remove tests/* and tests/ztest/test/* but save tests/ztest
subprocess.call(["lcov", "--gcov-tool", self.gcov_tool, "--extract",
coveragefile,
- os.path.join(ZEPHYR_BASE, "tests", "ztest", "*"),
+ os.path.join(self.base_dir, "tests", "ztest", "*"),
"--output-file", ztestfile,
"--rc", "lcov_branch_coverage=1"], stdout=coveragelog)
if os.path.exists(ztestfile) and os.path.getsize(ztestfile) > 0:
subprocess.call(["lcov", "--gcov-tool", self.gcov_tool, "--remove",
ztestfile,
- os.path.join(ZEPHYR_BASE, "tests/ztest/test/*"),
+ os.path.join(self.base_dir, "tests/ztest/test/*"),
"--output-file", ztestfile,
"--rc", "lcov_branch_coverage=1"],
stdout=coveragelog)
@@ -3168,12 +3170,12 @@
excludes = Gcovr._interleave_list("-e", self.ignores)
# We want to remove tests/* and tests/ztest/test/* but save tests/ztest
- subprocess.call(["gcovr", "-r", ZEPHYR_BASE, "--gcov-executable",
+ subprocess.call(["gcovr", "-r", self.base_dir, "--gcov-executable",
self.gcov_tool, "-e", "tests/*"] + excludes +
["--json", "-o", coveragefile, outdir],
stdout=coveragelog)
- subprocess.call(["gcovr", "-r", ZEPHYR_BASE, "--gcov-executable",
+ subprocess.call(["gcovr", "-r", self.base_dir, "--gcov-executable",
self.gcov_tool, "-f", "tests/ztest", "-e",
"tests/ztest/test/*", "--json", "-o", ztestfile,
outdir], stdout=coveragelog)
@@ -3188,7 +3190,7 @@
tracefiles = self._interleave_list("--add-tracefile", files)
- return subprocess.call(["gcovr", "-r", ZEPHYR_BASE, "--html",
+ return subprocess.call(["gcovr", "-r", self.base_dir, "--html",
"--html-details"] + tracefiles +
["-o", os.path.join(subdir, "index.html")],
stdout=coveragelog)
diff --git a/scripts/sanitycheck b/scripts/sanitycheck
index c6d27da..ba071e7 100755
--- a/scripts/sanitycheck
+++ b/scripts/sanitycheck
@@ -195,13 +195,9 @@
from sanitylib import HardwareMap, TestSuite, SizeCalculator, CoverageTool
-VERBOSE = 0
-
logger = logging.getLogger('sanitycheck')
logger.setLevel(logging.DEBUG)
-options = None
-
def size_report(sc):
logger.info(sc.filename)
logger.info("SECTION NAME VMA LMA SIZE HEX SZ TYPE")
@@ -635,8 +631,6 @@
def main():
start_time = time.time()
- global VERBOSE
- global options
options = parse_arguments()
@@ -669,7 +663,7 @@
# create console handler with a higher log level
ch = logging.StreamHandler()
- VERBOSE += options.verbose
+ VERBOSE = options.verbose
if VERBOSE > 1:
ch.setLevel(logging.DEBUG)
else:
@@ -757,6 +751,7 @@
suite.extra_args = options.extra_args
suite.west_flash = options.west_flash
suite.west_runner = options.west_runner
+ suite.verbose = VERBOSE
if options.ninja:
suite.generator_cmd = "ninja"
@@ -1018,7 +1013,7 @@
suite.summary(options.disable_unrecognized_section_test)
if options.coverage:
- if options.gcov_tool is None:
+ if not options.gcov_tools:
use_system_gcov = False
for plat in options.coverage_platform:
@@ -1034,6 +1029,7 @@
logger.info("Generating coverage files...")
coverage_tool = CoverageTool.factory(options.coverage_tool)
+ coverage_tool.base_dir = ZEPHYR_BASE
coverage_tool.add_ignore_file('generated')
coverage_tool.add_ignore_directory('tests')
coverage_tool.add_ignore_directory('samples')