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

Gedare Bloom gedare at rtems.org
Wed Jun 13 17:12:10 UTC 2018


On Wed, Jun 13, 2018 at 12:23 PM, Vijay Kumar Banerjee
<vijaykumar9597 at gmail.com> wrote:
>
>
> On Wed, 13 Jun 2018, 21:39 Gedare Bloom, <gedare at rtems.org> wrote:
>>
>> On Wed, Jun 13, 2018 at 11:58 AM, Vijay Kumar Banerjee
>> <vijaykumar9597 at gmail.com> wrote:
>> > On 13 June 2018 at 10:29, Gedare Bloom <gedare at rtems.org> wrote:
>> >>
>> >> 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.
>> >
>> > Will update it according to your suggestion. :)
>> >>
>> >>
>> >> >              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?
>> >
>> > This patch was made following Chris' comments in another thread
>> >
>> > https://lists.rtems.org/pipermail/devel/2018-June/021931.html
>> >
>>
>> I can't be sure, but I don't think his intent was to infer the
>> coverage from the ini file name. For example, does the tester parse
>> the ini file name to check for 'qemu' to decide if that target is
>> being used? Instead, it should look in to the config file to read the
>> option somehow.
>
> In leon3-qemu.ini the bsp option inside the
> config file is set to leon3-qemu.
>
> There's no such special thing added to bsp for coverage.
> Only difference we have is that,
> the option 'bsp_qemu_cov_opts' is added in the coverage supported file. we
> can
> read the config file to see if this option is present.
>
> Shall I do it this way?

Yes, I suspect you should.

>>
>> >>
>> >> > +            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?
>> >
>> > that's a mistake, I'll correct it. Thanks.
>> >>
>> >>
>> >> > +                    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