From d438324d3158d4ab07fefbaefc531bd460d3c60d Mon Sep 17 00:00:00 2001 From: Jenny Plunkett Date: Wed, 22 Nov 2017 15:37:05 -0600 Subject: [PATCH 1/6] Look for mbed_app.json in root dir if no --app-config is provided --- tools/test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/test.py b/tools/test.py index 7b4f631b3f..a4448cc92b 100644 --- a/tools/test.py +++ b/tools/test.py @@ -145,6 +145,8 @@ if __name__ == '__main__': args_error(parser, "argument --test-config contains invalid path or identifier") elif not options.app_config: config = TestConfig.get_default_config(mcu) + if os.path.exists(os.path.abspath(os.path.join("mbed_app.json", ".."))): + config = "mbed_app.json" else: config = options.app_config From 830e9e0bcd5f0806817cc74a236b3b81e3086068 Mon Sep 17 00:00:00 2001 From: Jenny Plunkett Date: Fri, 1 Dec 2017 14:54:35 -0600 Subject: [PATCH 2/6] Added options source_dir to get_default_config --- tools/test.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/test.py b/tools/test.py index a4448cc92b..a64e7e9e0c 100644 --- a/tools/test.py +++ b/tools/test.py @@ -30,7 +30,7 @@ from tools.config import ConfigException from tools.test_api import test_path_to_name, find_tests, get_test_config, print_tests, build_tests, test_spec_from_test_builds import tools.test_configs as TestConfig from tools.options import get_default_options_parser, extract_profile, extract_mcus -from tools.build_api import build_project, build_library +from tools.build_api import build_project, build_library, get_config from tools.build_api import print_build_memory_usage from tools.build_api import merge_build_data from tools.targets import TARGET_MAP @@ -142,11 +142,9 @@ if __name__ == '__main__': if options.test_config: config = get_test_config(options.test_config, mcu) if not config: - args_error(parser, "argument --test-config contains invalid path or identifier") + args_error(parser, "argument --test-csonfig contains invalid path or identifier") elif not options.app_config: - config = TestConfig.get_default_config(mcu) - if os.path.exists(os.path.abspath(os.path.join("mbed_app.json", ".."))): - config = "mbed_app.json" + config = TestConfig.get_default_config(options.source_dir, mcu) else: config = options.app_config From 6dd260e1aba2478914dfb16130ee2e90e30cd294 Mon Sep 17 00:00:00 2001 From: Jenny Plunkett Date: Fri, 1 Dec 2017 14:55:02 -0600 Subject: [PATCH 3/6] Added default check for mbed_app.json --- tools/test_configs/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/test_configs/__init__.py b/tools/test_configs/__init__.py index 90666baf24..4b30632ca2 100644 --- a/tools/test_configs/__init__.py +++ b/tools/test_configs/__init__.py @@ -1,4 +1,4 @@ -from os.path import dirname, abspath, join +from os.path import dirname, abspath, join, exists from tools.utils import json_file_to_dict from tools.targets import TARGET_MAP @@ -28,12 +28,14 @@ def get_config_path(conf_name, target_name): else: return None -def get_default_config(target_name): +def get_default_config(source_dir, target_name): if target_name in TARGET_CONFIGS: config_name = TARGET_CONFIGS[target_name]['default_test_configuration'] if config_name == "NONE": return None return join(CONFIG_DIR, CONFIG_MAP[config_name]) + elif any(exists(join(dir or ".", "mbed_app.json")) for dir in source_dir): + config = None elif (target_name in TARGET_MAP and 'LWIP' in TARGET_MAP[target_name].features): return join(CONFIG_DIR, CONFIG_MAP["ETHERNET"]) else: From fa56189de584e2c509a71ca9063d8b33c48f7861 Mon Sep 17 00:00:00 2001 From: Jenny Plunkett Date: Fri, 1 Dec 2017 15:00:34 -0600 Subject: [PATCH 4/6] Removed typos --- tools/test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/test.py b/tools/test.py index a64e7e9e0c..31d0f1d0b2 100644 --- a/tools/test.py +++ b/tools/test.py @@ -30,7 +30,7 @@ from tools.config import ConfigException from tools.test_api import test_path_to_name, find_tests, get_test_config, print_tests, build_tests, test_spec_from_test_builds import tools.test_configs as TestConfig from tools.options import get_default_options_parser, extract_profile, extract_mcus -from tools.build_api import build_project, build_library, get_config +from tools.build_api import build_project, build_library from tools.build_api import print_build_memory_usage from tools.build_api import merge_build_data from tools.targets import TARGET_MAP @@ -142,7 +142,7 @@ if __name__ == '__main__': if options.test_config: config = get_test_config(options.test_config, mcu) if not config: - args_error(parser, "argument --test-csonfig contains invalid path or identifier") + args_error(parser, "argument --test-config contains invalid path or identifier") elif not options.app_config: config = TestConfig.get_default_config(options.source_dir, mcu) else: From 5f5014ef429ca73a580886729ed590d27068b242 Mon Sep 17 00:00:00 2001 From: Jenny Plunkett Date: Fri, 1 Dec 2017 15:02:50 -0600 Subject: [PATCH 5/6] Added check for options.source_dir is none --- tools/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/test.py b/tools/test.py index 31d0f1d0b2..8e43274f62 100644 --- a/tools/test.py +++ b/tools/test.py @@ -144,7 +144,7 @@ if __name__ == '__main__': if not config: args_error(parser, "argument --test-config contains invalid path or identifier") elif not options.app_config: - config = TestConfig.get_default_config(options.source_dir, mcu) + config = TestConfig.get_default_config(options.source_dir or ['.'], mcu) else: config = options.app_config From b3ba9a55b900058c3317f707bc867c91ff70fb84 Mon Sep 17 00:00:00 2001 From: Jimmy Brisson Date: Fri, 1 Dec 2017 15:18:04 -0600 Subject: [PATCH 6/6] Use Config class to find mbed_app.json --- tools/config/__init__.py | 26 ++++++++++++++++---------- tools/test_configs/__init__.py | 5 +++-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/tools/config/__init__.py b/tools/config/__init__.py index e6d888fda3..ee491c99df 100644 --- a/tools/config/__init__.py +++ b/tools/config/__init__.py @@ -372,6 +372,20 @@ class Config(object): "LOWPAN_BORDER_ROUTER", "LOWPAN_HOST", "LOWPAN_ROUTER", "NANOSTACK_FULL", "THREAD_BORDER_ROUTER", "THREAD_END_DEVICE", "THREAD_ROUTER", "ETHERNET_HOST" ] + @classmethod + def find_app_config(cls, top_level_dirs): + app_config_location = None + for directory in top_level_dirs: + full_path = os.path.join(directory, cls.__mbed_app_config_name) + if os.path.isfile(full_path): + if app_config_location is not None: + raise ConfigException("Duplicate '%s' file in '%s' and '%s'" + % (cls.__mbed_app_config_name, + cls.app_config_location, full_path)) + else: + app_config_location = full_path + return app_config_location + def __init__(self, tgt, top_level_dirs=None, app_config=None): """Construct a mbed configuration @@ -391,16 +405,8 @@ class Config(object): """ config_errors = [] self.app_config_location = app_config - if self.app_config_location is None: - for directory in top_level_dirs or []: - full_path = os.path.join(directory, self.__mbed_app_config_name) - if os.path.isfile(full_path): - if self.app_config_location is not None: - raise ConfigException("Duplicate '%s' file in '%s' and '%s'" - % (self.__mbed_app_config_name, - self.app_config_location, full_path)) - else: - self.app_config_location = full_path + if self.app_config_location is None and top_level_dirs: + self.app_config_location = self.find_app_config(top_level_dirs) try: self.app_config_data = json_file_to_dict(self.app_config_location) \ if self.app_config_location else {} diff --git a/tools/test_configs/__init__.py b/tools/test_configs/__init__.py index 4b30632ca2..4f884465e7 100644 --- a/tools/test_configs/__init__.py +++ b/tools/test_configs/__init__.py @@ -2,6 +2,7 @@ from os.path import dirname, abspath, join, exists from tools.utils import json_file_to_dict from tools.targets import TARGET_MAP +from tools.config import Config CONFIG_DIR = dirname(abspath(__file__)) CONFIG_MAP = json_file_to_dict(join(CONFIG_DIR, "config_paths.json")) @@ -34,8 +35,8 @@ def get_default_config(source_dir, target_name): if config_name == "NONE": return None return join(CONFIG_DIR, CONFIG_MAP[config_name]) - elif any(exists(join(dir or ".", "mbed_app.json")) for dir in source_dir): - config = None + elif Config.find_app_config(source_dir): + return None elif (target_name in TARGET_MAP and 'LWIP' in TARGET_MAP[target_name].features): return join(CONFIG_DIR, CONFIG_MAP["ETHERNET"]) else: