changeset 641:df849161d683

0.6dev: Add a 'Coverage' context navigation menu item to source browser when browsing files.
author osimons
date Fri, 21 Aug 2009 08:57:06 +0000
parents 34776258924e
children 67ff41922acf
files bitten/report/coverage.py
diffstat 1 files changed, 23 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/report/coverage.py
+++ b/bitten/report/coverage.py
@@ -10,7 +10,9 @@
 
 from trac.core import *
 from trac.mimeview.api import IHTMLPreviewAnnotator
-from trac.web.chrome import add_stylesheet
+from trac.resource import Resource
+from trac.web.api import IRequestFilter
+from trac.web.chrome import add_stylesheet, add_ctxtnav
 from bitten.api import IReportChartGenerator, IReportSummarizer
 from bitten.model import BuildConfig, Build, Report
 
@@ -169,7 +171,26 @@
         >>> annotate_row(3, 'y = x')
         '<tr><th class="uncovered">0</th></tr>'
         """
-        implements(IHTMLPreviewAnnotator)
+        implements(IRequestFilter, IHTMLPreviewAnnotator)
+
+        # IRequestFilter methods
+
+        def pre_process_request(self, req, handler):
+            return handler
+
+        def post_process_request(self, req, template, data, content_type):
+            """ Adds a 'Coverage' context navigation menu item. """
+            resource = data and data.get('context') \
+                            and data.get('context').resource or None
+            if resource and isinstance(resource, Resource) \
+                        and resource.realm=='source' and data.get('file') \
+                        and not req.args.get('annotate'):
+                add_ctxtnav(req, 'Coverage',
+                        title='Annotate file with test coverage '
+                              'data (if available)',
+                        href=req.href.browser(resource.id, 
+                            annotate='coverage', rev=data.get('rev')))
+            return template, data, content_type
 
         # IHTMLPreviewAnnotator methods
 
Copyright (C) 2012-2017 Edgewall Software