<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 9/24/13 7:31 AM, Lucian Ciufudean wrote:<br>
    <blockquote
cite="mid:CANn=0kyoYpsZf+kB_=Y==p0bM1rJdaEbqXHYx+3ULsRcsLO1BQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>Back again, it does not work, neither with a relative or
          absolute path in .coveragerc<br>
        </div>
        <div><br>
        </div>
        <div>
          <div>[root@spahire pyc]# coverage erase</div>
          <div>[root@spahire pyc]# ls -la</div>
          <div>
            total 28</div>
          <div>drwxr-xr-x. 2 root root 4096 Sep 24 12:28 .</div>
          <div>drwxr-xr-x. 4 root root 4096 Sep 17 15:58 ..</div>
          <div>-rw-r--r--. 1 root root &nbsp;105 Sep 18 14:02 api.py</div>
          <div>-rw-r--r--. 1 root root &nbsp; 50 Sep 24 12:24 .coveragerc</div>
          <div>-rw-r--r--. 1 root root &nbsp; 28 Sep 18 13:01 main.py</div>
          <div>-rw-------. 1 root root &nbsp;187 Sep 17 15:59
            test_coverage_callee.pyc</div>
          <div>-rw-------. 1 root root &nbsp;212 Sep 17 15:59
            test_coverage_caller.pyc</div>
          <div>[root@spahire pyc]# cat .coveragerc</div>
          <div>[run]</div>
          <div>parallel = true</div>
          <div><br>
          </div>
          <div>[paths]</div>
          <div>mysources = ../src</div>
        </div>
      </div>
    </blockquote>
    <br>
    Hmm, it looks like there's a little more work for me in
    coverage.py.&nbsp; I had meant for your [paths] section to have two lines
    in the value: one with "../src", and one with a single dot: "." .&nbsp;&nbsp;
    Like this:<br>
    <br>
    &nbsp;&nbsp;&nbsp; [run]<br>
    &nbsp;&nbsp;&nbsp; parallel = true<br>
    <br>
    &nbsp;&nbsp;&nbsp; [paths]<br>
    &nbsp;&nbsp;&nbsp; mysources =<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ../src<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .<br>
    <br>
    This tells "coverage combine" that when it encounters a path to a
    file in the current directory, it should remap it to ../src
    instead.&nbsp; BUT: relative paths don't work!&nbsp; If you put an absolute
    path in for the second entry, it will work:<br>
    <br>
    &nbsp;&nbsp;&nbsp; [paths]<br>
    &nbsp;&nbsp;&nbsp; mysources =<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ../src<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /Users/ned/foo/run<br>
    <br>
    I've created a ticket to track the fix for relative paths:
<a class="moz-txt-link-freetext" href="https://bitbucket.org/ned/coveragepy/issue/267/relative-path-aliases-dont-work">https://bitbucket.org/ned/coveragepy/issue/267/relative-path-aliases-dont-work</a><br>
    <br>
    This has been a very productive exchange! Three tickets! Thanks for
    finding these problems, sorry it couldn't have been flawless from
    the start..<br>
    <br>
    --Ned.<br>
    <blockquote
