Mercurial > bitten > bitten-test
changeset 834:70aebfc3a45f
Use `display_rev` strategy instead of just `rev` as that displays much nicer for DVCS sytems with long hash revisions numbers using Trac 0.12. No visual differences for Trac 0.11 users.
Thanks to Felix Schwarz and trbs for patches and testing. Closes #610.
author | osimons |
---|---|
date | Sun, 10 Oct 2010 19:54:37 +0000 |
parents | 7c80375d4817 |
children | 59acaa8b52c0 |
files | bitten/templates/bitten_build.html bitten/templates/bitten_config.html bitten/tests/web_ui.py bitten/web_ui.py |
diffstat | 4 files changed, 18 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/bitten/templates/bitten_build.html +++ b/bitten/templates/bitten_build.html @@ -30,7 +30,7 @@ </dd> <dt class="trigger">Triggered by:</dt> <dd class="trigger"> - Changeset <a href="$build.chgset_href">[$build.rev]</a> by + Changeset <a href="$build.chgset_href">[$build.display_rev]</a> by ${format_author(build.chgset_author)} </dd> <dt class="slave">Built by:</dt>
--- a/bitten/templates/bitten_config.html +++ b/bitten/templates/bitten_config.html @@ -87,7 +87,7 @@ <h3 class="builds"><a href="$config.href">Latest builds</a></h3> <table class="builds"><tbody><tr> <th py:with="youngest_rev = config.youngest_rev"> - <a href="$youngest_rev.href">[$youngest_rev.id]</a> + <a href="$youngest_rev.href">[$youngest_rev.display_rev]</a> by ${format_author(youngest_rev.author)}<p class="date">$youngest_rev.date</p> <p class="message">$youngest_rev.message</p> </th> @@ -179,7 +179,7 @@ <tr py:for="rev_num in config.revisions" py:with="rev = config.builds[rev_num]"> <th class="chgset" scope="row"> - <a href="$rev.href" title="View Changeset">[$rev_num]</a> + <a href="$rev.href" title="View Changeset">[$rev.display_rev]</a> </th><py:for each="platform in config.platforms"><py:choose> <td py:when="platform.id in rev" py:with="build = rev[platform.id]" class="$build.cls">
--- a/bitten/tests/web_ui.py +++ b/bitten/tests/web_ui.py @@ -48,6 +48,7 @@ get_node=lambda path, rev=None: Mock(get_history=lambda: [], isdir=True), normalize_path=lambda path: path, + normalize_rev=lambda rev: rev, sync=lambda: None, ) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) @@ -87,7 +88,8 @@ get_history=lambda: [('trunk', rev, 'edit') for rev in range(123, 111, -1)]) self.repos = Mock(get_node=lambda path, rev=None: root, - sync=lambda: None, normalize_path=lambda path: path) + sync=lambda: None, normalize_path=lambda path: path, + normalize_rev=lambda rev: rev) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) module = BuildConfigController(self.env) @@ -125,7 +127,8 @@ revision_list = [('trunk', revision, 'edit') for revision in revision_ids] root = Mock(get_entries=lambda: ['foo'], get_history=lambda: revision_list) self.repos = Mock(get_node=lambda path, rev=None: root, - sync=lambda: None, normalize_path=lambda path: path) + sync=lambda: None, normalize_path=lambda path: path, + normalize_rev=lambda rev: rev) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) module = BuildConfigController(self.env) @@ -151,7 +154,8 @@ get_history=lambda: [('trunk', rev, 'edit') for rev in range(123, 110, -1)]) self.repos = Mock(get_node=lambda path, rev=None: root, - sync=lambda: None, normalize_path=lambda path: path) + sync=lambda: None, normalize_path=lambda path: path, + normalize_rev=lambda rev: rev) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) module = BuildConfigController(self.env) @@ -203,6 +207,7 @@ self.repos = Mock(get_node=lambda path, rev=None: root, sync=lambda: None, normalize_path=lambda path: path, + normalize_rev=lambda rev: rev, get_changeset=lambda rev: Mock(author='joe')) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None)
--- a/bitten/web_ui.py +++ b/bitten/web_ui.py @@ -32,6 +32,7 @@ from trac.web.chrome import INavigationContributor, ITemplateProvider, \ add_link, add_stylesheet, add_ctxtnav, \ prevnext_nav, add_script +from trac.versioncontrol import NoSuchChangeset from trac.wiki import wiki_to_html, wiki_to_oneliner from bitten.api import ILogFormatter, IReportChartGenerator, IReportSummarizer from bitten.master import BuildMaster @@ -261,6 +262,7 @@ chgset = repos.get_changeset(rev) config_data['youngest_rev'] = { 'id': rev, 'href': req.href.changeset(rev), + 'display_rev': repos.normalize_rev(rev), 'author': chgset.author or 'anonymous', 'date': format_datetime(chgset.date), 'message': wiki_to_oneliner( @@ -458,6 +460,7 @@ revisions.append(rev) builds.setdefault(rev, {}) builds[rev].setdefault('href', req.href.changeset(rev)) + builds[rev].setdefault('display_rev', repos.normalize_rev(rev)) if build and build.status != Build.PENDING: build_data = _get_build_data(self.env, req, build) build_data['steps'] = [] @@ -603,6 +606,7 @@ _has_permission(repos, config.path, req.perm, True) chgset = repos.get_changeset(build.rev) data['build']['chgset_author'] = chgset.author + data['build']['display_rev'] = repos.normalize_rev(build.rev) add_script(req, 'common/js/folding.js') add_script(req, 'bitten/tabset.js') @@ -657,9 +661,10 @@ db=db): errors += [(step.name, error) for error in step.errors] - + display_rev = repos.normalize_rev(rev) yield (event_kinds[status], to_datetime(stopped, utc), None, - (id_, config, label, rev, platform, status, errors)) + (id_, config, label, display_rev, platform, status, + errors)) def render_timeline_event(self, context, field, event): id_, config, label, rev, platform, status, errors = event[3]