[PATCH] coverage : Add support to run coverage in supported bsp without extra options

Gedare Bloom gedare at rtems.org
Wed Jun 13 14:29:12 UTC 2018


On Thu, Jun 7, 2018 at 7:08 AM, Vijay Kumar Banerjee
<vijaykumar9597 at gmail.com> wrote:
> Close #3440
> ---
>  tester/rt/coverage.py |  6 ++++--
>  tester/rt/test.py     | 15 ++++++++++-----
>  2 files changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/tester/rt/coverage.py b/tester/rt/coverage.py
> index 54933d5..af24124 100644
> --- a/tester/rt/coverage.py
> +++ b/tester/rt/coverage.py
> @@ -163,7 +163,8 @@ class report_gen_html:
>              row += " <td>" + summary.branches_uncovered + "</td>"
>              row += " <td>" + summary.branches_total + "</td>"
>              row += " <td> {:.3%} </td>".format(summary.percentage_branches_covered)
> -            row += ' <td><progress value="{:.3}" max="100"></progress></td>'.format(100*summary.percentage_branches_covered)
> +            row += ' <td><progress value="{:.3}" max="100"></progress></td>'\
> +                    .format(100*summary.percentage_branches_covered)

Is there a style guide for how to split long lines in Python? I find
splitting before the .format seems strange to me. I might have
preferred to see it split at .format(\ which probably can be done
without using a backslash in this case, since python knows to keep
scanning inside a parenthetical block.

>              row += "</tr>\n"
>          return row
>
> @@ -299,7 +300,8 @@ class covoar(object):
>          if (not path.exists(covoar_result_dir)):
>              path.mkdir(covoar_result_dir)
>          if (not path.exists(symbol_file)):
> -            raise error.general('symbol set file: coverage %s was not created for covoar, skipping %s'% (symbol_file, set_name))
> +            raise error.general('symbol set file: %s was not '
> +                    'created for covoar, skipping %s'% (symbol_file, set_name))

ditto.

>          command = ('covoar -S ' + symbol_file
>                    + ' -O ' + covoar_result_dir
>                    + ' -E ' + self.explanations_txt
> diff --git a/tester/rt/test.py b/tester/rt/test.py
> index 0e744cd..cdb5157 100644
> --- a/tester/rt/test.py
> +++ b/tester/rt/test.py
> @@ -232,7 +232,7 @@ def run(command_path = None):
>                      '--filter':         'Glob that executables must match to run (default: ' +
>                                default_exefilter + ')',
>                      '--stacktrace':     'Dump a stack trace on a user termination (^C)',
> -                    '--coverage':       'Perform coverage analysis of test executables.'}
> +                    '--coverage-sets':  'Perform coverage for specific sets'}
>          mailer.append_options(optargs)
>          opts = options.load(sys.argv,
>                              optargs = optargs,
> @@ -279,15 +279,20 @@ def run(command_path = None):
>          else:
>              rtems_tools = '%{_prefix}'
>          bsp = opts.find_arg('--rtems-bsp')
> +        if 'cov' in bsp[1].split('-'):

I'm not sure if this use of the 'cov' field in the bsp config filename
itself is the proper way to go about accomplishing the activation of
coverage. What are other possible ways to get this done? Is the use of
a portion of the bsp config filename done elsewhere in tester?

> +            coverage_enabled = True
>          if bsp is None or len(bsp) != 2:
>              raise error.general('RTEMS BSP not provided or an invalid option')
>          bsp = config.load(bsp[1], opts)
>          bsp_config = opts.defaults.expand(opts.defaults['tester'])
> -        coverage_enabled = opts.find_arg('--coverage')
> +        coverage_sets = opts.find_arg('--coverage-sets')
>          if coverage_enabled:
> -            if len(coverage_enabled) == 2:
> -                coverage_runner = coverage.coverage_run(opts.defaults,
> -                                                coverage_enabled[1],
> +            if coverage_sets:
> +                if len(coverage_sets) != 2:
> +                    raise error.general('No sets provided in --coverage-sets')
> +                else :

I don't think there should be a space character before the colon?

> +                    coverage_runner = coverage.coverage_run(opts.defaults,
> +                                                coverage_sets[1],
>                                                  executables)
>              else:
>                  coverage_runner = coverage.coverage_run(opts.defaults, 0,
> --
> 2.14.3
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list