From 50ef6207f06ee343a956bc4ab3b31894bff6f901 Mon Sep 17 00:00:00 2001 From: Przemek Wirkus Date: Wed, 4 Mar 2015 09:48:39 +0000 Subject: [PATCH] Added new switch -p to force peripheral in autodetection mode (--auto) --- workspace_tools/singletest.py | 1 + workspace_tools/test_api.py | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/workspace_tools/singletest.py b/workspace_tools/singletest.py index 5538291e9d..f86bca7301 100644 --- a/workspace_tools/singletest.py +++ b/workspace_tools/singletest.py @@ -213,6 +213,7 @@ if __name__ == '__main__': _opts_shuffle_test_order=opts.shuffle_test_order, _opts_shuffle_test_seed=opts.shuffle_test_seed, _opts_test_by_names=opts.test_by_names, + _opts_peripheral_by_names=opts.peripheral_by_names, _opts_test_only_peripheral=opts.test_only_peripheral, _opts_test_only_common=opts.test_only_common, _opts_verbose_skipped_tests=opts.verbose_skipped_tests, diff --git a/workspace_tools/test_api.py b/workspace_tools/test_api.py index 7194d45d3a..595bfad354 100644 --- a/workspace_tools/test_api.py +++ b/workspace_tools/test_api.py @@ -159,6 +159,7 @@ class SingleTestRunner(object): _opts_shuffle_test_order=False, _opts_shuffle_test_seed=None, _opts_test_by_names=None, + _opts_peripheral_by_names=None, _opts_test_only_peripheral=False, _opts_test_only_common=False, _opts_verbose_skipped_tests=False, @@ -208,6 +209,7 @@ class SingleTestRunner(object): self.opts_shuffle_test_order = _opts_shuffle_test_order self.opts_shuffle_test_seed = _opts_shuffle_test_seed self.opts_test_by_names = _opts_test_by_names + self.opts_peripheral_by_names = _opts_peripheral_by_names self.opts_test_only_peripheral = _opts_test_only_peripheral self.opts_test_only_common = _opts_test_only_common self.opts_verbose_skipped_tests = _opts_verbose_skipped_tests @@ -255,6 +257,7 @@ class SingleTestRunner(object): "shuffle_test_order" : str(self.opts_shuffle_test_order), "shuffle_test_seed" : str(self.opts_shuffle_test_seed), "test_by_names" : str(self.opts_test_by_names), + "peripheral_by_names" : str(self.opts_peripheral_by_names), "test_only_peripheral" : str(self.opts_test_only_peripheral), "test_only_common" : str(self.opts_test_only_common), "verbose" : str(self.opts_verbose), @@ -360,8 +363,10 @@ class SingleTestRunner(object): self.db_logger.update_build_id_info(self.db_logger_build_id, _extra=json.dumps(self.dump_options())) self.db_logger.disconnect(); + for test_id in test_map_keys: test = TEST_MAP[test_id] + if self.opts_test_by_names and test_id not in self.opts_test_by_names.split(','): continue @@ -374,6 +379,13 @@ class SingleTestRunner(object): test_suite_properties['skipped'].append(test_id) continue + if self.opts_peripheral_by_names and test.peripherals and not len([i for i in test.peripherals if i in self.opts_peripheral_by_names.split(',')]): + # We will skip tests not forced with -p option + if self.opts_verbose_skipped_tests: + print self.logger.log_line(self.logger.LogType.INFO, 'Common test skipped for target %s'% (target)) + test_suite_properties['skipped'].append(test_id) + continue + if self.opts_test_only_common and test.peripherals: if self.opts_verbose_skipped_tests: print self.logger.log_line(self.logger.LogType.INFO, 'Peripheral test skipped for target %s'% (target)) @@ -385,6 +397,10 @@ class SingleTestRunner(object): # When users are using 'build only flag' and test do not have # specified peripherals we can allow test building by default pass + elif self.opts_peripheral_by_names and test_id not in self.opts_peripheral_by_names.split(','): + # If we force peripheral with option -p we expect test + # to pass even if peripheral is not in MUTs file. + pass elif not self.is_peripherals_available(target, test.peripherals): if self.opts_verbose_skipped_tests: if test.peripherals: @@ -912,7 +928,7 @@ class SingleTestRunner(object): return (result, "".join(output), testcase_duration, duration) def is_peripherals_available(self, target_mcu_name, peripherals=None): - """ Checks if specified target should run specific peripheral test case + """ Checks if specified target should run specific peripheral test case defined in MUTs file """ if peripherals is not None: peripherals = set(peripherals) @@ -930,7 +946,7 @@ class SingleTestRunner(object): return False def shape_test_request(self, mcu, image_path, test_id, duration=10): - """ Function prepares JOSN structure describing test specification + """ Function prepares JSON structure describing test specification """ test_spec = { "mcu": mcu, @@ -1507,7 +1523,11 @@ def get_default_test_options_parser(): parser.add_option('-n', '--test-by-names', dest='test_by_names', - help='Runs only test enumerated it this switch') + help='Runs only test enumerated it this switch. Use comma to separate test case names.') + + parser.add_option('-p', '--peripheral-by-names', + dest='peripheral_by_names', + help='Forces discovery of particular peripherals. Use comma to separate peripheral names.') copy_methods = host_tests_plugins.get_plugin_caps('CopyMethod') copy_methods_str = "Plugin support: " + ', '.join(copy_methods)