<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 9/24/13 9:12 AM, Ned Batchelder wrote:<br>
    <blockquote cite="mid:52418FCA.1060503@nedbatchelder.com"
      type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      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>
    </blockquote>
    <br>
    Sorry, I overlooked a better answer: any wildcard pattern that
    matches your run paths will work, for example:<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; */run<br>
    <br>
    --Ned.<br>
    <blockquote cite="mid:52418FCA.1060503@nedbatchelder.com"
      type="cite"> I've created a ticket to track the fix for relative
      paths:
      <a moz-do-not-send="true" 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>
    </blockquote>
    <br>
  </body>
</html>