[PATCH v2] coverage.py: Call covoar once

Gedare Bloom gedare at rtems.org
Tue Apr 6 16:14:20 UTC 2021


Pythonic! Looks good to me.

On Tue, Apr 6, 2021 at 10:12 AM Alex White <alex.white at oarcorp.com> wrote:
>
> Updates #4374
> ---
>  tester/rt/coverage.py | 60 +++++++++++++++++++++----------------------
>  1 file changed, 30 insertions(+), 30 deletions(-)
>
> diff --git a/tester/rt/coverage.py b/tester/rt/coverage.py
> index 29ed60b..beda207 100644
> --- a/tester/rt/coverage.py
> +++ b/tester/rt/coverage.py
> @@ -304,22 +304,26 @@ class symbol_parser(object):
>          except:
>              raise error.general('Symbol set parsing failed for %s' % (sset))
>
> -    def write_ini(self, symbol_set):
> +    def write_ini(self, symbol_sets):
>          config = configparser.ConfigParser()
> -        try:
> -            sset = symbol_set
> -            config.add_section('symbol-sets')
> -            config.set('symbol-sets', 'sets', sset)
> -            config.add_section(sset)
> -            object_files = [o for o in path.listdir(self.symbol_sets[sset]) if o[-1] == 'o']
> -            object_paths = []
> -            for o in object_files:
> -                object_paths.append(path.join(self.symbol_sets[sset], o))
> -            config.set(sset, 'libraries', ','.join(object_paths))
> -            with open(self.symbol_select_file, 'w') as conf:
> -                    config.write(conf)
> -        except:
> -            raise error.general('symbol parser write failed for %s' % (sset))
> +        config.add_section('symbol-sets')
> +
> +        for sset in symbol_sets:
> +            try:
> +                config.add_section(sset)
> +                object_paths = [
> +                    path.join(self.symbol_sets[sset], o)
> +                    for o in path.listdir(self.symbol_sets[sset])
> +                    if path.splitext(o)[1] == '.o'
> +                ]
> +                config.set(sset, 'libraries', ','.join(object_paths))
> +            except:
> +                raise error.general('symbol parser write failed for %s' % (sset))
> +
> +        config.set('symbol-sets', 'sets', ','.join(symbol_sets))
> +
> +        with open(self.symbol_select_file, 'w') as conf:
> +            config.write(conf)
>
>  class covoar(object):
>      '''
> @@ -352,23 +356,20 @@ class covoar(object):
>              return exe
>          raise error.general('coverage: %s not found'% (covoar_exe))
>
> -    def run(self, set_name, symbol_file):
> -        covoar_result_dir = path.join(self.base_result_dir, set_name)
> -        if not path.exists(covoar_result_dir):
> -            path.mkdir(covoar_result_dir)
> +    def run(self, symbol_file):
>          if not path.exists(symbol_file):
>              raise error.general('coverage: no symbol set file: %s'% (symbol_file))
>          exe = self._find_covoar()
>          # The order of these arguments matters. Command line options must come
>          # before the executable path arguments because covoar uses getopt() to
>          # process the command line options.
> -        command = exe + ' -O ' + covoar_result_dir + \
> +        command = exe + ' -O ' + self.base_result_dir + \
>                    ' -p ' + self.project_name + \
>                    ' ' + self.covoar_cmd + ' '
>          command += self.executables
>
>          log.notice()
> -        log.notice('Running coverage analysis: %s (%s)' % (set_name, covoar_result_dir))
> +        log.notice('Running coverage analysis (%s)' % (self.base_result_dir))
>          start_time = datetime.datetime.now()
>          executor = execute.execute(verbose = self.trace, output = self.output_handler)
>          exit_code = executor.shell(command, cwd=os.getcwd())
> @@ -424,15 +425,14 @@ class coverage_run(object):
>                                     self.bsp_name,
>                                     self.target)
>              symbol_sets = parser.parse()
> -            for sset in symbol_sets:
> -                parser.write_ini(sset)
> -                covoar_runner = covoar(self.test_dir,
> -                                       self.symbol_select_path,
> -                                       self.executables,
> -                                       self.trace,
> -                                       self.prefix,
> -                                       self.covoar_cmd)
> -                covoar_runner.run(sset, self.symbol_select_path)
> +            parser.write_ini(symbol_sets)
> +            covoar_runner = covoar(self.test_dir,
> +                                   self.symbol_select_path,
> +                                   self.executables,
> +                                   self.trace,
> +                                   self.prefix,
> +                                   self.covoar_cmd)
> +            covoar_runner.run(self.symbol_select_path)
>              self._generate_reports(symbol_sets);
>              self._summarize();
>          finally:
> --
> 2.27.0
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list