Rev 3086: Add a --coverage option to selftest. in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu Dec 6 13:50:51 GMT 2007


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 3086
revision-id:pqm at pqm.ubuntu.com-20071206135045-uhim2fpy9d2n4esa
parent: pqm at pqm.ubuntu.com-20071206063448-0fk3ky25yb3lwxi8
parent: andrew.bennetts at canonical.com-20071206120335-o7s9lfxyupf08nfm
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2007-12-06 13:50:45 +0000
message:
  Add a --coverage option to selftest.
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
    ------------------------------------------------------------
    revno: 3084.1.1
    revision-id:andrew.bennetts at canonical.com-20071206120335-o7s9lfxyupf08nfm
    parent: pqm at pqm.ubuntu.com-20071205233104-ghmsse3nmhbnz0n1
    committer: Andrew Bennetts <andrew.bennetts at canonical.com>
    branch nick: selftest-coverage
    timestamp: Thu 2007-12-06 23:03:35 +1100
    message:
      Add a --coverage option to selftest.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
=== modified file 'NEWS'
--- a/NEWS	2007-12-05 22:52:58 +0000
+++ b/NEWS	2007-12-06 12:03:35 +0000
@@ -9,6 +9,8 @@
 
   IMPROVEMENTS:
 
+   * Added a --coverage option to selftest. (Andrew Bennetts)
+
    * ``bzr commit`` now doesn't print the revision number twice. (Matt
      Nordhoff, #172612)
 

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2007-12-05 23:31:04 +0000
+++ b/bzrlib/builtins.py	2007-12-06 12:03:35 +0000
@@ -2604,6 +2604,9 @@
                                  ' expression.'),
                      Option('strict', help='Fail on missing dependencies or '
                             'known failures.'),
+                     Option('coverage', type=str, argname="DIRECTORY",
+                            help='Generate line coverage report in this'
+                                 'directory.'),
                      ]
     encoding_type = 'replace'
 
@@ -2611,7 +2614,7 @@
             transport=None, benchmark=None,
             lsprof_timed=None, cache_dir=None,
             first=False, list_only=False,
-            randomize=None, exclude=None, strict=False):
+            randomize=None, exclude=None, strict=False, coverage=None):
         import bzrlib.ui
         from bzrlib.tests import selftest
         import bzrlib.benchmarks as benchmarks
@@ -2653,6 +2656,7 @@
                               random_seed=randomize,
                               exclude_pattern=exclude,
                               strict=strict,
+                              coverage_dir=coverage,
                               )
         finally:
             if benchfile is not None:

=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py	2007-12-04 00:42:43 +0000
+++ b/bzrlib/tests/__init__.py	2007-12-06 12:03:35 +0000
@@ -42,8 +42,9 @@
 from subprocess import Popen, PIPE
 import sys
 import tempfile
+import time
+import trace
 import unittest
-import time
 import warnings
 
 
@@ -2286,6 +2287,7 @@
               random_seed=None,
               exclude_pattern=None,
               strict=False,
+              coverage_dir=None,
               ):
     TestCase._gather_lsprof_in_benchmarks = lsprof_timed
     if verbose:
@@ -2323,8 +2325,19 @@
         else:
             suite = filter_suite_by_re(suite, pattern, exclude_pattern,
                 random_order)
+
+    if coverage_dir is not None:
+        tracer = trace.Trace(count=1, trace=0)
+        sys.settrace(tracer.globaltrace)
+
     result = runner.run(suite)
 
+    if coverage_dir is not None:
+        sys.settrace(None)
+        results = tracer.results()
+        results.write_results(show_missing=1, summary=False,
+                              coverdir=coverage_dir)
+
     if strict:
         return result.wasStrictlySuccessful()
 
@@ -2341,6 +2354,7 @@
              random_seed=None,
              exclude_pattern=None,
              strict=False,
+             coverage_dir=None,
              ):
     """Run the whole test suite under the enhanced runner"""
     # XXX: Very ugly way to do this...
@@ -2368,7 +2382,8 @@
                      list_only=list_only,
                      random_seed=random_seed,
                      exclude_pattern=exclude_pattern,
-                     strict=strict)
+                     strict=strict,
+                     coverage_dir=coverage_dir)
     finally:
         default_transport = old_transport
 




More information about the bazaar-commits mailing list