diff --git a/docs/testing_mbed_OS_5.md b/docs/testing_mbed_OS_5.md index 83b6277b97..f21565a913 100644 --- a/docs/testing_mbed_OS_5.md +++ b/docs/testing_mbed_OS_5.md @@ -10,6 +10,7 @@ The way tests are run and compiled in mbed OS 5 is substantially different from - [Test names](#test-names) - [Building tests](#building-tests) - [Building process](#building-process) + - [App config](#app-config) - [Running tests](#running-tests) - [Writing tests](#writing-tests) - [Debugging tests](#debugging-tests) @@ -73,6 +74,12 @@ The full build process is: 1. For each discovered test, build all of its source files and link it with the non-test code that was built in step 1. 1. If specified, create a test specification file and place it in the given directory for use by testing tools. This is placed in the build directory by default when using mbed CLI. +#### App config + +When building an mbed application, the presence of a `mbed_app.json` file allows you to set or override different config settings from libraries and targets. However, because the tests share a common build, this can cause issues when tests have different configurations that affect the OS. + +If you need to use app config, this must be set via the `--app-config` option when calling `mbed test`. **If this option is not specified, the build system will ignore all `mbed_app.json` files and use the default config values.** + ### Running tests Automated tests can be run easily through mbed CLI. For information on using mbed CLI, please see its documentation. diff --git a/tools/test.py b/tools/test.py index 5b8f9d97a3..851cb05538 100644 --- a/tools/test.py +++ b/tools/test.py @@ -121,6 +121,15 @@ if __name__ == '__main__': "Currently set search path: %s" % (toolchain, search_path)) + # App config + # Disable finding `mbed_app.json` files in the source tree if not + # explicitly defined on the command line. Config system searches for + # `mbed_app.json` files if `app_config` is None, but will set the + # app config data to an empty dictionary if the path value is another + # falsey value besides None. + if options.app_config is None: + options.app_config = '' + # Find all tests in the relevant paths for path in all_paths: all_tests.update(find_tests(path, mcu, toolchain, options.options, @@ -184,7 +193,6 @@ if __name__ == '__main__': verbose=options.verbose, notify=notify, archive=False, - remove_config_header_file=True, app_config=options.app_config) library_build_success = True