Sfoglia il codice sorgente

Merge remote-tracking branch 'catalyst-oniongit/bug23739'

Nick Mathewson 6 anni fa
parent
commit
bc6769e0d4
3 ha cambiato i file con 23 aggiunte e 8 eliminazioni
  1. 3 0
      changes/bug23739
  2. 15 7
      doc/HACKING/HelpfulTools.md
  3. 5 1
      doc/HACKING/WritingTests.md

+ 3 - 0
changes/bug23739

@@ -0,0 +1,3 @@
+  o Minor bugfixes (documentation):
+    - Document better how to read gcov and what our postprocessing scripts do.
+      Fixes bug 23739; bugfix on 0.2.9.1-alpha.

+ 15 - 7
doc/HACKING/HelpfulTools.md

@@ -111,15 +111,19 @@ Running gcov for unit test coverage
 
 
 (On OSX, you'll need to start with `--enable-coverage CC=clang`.)
 (On OSX, you'll need to start with `--enable-coverage CC=clang`.)
 
 
-Then, look at the .gcov files in `coverage-output`.  '-' before a line means
-that the compiler generated no code for that line.  '######' means that the
-line was never reached.  Lines with numbers were called that number of times.
-
 If that doesn't work:
 If that doesn't work:
 
 
    * Try configuring Tor with `--disable-gcc-hardening`
    * Try configuring Tor with `--disable-gcc-hardening`
    * You might need to run `make clean` after you run `./configure`.
    * You might need to run `make clean` after you run `./configure`.
 
 
+Then, look at the .gcov files in `coverage-output`.  '-' before a line means
+that the compiler generated no code for that line.  '######' means that the
+line was never reached.  Lines with numbers were called that number of times.
+
+For more details about how to read gcov output, see the [Invoking
+gcov](https://gcc.gnu.org/onlinedocs/gcc/Invoking-Gcov.html) chapter
+of the GCC manual.
+
 If you make changes to Tor and want to get another set of coverage results,
 If you make changes to Tor and want to get another set of coverage results,
 you can run `make reset-gcov` to clear the intermediary gcov output.
 you can run `make reset-gcov` to clear the intermediary gcov output.
 
 
@@ -128,9 +132,13 @@ a meaningful diff between them, you can run:
 
 
     ./scripts/test/cov-diff coverage-output1 coverage-output2 | less
     ./scripts/test/cov-diff coverage-output1 coverage-output2 | less
 
 
-In this diff, any lines that were visited at least once will have coverage
-"1".  This lets you inspect what you (probably) really want to know: which
-untested lines were changed?  Are there any new untested lines?
+In this diff, any lines that were visited at least once will have coverage "1",
+and line numbers are deleted.  This lets you inspect what you (probably) really
+want to know: which untested lines were changed?  Are there any new untested
+lines?
+
+If you run ./scripts/test/cov-exclude, it marks excluded unreached
+lines with 'x', and excluded reached lines with '!!!'.
 
 
 Running integration tests
 Running integration tests
 -------------------------
 -------------------------

+ 5 - 1
doc/HACKING/WritingTests.md

@@ -91,6 +91,9 @@ coverage percentage.
 For a summary of the test coverage for each _function_, run
 For a summary of the test coverage for each _function_, run
 `./scripts/test/cov-display -f ${TMPDIR}/*`.
 `./scripts/test/cov-display -f ${TMPDIR}/*`.
 
 
+For more details on using gcov, including the helper scripts in
+scripts/test, see HelpfulTools.md.
+
 ### Comparing test coverage
 ### Comparing test coverage
 
 
 Sometimes it's useful to compare test coverage for a branch you're writing to
 Sometimes it's useful to compare test coverage for a branch you're writing to
@@ -117,7 +120,8 @@ with LCOV_EXCL_START... LCOV_EXCL_STOP.  Note that older versions of
 lcov don't understand these lines.
 lcov don't understand these lines.
 
 
 You can post-process .gcov files to make these lines 'unreached' by
 You can post-process .gcov files to make these lines 'unreached' by
-running ./scripts/test/cov-exclude on them.
+running ./scripts/test/cov-exclude on them.  It marks excluded
+unreached lines with 'x', and excluded reached lines with '!!!'.
 
 
 Note: you should never do this unless the line is meant to 100%
 Note: you should never do this unless the line is meant to 100%
 unreachable by actual code.
 unreachable by actual code.