##// END OF EJS Templates
fixed urlify changesets regex + tests
marcink -
r3405:a9adca4b beta
parent child Browse files
Show More
@@ -1004,21 +1004,16 b' def urlify_changesets(text_, repository)'
1004 :param repository: repo name to build the URL with
1004 :param repository: repo name to build the URL with
1005 """
1005 """
1006 from pylons import url # doh, we need to re-import url to mock it later
1006 from pylons import url # doh, we need to re-import url to mock it later
1007 URL_PAT = re.compile(r'(?:^|\s)([0-9a-fA-F]{12,40})(?:$|\s)')
1007 URL_PAT = re.compile(r'(^|\s)([0-9a-fA-F]{12,40})($|\s)')
1008
1008
1009 def url_func(match_obj):
1009 def url_func(match_obj):
1010 rev = match_obj.groups()[0]
1010 rev = match_obj.groups()[1]
1011 pref = ''
1011 pref = match_obj.groups()[0]
1012 suf = ''
1012 suf = match_obj.groups()[2]
1013 if match_obj.group().startswith(' '):
1013
1014 pref = ' '
1015 if match_obj.group().endswith(' '):
1016 suf = ' '
1017 tmpl = (
1014 tmpl = (
1018 '%(pref)s<a class="%(cls)s" href="%(url)s">'
1015 '%(pref)s<a class="%(cls)s" href="%(url)s">'
1019 '%(rev)s'
1016 '%(rev)s</a>%(suf)s'
1020 '</a>'
1021 '%(suf)s'
1022 )
1017 )
1023 return tmpl % {
1018 return tmpl % {
1024 'pref': pref,
1019 'pref': pref,
@@ -209,6 +209,21 b' class TestLibs(unittest.TestCase):'
209 grav = gravatar_url(email_address=em, size=24)
209 grav = gravatar_url(email_address=em, size=24)
210 assert grav == 'https://server.com/%s/%s' % (_md5(em), 24)
210 assert grav == 'https://server.com/%s/%s' % (_md5(em), 24)
211
211
212 def _quick_url(self, text, tmpl="""<a class="revision-link" href="%s">%s</a>""", url_=None):
213 """
214 Changes `some text url[foo]` => `some text <a href="/">foo</a>
215
216 :param text:
217 """
218 import re
219 #quickly change expected url[] into a link
220 URL_PAT = re.compile(r'(?:url\[)(.+?)(?:\])')
221
222 def url_func(match_obj):
223 _url = match_obj.groups()[0]
224 return tmpl % (url_ or '/some-url', _url)
225 return URL_PAT.sub(url_func, text)
226
212 @parameterized.expand([
227 @parameterized.expand([
213 ("",
228 ("",
214 ""),
229 ""),
@@ -228,27 +243,48 b' class TestLibs(unittest.TestCase):'
228 "url[ffffffffffff] some text traalaa"),
243 "url[ffffffffffff] some text traalaa"),
229 ("""Multi line
244 ("""Multi line
230 123123123123
245 123123123123
231 some text 123123123123""",
246 some text 123123123123
247 sometimes !
248 """,
232 """Multi line
249 """Multi line
233 url[123123123123]
250 url[123123123123]
234 some text url[123123123123]""")
251 some text url[123123123123]
252 sometimes !
253 """)
235 ])
254 ])
236 def test_urlify_changesets(self, sample, expected):
255 def test_urlify_changesets(self, sample, expected):
237 import re
238
239 def fake_url(self, *args, **kwargs):
256 def fake_url(self, *args, **kwargs):
240 return '/some-url'
257 return '/some-url'
241
258
242 #quickly change expected url[] into a link
259 expected = self._quick_url(expected)
243 URL_PAT = re.compile(r'(?:url\[)(.+?)(?:\])')
244
245 def url_func(match_obj):
246 _url = match_obj.groups()[0]
247 tmpl = """<a class="revision-link" href="/some-url">%s</a>"""
248 return tmpl % _url
249
250 expected = URL_PAT.sub(url_func, expected)
251
260
252 with mock.patch('pylons.url', fake_url):
261 with mock.patch('pylons.url', fake_url):
253 from rhodecode.lib.helpers import urlify_changesets
262 from rhodecode.lib.helpers import urlify_changesets
254 self.assertEqual(urlify_changesets(sample, 'repo_name'), expected)
263 self.assertEqual(urlify_changesets(sample, 'repo_name'), expected)
264
265 @parameterized.expand([
266 ("",
267 "",
268 ""),
269 ("https://svn.apache.org/repos",
270 "url[https://svn.apache.org/repos]",
271 "https://svn.apache.org/repos"),
272 ("http://svn.apache.org/repos",
273 "url[http://svn.apache.org/repos]",
274 "http://svn.apache.org/repos"),
275 ("from rev a also rev http://google.com",
276 "from rev a also rev url[http://google.com]",
277 "http://google.com"),
278 ("""Multi line
279 https://foo.bar.com
280 some text lalala""",
281 """Multi line
282 url[https://foo.bar.com]
283 some text lalala""",
284 "https://foo.bar.com")
285 ])
286 def test_urlify_test(self, sample, expected, url_):
287 from rhodecode.lib.helpers import urlify_text
288 expected = self._quick_url(expected,
289 tmpl="""<a href="%s">%s</a>""", url_=url_)
290 self.assertEqual(urlify_text(sample), expected)
General Comments 0
You need to be logged in to leave comments. Login now