cite="mid:CANn=0kyoYpsZf+kB_=Y==p0bM1rJdaEbqXHYx+3ULsRcsLO1BQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>[root@spahire pyc]# coverage run main.py</div>
          <div>1</div>
          <div>2</div>
          <div>2.1</div>
          <div>2.2</div>
          <div>2.3</div>
          <div>[root@spahire pyc]# coverage combine</div>
          <div>[root@spahire pyc]# coverage report</div>
          <div>Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stmts &nbsp; Miss &nbsp;Cover</div>
          <div>------------------------------------------</div>
          <div>main &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; &nbsp; &nbsp;0 &nbsp; 100%</div>
          <div>test_coverage_callee &nbsp; NoSource: No source for code:
            '/root/lucian/coverage/module1/pyc/test_coverage_callee.py'</div>
          <div>test_coverage_caller &nbsp; NoSource: No source for code:
            '/root/lucian/coverage/module1/pyc/test_coverage_caller.py'</div>
        </div>
        <div><br>
        </div>
        <div>Lucian</div>
        <div><br>
        </div>
        <div class="gmail_extra"><br>
          <br>
          <div class="gmail_quote">On Thu, Sep 19, 2013 at 2:43 AM, Ned
            Batchelder <span dir="ltr">&lt;<a moz-do-not-send="true"
                href="mailto:ned@nedbatchelder.com" target="_blank">ned@nedbatchelder.com</a>&gt;</span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000">
                <div class="im"> On 9/18/13 9:10 AM, Lucian Ciufudean
                  wrote:<br>
                  <blockquote type="cite">
                    <div dir="ltr">Sorry for all these iterations, here
                      is a more consistent (but long) email.
                      <div>
                        <div><br>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                </div>
                Iterations are fine as long as they bring more detail!&nbsp;
                Thanks for putting in all the work.
                <div class="im"><br>
                  <br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div>
                        <div>After not being able to run 'coverage run
                          pyc_file.pyc', I created a dummy driver
                          main.py file that uses the compiled modules.</div>
                        <div><br>
                        </div>
                        <div>
                          <div>root@spahire pyc]# ls -la</div>
                          <div>total 20</div>
                          <div>drwxr-xr-x. 2 root root 4096 Sep 18 13:20
                            .</div>
                          <div>drwxr-xr-x. 4 root root 4096 Sep 17 15:58
                            ..</div>
                          <div>-rw-r--r--. 1 root root &nbsp; 28 Sep 18 13:01
                            main.py</div>
                          <div>-rw-------. 1 root root &nbsp;187 Sep 17 15:59
                            test_coverage_callee.pyc</div>
                          <div>-rw-------. 1 root root &nbsp;212 Sep 17 15:59
                            test_coverage_caller.pyc</div>
                          <div>[root@spahire pyc]# cat &nbsp;main.py</div>
                          <div>import test_coverage_caller</div>
                        </div>
                        <div><br>
                        </div>
                        <div>The source files for the 2 pyc files are
                          here:</div>
                        <div><br>
                        </div>
                        <div>
                          <div>[root@spahire pyc]# ls ../src</div>
                          <div>test_coverage_callee.py
                            &nbsp;test_coverage_caller.py</div>
                        </div>
                        <div><br>
                        </div>
                        <div> Further, I run coverage, I get a warning
                          but a data file .coverage is created:</div>
                        <div><br>
                        </div>
                        <div>
                          <div>[root@spahire pyc]# coverage run
                            --source=../src main.py</div>
                          <div>1</div>
                          <div>2</div>
                          <div>2.1</div>
                          <div>2.2</div>
                          <div>2.3</div>
                          <div>Coverage.py warning: No data was
                            collected.</div>
                          <div>[root@spahire pyc]# ls -l .coverage</div>
                          <div>-rw-r--r--. 1 root root 180 Sep 18 13:23
                            .coverage</div>
                          <div><br>
                          </div>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                </div>
                The --source option tells coverage that the only files
                of interest are the ones in ../src.&nbsp; You never execute
                any files in ../src, so coverage hasn't collected any
                data.
                <div class="im"><br>
                  <br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div>
                        <div>--include does not make a difference:</div>
                        <div><br>
                        </div>
                        <div>
                          <div>[root@spahire pyc]# coverage run
                            --source=../src --include='*' main.py</div>
                          <div>1</div>
                          <div>2</div>
                          <div>2.1</div>
                          <div>2.2</div>
                          <div>2.3</div>
                          <div>Coverage.py warning: No data was
                            collected.</div>
                          <div>[root@spahire pyc]# ls -l .coverage</div>
                          <div>-rw-r--r--. 1 root root 180 Sep 18 13:38
                            .coverage</div>
                        </div>
                        <div><br>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                </div>
                Right, --source trumps --include.&nbsp; You've already told
                coverage that the only interesting files are in ../src,
                so there's nothing else to include.&nbsp; I should make a
                warning for inconsistent options like this (ticket:
                <a moz-do-not-send="true"
href="https://bitbucket.org/ned/coveragepy/issue/265/when-using-source-include-is-silently"
                  target="_blank">https://bitbucket.org/ned/coveragepy/issue/265/when-using-source-include-is-silently</a>)
                <div class="im"><br>
                  <br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div>
                        <div>As expected, report shows nothing is
                          covered:</div>
                        <div><br>
                        </div>
                        <div>
                          <div>[root@spahire pyc]# coverage report
                            --include='*test*'</div>
                          <div>Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stmts &nbsp; Miss &nbsp;Cover</div>
                          <div>----------------------------------------------------------------------------</div>
                          <div>/root/lucian/coverage/module1/src/test_coverage_callee

                            &nbsp; &nbsp; &nbsp; 3 &nbsp; &nbsp; &nbsp;3 &nbsp; &nbsp; 0%</div>
                          <div>/root/lucian/coverage/module1/src/test_coverage_caller

                            &nbsp; &nbsp; &nbsp; 3 &nbsp; &nbsp; &nbsp;3 &nbsp; &nbsp; 0%</div>
                          <div>----------------------------------------------------------------------------</div>
                          <div>TOTAL &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                            &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;6 &nbsp; &nbsp; &nbsp;6 &nbsp; &nbsp; 0%</div>
                          <div><br>
                          </div>
                          <div>report does not accept --source, might
                            this be the root to all evil?</div>
                          <div><br>
                          </div>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                </div>
                Hmm, that seems like an oversight: I should make that
                possible (ticket:
                <a moz-do-not-send="true"
href="https://bitbucket.org/ned/coveragepy/issue/266/report-command-doesnt-accept-source-option"
                  target="_blank">https://bitbucket.org/ned/coveragepy/issue/266/report-command-doesnt-accept-source-option</a>)
                <div class="im">
                  <br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div>
                        <div>
                          <div>[root@spahire pyc]# coverage report
                            --include='*test*' --source=../src</div>
                          <div>no such option: --source</div>
                          <div>Use 'coverage help' for help.</div>
                        </div>
                        <div><br>
                        </div>
                        <div>No warning when using run without options,
                          but the report is again wrong:</div>
                        <div><br>
                        </div>
                        <div>
                          <div>
                            <div>[root@spahire pyc]# coverage run
                              main.py</div>
                            <div>1</div>
                            <div>2</div>
                            <div>2.1</div>
                            <div>2.2</div>
                            <div>2.3</div>
                            <div>[root@spahire pyc]# coverage report</div>
                            <div>Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stmts &nbsp; Miss
                              &nbsp;Cover</div>
                            <div>------------------------------------------</div>
                            <div> main &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; &nbsp; &nbsp;0 &nbsp;
                              100%</div>
                            <div>test_coverage_callee &nbsp; NoSource: No
                              source for code:
'/root/lucian/coverage/module1/pyc/test_coverage_callee.py'</div>
                            <div>test_coverage_caller &nbsp; NoSource: No
                              source for code:
'/root/lucian/coverage/module1/pyc/test_coverage_caller.py'</div>
                          </div>
                        </div>
                        <div><br>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                </div>
                The problem is that you haven't told coverage how to
                find the source files that correspond to your .pyc
                files.&nbsp; The --source option doesn't do that.
                <div class="im"><br>
                  <br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div>
                        <div>Same thing with a configuration file:</div>
                        <div>
                          <div>[root@spahire pyc]# cat .coveragerc</div>
                          <div>[run]</div>
                          <div>source=../src/</div>
                          <div>include=*</div>
                        </div>
                        <div><br>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                </div>
                Right, same options, specified in a different way.
                <div class="im"><br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div>
                        <div>So now I turn to the api + the same
                          .coveragerc, the same thing:</div>
                        <div><br>
                        </div>
                        <div>
                          <div>[root@spahire pyc]# cat api.py</div>
                          <div>import coverage</div>
                          <div>cov = coverage.coverage()</div>
                          <div>cov.start()</div>
                          <div>import test_coverage_caller</div>
                          <div>cov.stop()</div>
                          <div>cov.save()</div>
                          <div><br>
                          </div>
                          <div>[root@spahire pyc]# python api.py</div>
                          <div>1</div>
                          <div>2</div>
                          <div>2.1</div>
                          <div>2.2</div>
                          <div>2.3</div>
                          <div>Coverage.py warning: No data was
                            collected.</div>
                        </div>
                      </div>
                      <div><br>
                      </div>
                    </div>
                  </blockquote>
                </div>
                Another run with the same (non-)options.
                <div class="im"><br>
                  <br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div>As for your suggestion with [paths], the docs
                        suggest to me that this is for combining data.</div>
                    </div>
                  </blockquote>
                </div>
                Yes, it is used when combining data, I should have
                fleshed out my idea more fully.&nbsp; Try creating a
                .coveragerc file like this:<br>
                <br>
                &nbsp;&nbsp;&nbsp; [run]<br>
                &nbsp;&nbsp;&nbsp; parallel = true<br>
                <br>
                &nbsp;&nbsp;&nbsp; [paths]<br>
                &nbsp;&nbsp;&nbsp; mysources =<br>
                &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ../src<br>
                &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .<br>
                <br>
                Then use "coverage run main.py", then "coverage
                combine", then "coverage report".&nbsp; If that works, we can
                talk about how to make it a bit easier.<br>
                <br>
                Hope that helps,
                <div>
                  <div class="h5"><br>
                    <br>
                    --Ned.<br>
                    <br>
                    <blockquote type="cite">
                      <div dir="ltr">
                        <div><br>
                        </div>
                        <div>Lucian</div>
                        <div><br>
                        </div>
                        <div class="gmail_extra"><br>
                          <br>
                          <div class="gmail_quote">On Wed, Sep 18, 2013
                            at 1:20 PM, Ned Batchelder <span dir="ltr">&lt;<a
                                moz-do-not-send="true"
                                href="mailto:ned@nedbatchelder.com"
                                target="_blank">ned@nedbatchelder.com</a>&gt;</span>
                            wrote:<br>
                            <blockquote class="gmail_quote"
                              style="margin:0 0 0 .8ex;border-left:1px
                              #ccc solid;padding-left:1ex">
                              <div bgcolor="#FFFFFF" text="#000000">
                                <div> On 9/18/13 3:42 AM, Lucian
                                  Ciufudean wrote:<br>
                                  <blockquote type="cite">
                                    <div dir="ltr">Here is how I ran
                                      coverage:
                                      <div><br>
                                      </div>
                                      <div>&nbsp; &nbsp; coverage run
                                        --source=../src main.py<br>
                                      </div>
                                      <div><br>
                                      </div>
                                      <div>main.py imports a pyc file
                                        that resides in the same folder.
                                        The source of this pyc file is
                                        available in ../src.</div>
                                      <div>(I created main.py just to go
                                        around the bug that you
                                        submitted above)</div>
                                      <div><br>
                                      </div>
                                    </div>
                                  </blockquote>
                                </div>
                                You don't mention the exact errors you
                                saw (details matter), but in your
                                previous message you mentioned the
                                problem being while reporting.&nbsp; You'll
                                also have to specify the source
                                directory during the "coverage html"
                                command (or coverage.html() call).&nbsp; A
                                good way to do this is with a
                                .coveragerc file.<span><font
                                    color="#888888"><br>
                                    <br>
                                    --Ned.</font></span>
                                <div><br>
                                  <br>
                                  <blockquote type="cite">
                                    <div dir="ltr">
                                      <div>Lucian</div>
                                    </div>
                                    <div class="gmail_extra"><br>
                                      <br>
                                      <div class="gmail_quote">On Wed,
                                        Sep 18, 2013 at 5:05 AM, Ned
                                        Batchelder <span dir="ltr">&lt;<a
                                            moz-do-not-send="true"
                                            href="mailto:ned@nedbatchelder.com"
                                            target="_blank">ned@nedbatchelder.com</a>&gt;</span>
                                        wrote:<br>
                                        <blockquote class="gmail_quote"
                                          style="margin:0 0 0
                                          .8ex;border-left:1px #ccc
                                          solid;padding-left:1ex">
                                          <div bgcolor="#FFFFFF"
                                            text="#000000">
                                            <div> On 9/17/13 7:42 AM,
                                              Lucian Ciufudean wrote:<br>
                                              <blockquote type="cite">
                                                <div dir="ltr">Hi guys,
                                                  <div><br>
                                                  </div>
                                                  <div>I embarked on the
                                                    road of obtaining a
                                                    coverage report for
                                                    functional tests
                                                    against a server
                                                    process. The server
                                                    is deployed as .pyc
                                                    files, and the
                                                    source files can be
                                                    made available in a
                                                    separate subversion
                                                    working folder. I
                                                    wouldn't want to
                                                    edit any existing
                                                    .py files.</div>
                                                  <div><br>
                                                  </div>
                                                  <div>Can coverage work
                                                    with .pyc files - I
                                                    am getting errors
                                                    when using coverage
                                                    run main.pyc from
                                                    the command line, so
                                                    maybe with the API?
                                                    <br>
                                                  </div>
                                                </div>
                                              </blockquote>
                                              <br>
                                            </div>
                                            Hmm, you're right: "coverage
                                            run foo.pyc" does not work.
                                            I've created a ticket for
                                            this: <a
                                              moz-do-not-send="true"
href="https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-pyc-files"
                                              target="_blank">https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-pyc-files</a>
                                            <div><br>
                                              <br>
                                              <blockquote type="cite">
                                                <div dir="ltr">
                                                  <div>I tired this
                                                    also, my custom code
                                                    is run but it can
                                                    not find the source
                                                    files at the time of
                                                    coverage.html_report()
                                                    although I passed
                                                    the directory of
                                                    source files to
                                                    coverage.coverage.</div>
                                                </div>
                                              </blockquote>
                                              <br>
                                            </div>
                                            You'll have to show details
                                            of how you tried to run
                                            coverage.&nbsp; If the .py files
                                            are in the places reported
                                            by your program, then it
                                            should work.&nbsp; You can also
                                            use the [paths] section of a
                                            .coveragerc to instruct
                                            coverage where the files
                                            are.<br>
                                            <br>
                                            --Ned.<br>
                                            <br>
                                            <blockquote type="cite">
                                              <div dir="ltr">
                                                <div><br>
                                                </div>
                                                <div>Thanks a lot,</div>
                                                <div>Lucian</div>
                                              </div>
                                              <br>
                                              <fieldset></fieldset>
                                              <br>
                                              <pre>_______________________________________________
testing-in-python mailing list
<a moz-do-not-send="true" href="mailto:testing-in-python@lists.idyll.org" target="_blank">testing-in-python@lists.idyll.org</a>
<a moz-do-not-send="true" href="http://lists.idyll.org/listinfo/testing-in-python" target="_blank">http://lists.idyll.org/listinfo/testing-in-python</a>
</pre>
                                            </blockquote>
                                            <br>
                                          </div>
                                        </blockquote>
                                      </div>
                                      <br>
                                    </div>
                                  </blockquote>
                                  <br>
                                </div>
                              </div>
                            </blockquote>
                          </div>
                          <br>
                        </div>
                      </div>
                    </blockquote>
                    <br>
                  </div>
                </div>
              </div>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>