diff --git a/test/daplink_firmware.py b/test/daplink_firmware.py index 95ed1e863..afe42bfc5 100644 --- a/test/daplink_firmware.py +++ b/test/daplink_firmware.py @@ -80,7 +80,19 @@ class ProjectFirmwareBundle(firmware.FirmwareBundle): def __init__(self, directory, tool): tool_dir = os.path.abspath(directory + os.sep + 'projectfiles' + os.sep + tool) + errmsg = "Error: DAPLink projects are missing. Did " \ + "you forget to generate them by running " \ + "'progen generate -t %s'?\nExpecting them at %s" % (tool, tool_dir) + + if not os.path.exists(tool_dir): + print (errmsg) + exit(-1) + project_dir_list = os.listdir(tool_dir) + if not project_dir_list: + print (errmsg) + exit(-1) + firmware_list = [] for name in project_dir_list: build_dir = tool_dir + os.sep + name + os.sep + 'build' diff --git a/test/run_test.py b/test/run_test.py index 001404fb0..f4cd94055 100644 --- a/test/run_test.py +++ b/test/run_test.py @@ -15,7 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # - + """ DAPLink validation and testing tool @@ -431,7 +431,7 @@ def build_test_configurations(self, parent_test): # Get target target = None - target_required = not self._test_ep and not self._test_daplink + target_required = self._test_ep if board_id in board_id_to_target: target = board_id_to_target[board_id] elif target_required: @@ -573,11 +573,17 @@ def main(): use_prebuilt = args.targetdir is not None use_compile_api = args.user is not None and args.password is not None + test_info = TestInfo('DAPLink') + # Validate args + + # See if user wants to test endpoints. If yes and he didn't provide + # target test binaries, use the Compile API to build them + all_targets = None if not args.notestendpt: if not use_prebuilt and not use_compile_api: print("Endpoint test requires target test images.") - print(" Directory with pre-build target test images") + print(" Directory with pre-built target test images") print(" must be specified with '--targetdir'") print("OR") print(" Mbed login credentials '--user' and '--password' must") @@ -585,13 +591,14 @@ def main(): print(" the compile API.") exit(-1) - firmware_explicitly_specified = len(args.firmware) != 0 - test_info = TestInfo('DAPLink') - if args.targetdir is not None: - target_dir = args.targetdir - else: - target_dir = daplink_dir + os.sep + 'tmp' - build_target_bundle(target_dir, args.user, args.password, test_info) + if args.targetdir is not None: + target_dir = args.targetdir + else: + target_dir = daplink_dir + os.sep + 'tmp' + build_target_bundle(target_dir, args.user, args.password, test_info) + + target_bundle = load_target_bundle(target_dir) + all_targets = target_bundle.get_target_list() if os.path.exists(args.logdir): if args.force: @@ -606,10 +613,9 @@ def main(): firmware_bundle = load_bundle_from_project() else: firmware_bundle = load_bundle_from_release(args.firmwaredir) - target_bundle = load_target_bundle(target_dir) + all_firmware = firmware_bundle.get_firmware_list() all_boards = get_all_attached_daplink_boards() - all_targets = target_bundle.get_target_list() for board in all_boards: if board.get_mode() == board.MODE_BL: @@ -620,6 +626,7 @@ def main(): print('Unable to switch mode on board: %s' % board.unique_id) # Make sure firmware is present + firmware_explicitly_specified = len(args.firmware) != 0 if firmware_explicitly_specified: all_firmware_names = set(fw.name for fw in all_firmware) firmware_missing = False @@ -635,7 +642,8 @@ def main(): tester = TestManager() tester.add_firmware(all_firmware) tester.add_boards(all_boards) - tester.add_targets(all_targets) + if all_targets is not None: + tester.add_targets(all_targets) if firmware_explicitly_specified: tester.set_firmware_filter(args.firmware)