Import Mbed OS hard-float snapshot
This commit is contained in:
163
UNITTESTS/mbed_unittest.py
Normal file
163
UNITTESTS/mbed_unittest.py
Normal file
@@ -0,0 +1,163 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Copyright (c) 2018, Arm Limited
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
UNIT TEST BUILD & RUN
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import logging
|
||||
import re
|
||||
|
||||
from unit_test.options import get_options_parser, \
|
||||
pretty_print_test_options
|
||||
from unit_test.settings import DEFAULT_CMAKE_GENERATORS
|
||||
from unit_test.test import UnitTestTool
|
||||
from unit_test.new import UnitTestGeneratorTool
|
||||
from unit_test.coverage import CoverageAPI
|
||||
|
||||
def _mbed_unittest_test(options, cwd, pwd):
|
||||
if options is None:
|
||||
return
|
||||
|
||||
if options.coverage:
|
||||
options.debug_build = True
|
||||
|
||||
if options.cmake_generator is None:
|
||||
options.cmake_generator = DEFAULT_CMAKE_GENERATORS.get(
|
||||
options.make_program,
|
||||
"Unix Makefiles")
|
||||
|
||||
# Do not clean directory if only run.
|
||||
if options.clean and options.run_only and not options.compile_only:
|
||||
options.clean = False
|
||||
|
||||
# Build and run by default
|
||||
if (not options.compile_only and
|
||||
not options.run_only and
|
||||
not options.clean):
|
||||
options.compile_only = True
|
||||
options.run_only = True
|
||||
|
||||
# Set build path
|
||||
if not os.path.isabs(options.build):
|
||||
options.build = os.path.normpath(
|
||||
os.path.join(cwd, options.build))
|
||||
|
||||
pretty_print_test_options(options)
|
||||
|
||||
# Create test tool
|
||||
tool = UnitTestTool(make_program=options.make_program)
|
||||
|
||||
# Prepare build directory
|
||||
tool.prepare_build_directory(path_to_src=pwd,
|
||||
build_path=options.build,
|
||||
clean=options.clean)
|
||||
|
||||
if options.compile_only:
|
||||
# Create makefiles
|
||||
src_path = os.path.relpath(pwd, options.build)
|
||||
tool.create_makefiles(path_to_src=src_path,
|
||||
generator=options.cmake_generator,
|
||||
coverage_output_type=options.coverage,
|
||||
debug=options.debug_build,
|
||||
valgrind=options.valgrind)
|
||||
|
||||
# Build tests
|
||||
tool.build_tests()
|
||||
|
||||
if options.run_only:
|
||||
tool.run_tests(filter_regex=options.test_regex,
|
||||
valgrind=options.valgrind)
|
||||
|
||||
# If code coverage generation:
|
||||
if options.coverage:
|
||||
cov_api = CoverageAPI(
|
||||
mbed_os_root=os.path.normpath(os.path.join(pwd, "..")),
|
||||
build_dir=options.build)
|
||||
|
||||
# Generate reports
|
||||
outputs = [options.coverage]
|
||||
if options.coverage == "both":
|
||||
outputs = ["html", "xml"]
|
||||
|
||||
excludes = [pwd, options.build]
|
||||
|
||||
if not options.include_headers:
|
||||
excludes.append(re.compile(".*\\.h"))
|
||||
|
||||
cov_api.generate_reports(outputs=outputs,
|
||||
excludes=excludes,
|
||||
build_path=options.build)
|
||||
|
||||
def _mbed_unittest_new(options, pwd):
|
||||
if options is None:
|
||||
return
|
||||
|
||||
generator = UnitTestGeneratorTool()
|
||||
|
||||
mbed_os_root = os.path.normpath(
|
||||
os.path.join(pwd, "..")
|
||||
)
|
||||
|
||||
for filepath in options.new_files:
|
||||
generator.create(
|
||||
mbed_os_root=mbed_os_root,
|
||||
filepath=filepath)
|
||||
|
||||
def mbed_unittest(options=None):
|
||||
"""
|
||||
Create, build and run unit tests
|
||||
"""
|
||||
|
||||
if options is None:
|
||||
return
|
||||
|
||||
cwd = os.getcwd()
|
||||
|
||||
# Change current working directory to script location
|
||||
unittest_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
os.chdir(unittest_dir)
|
||||
|
||||
if options.new_files:
|
||||
_mbed_unittest_new(options, unittest_dir)
|
||||
else:
|
||||
_mbed_unittest_test(options, cwd, unittest_dir)
|
||||
|
||||
def mbed_unittest_main():
|
||||
"""
|
||||
Create, build and run unit tests - main
|
||||
"""
|
||||
|
||||
# Get parser and parse command line arguments
|
||||
parser = get_options_parser()
|
||||
options = parser.parse_args()
|
||||
|
||||
# Setup logger
|
||||
if options.log_level:
|
||||
logging.basicConfig(level=getattr(logging, options.log_level),
|
||||
format="%(message)s")
|
||||
else:
|
||||
logging.basicConfig(level=logging.INFO,
|
||||
format="%(message)s")
|
||||
|
||||
mbed_unittest(options)
|
||||
|
||||
if __name__ == "__main__":
|
||||
mbed_unittest_main()
|
||||
Reference in New Issue
Block a user