def test_toolchain_profile_ld(profile, source_file): """Test that the appropriate profile parameters are passed to the Linker""" filename = deepcopy(source_file) filename[-1] += ".o" to_compile = os.path.join(*filename) with patch('os.mkdir') as _mkdir,\ patch('tools.toolchains.mbedToolchain.default_cmd') as _dflt_cmd: for _, tc_class in TOOLCHAIN_CLASSES.items(): toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile, notify=MockNotifier()) toolchain.RESPONSE_FILES = False toolchain.inc_md5 = "" toolchain.build_dir = "" for parameter in profile['ld']: assert any(parameter in cmd for cmd in toolchain.ld), \ "Toolchain %s did not propagate arg %s" % (toolchain.name, parameter) toolchain.link(to_compile + ".elf", [to_compile], [], [], None) compile_cmd = _dflt_cmd.call_args_list if not compile_cmd: assert compile_cmd, to_compile for parameter in profile['ld']: assert any(parameter in cmd[0][0] for cmd in compile_cmd), \ "Toolchain %s did not propagate arg %s" % (toolchain.name, parameter) for name, Class in TOOLCHAIN_CLASSES.items(): CLS = Class(TARGET_MAP["K64F"], notify=MockNotifier()) assert name == CLS.name or name == LEGACY_TOOLCHAIN_NAMES[CLS.name]
def test_toolchain_profile_asm(profile, source_file): """Test that the appropriate profile parameters are passed to the Assembler""" filename = deepcopy(source_file) filename[-1] += ".s" to_compile = os.path.join(*filename) with patch('os.mkdir') as _mkdir: for _, tc_class in TOOLCHAIN_CLASSES.items(): toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile, notify=MockNotifier()) toolchain.inc_md5 = "" toolchain.build_dir = "" toolchain.config = MagicMock() toolchain.config.get_config_data_macros.return_value = [] for parameter in profile['asm']: assert any(parameter in cmd for cmd in toolchain.asm), \ "Toolchain %s did not propagate arg %s" % (toolchain.name, parameter) compile_command = toolchain.compile_command(to_compile, to_compile + ".o", []) if not compile_command: assert compile_command, to_compile for parameter in profile['asm']: assert any(parameter in cmd for cmd in compile_command), \ "Toolchain %s did not propagate arg %s" % (toolchain.name, parameter) for name, Class in TOOLCHAIN_CLASSES.items(): CLS = Class(TARGET_MAP["K64F"], notify=MockNotifier()) assert name == CLS.name or name == LEGACY_TOOLCHAIN_NAMES[CLS.name]
def test_toolchain_profile_c(profile, source_file): """Test that the appropriate profile parameters are passed to the C compiler""" filename = deepcopy(source_file) filename[-1] += ".c" to_compile = os.path.join(*filename) set_targets_json_location() with patch('os.mkdir') as _mkdir: for _, tc_class in TOOLCHAIN_CLASSES.items(): toolchain = tc_class(test_target_map, build_profile=profile, notify=MockNotifier()) toolchain.inc_md5 = "" toolchain.build_dir = "" toolchain.config = MagicMock(app_config_location=None) for parameter in profile['c'] + profile['common']: assert any(parameter in cmd for cmd in toolchain.cc), \ "Toolchain %s did not propagate arg %s" % (toolchain.name, parameter) compile_command = toolchain.compile_command( to_compile, to_compile + ".o", []) for parameter in profile['c'] + profile['common']: assert any(parameter in cmd for cmd in compile_command), \ "Toolchain %s did not propagate arg %s" % (toolchain.name, parameter)
def test_toolchain_profile_asm(profile, source_file): """Test that the appropriate profile parameters are passed to the Assembler""" filename = deepcopy(source_file) filename[-1] += ".s" to_compile = os.path.join(*filename) with patch('os.mkdir') as _mkdir: for _, tc_class in TOOLCHAIN_CLASSES.items(): toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile) toolchain.inc_md5 = "" toolchain.build_dir = "" compile_command = toolchain.compile_command(to_compile, to_compile + ".o", []) if not compile_command: assert compile_command, to_compile for parameter in profile['asm']: assert any(parameter in cmd for cmd in compile_command), \ "Toolchain %s did not propigate arg %s" % (toolchain.name, parameter) for name, Class in TOOLCHAIN_CLASSES.items(): CLS = Class(TARGET_MAP["K64F"]) assert name == CLS.name or name == LEGACY_TOOLCHAIN_NAMES[CLS.name]
def test_toolchain_profile_cpp(profile, source_file): """Test that the appropriate profile parameters are passed to the C++ compiler""" filename = deepcopy(source_file) filename[-1] += ".cpp" to_compile = os.path.join(*filename) with patch('os.mkdir') as _mkdir: for _, tc_class in TOOLCHAIN_CLASSES.items(): toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile) toolchain.inc_md5 = "" toolchain.build_dir = "" compile_command = toolchain.compile_command( to_compile, to_compile + ".o", []) for parameter in profile['cxx'] + profile['common']: assert any(parameter in cmd for cmd in compile_command), \ "Toolchain %s did not propigate arg %s" % (toolchain.name, parameter)
def test_toolchain_profile_cpp(profile, source_file): """Test that the appropriate profile parameters are passed to the C++ compiler""" filename = deepcopy(source_file) filename[-1] += ".cpp" to_compile = os.path.join(*filename) with patch('os.mkdir') as _mkdir: for _, tc_class in TOOLCHAIN_CLASSES.items(): toolchain = tc_class(TARGET_MAP["K64F"], build_profile=profile) toolchain.inc_md5 = "" toolchain.build_dir = "" compile_command = toolchain.compile_command(to_compile, to_compile + ".o", []) for parameter in profile['cxx'] + profile['common']: assert any(parameter in cmd for cmd in compile_command), \ "Toolchain %s did not propigate arg %s" % (toolchain.name, parameter)
def test_instantiation(): for name, Class in TOOLCHAIN_CLASSES.items(): CLS = Class(TARGET_MAP["K64F"]) assert name == CLS.name or name == LEGACY_TOOLCHAIN_NAMES[CLS.name]
def test_instantiation(): """Test that all exported toolchain may be instantiated""" for name, tc_class in TOOLCHAIN_CLASSES.items(): cls = tc_class(TARGET_MAP["K64F"]) assert name == cls.name or\ name == LEGACY_TOOLCHAIN_NAMES[cls.name]