Skip to content

Commit

Permalink
1.7.1dev: merge [17806] from 1.6-stable (fix for #13754)
Browse files Browse the repository at this point in the history
git-svn-id: http://trac.edgewall.org/intertrac/log:/trunk@17807 af82e41b-90c4-0310-8c96-b1721e28e2e2
  • Loading branch information
jomae committed May 26, 2024
2 parents 4afefb1 + c7b5b6b commit fab1777
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
2 changes: 1 addition & 1 deletion trac/versioncontrol/templates/browser.html
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
});
# elif file:
# if file.annotate == 'blame':
enableBlame("${href.changeset()}/", "${reponame}", "${path}");
enableBlame(${to_json(href.changeset() + '/')|safe}, ${to_json(reponame)|safe}, ${to_json(path)|safe});
# endif
$('#preview table.code').enableCollapsibleColumns(
$('#preview table.code thead th.content'));
Expand Down
39 changes: 36 additions & 3 deletions trac/versioncontrol/web_ui/tests/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@
from trac.util.datefmt import utc
from trac.util.text import to_utf8
from trac.versioncontrol.api import (
Changeset, DbRepositoryProvider, IRepositoryConnector, Node, NoSuchNode,
Repository, RepositoryManager)
Changeset, DbRepositoryProvider, IRepositoryConnector, Node,
NoSuchChangeset, NoSuchNode, Repository, RepositoryManager)
from trac.versioncontrol.web_ui.browser import BrowserModule, IPropertyRenderer
from trac.web.api import RequestDone
from trac.web.chrome import Chrome
from trac.web.tests.api import RequestHandlerPermissionsTestCaseBase


Expand All @@ -40,6 +41,7 @@ def get_supported_types(self):

def get_repository(self, repos_type, repos_dir, params):
t = datetime(2017, 3, 31, 12, 34, 56, tzinfo=utc)
youngest_rev = 1

def get_changeset(rev):
return Mock(Changeset, repos, rev, 'message', 'author', t)
Expand Down Expand Up @@ -74,13 +76,24 @@ def get_node(path, rev):
get_last_modified=lambda: t)
return node

def normalize_rev(rev):
try:
r = int(rev)
except:
pass
else:
if 0 <= r <= youngest_rev:
return r
raise NoSuchChangeset(rev)

if params['name'] == 'raise':
raise TracError("")
else:
repos = Mock(Repository, params['name'], params, self.log,
get_youngest_rev=lambda: 1,
get_youngest_rev=lambda: youngest_rev,
get_changeset=get_changeset,
get_node=get_node,
normalize_rev=normalize_rev,
previous_rev=lambda rev, path='': None,
next_rev=lambda rev, path='': None)
return repos
Expand Down Expand Up @@ -258,6 +271,26 @@ def test_node_with_file_view(self):
self.assertEqual('repository', e.resource.parent.realm)
self.assertEqual('', e.resource.parent.id)

def test_node_with_blame_view(self):
provider = DbRepositoryProvider(self.env)
provider.add_repository('metachars-&<>"\'-', '/', 'mock')
self.grant_perm('anonymous', 'BROWSER_VIEW', 'FILE_VIEW')

req = MockRequest(self.env, authname='anonymous',
path_info='/browser/metachars-&<>"\'-/-&<>"\'-file',
args={'annotate': 'blame'})
rv = self.process_request(req)
fragment = str(Chrome(self.env).render_fragment(req, *rv))
for line in fragment.splitlines():
if ' enableBlame(' in line:
break
else:
self.fail('Missing enableBlame(...) line')
self.assertEqual(r'''enableBlame("/trac.cgi/changeset/"'''
r''', "metachars-\u0026\u003c\u003e\"'-"'''
r''', "-\u0026\u003c\u003e\"'-file");''',
line.strip())

def test_node_in_allowed_repos_with_file_view(self):
self.grant_perm('anonymous', 'BROWSER_VIEW', 'FILE_VIEW')

Expand Down

0 comments on commit fab1777

Please sign in to comment.