[IMP] runbot: imrpove pseudo markdown

This commit is contained in:
Christophe Monniez 2023-02-16 15:36:20 +01:00
parent 23e1b93465
commit c8bdd4f31e
3 changed files with 39 additions and 5 deletions

View File

@ -133,6 +133,27 @@ def list_local_dbs(additionnal_conditions=None):
""" % additionnal_condition_str)
return [d[0] for d in local_cr.fetchall()]
def markdown_escape(text):
patterns = {
r'\*\*(.+?)\*\*': '\\*\\*\\g<1>\\*\\*',
r'~~(.+?)~~': '\\~\\~\\g<1>\\~\\~',
r'__(.+?)__': '\\_\\_\\g<1>\\_\\_',
}
for p, b in patterns.items():
text = re.sub(p, b, text, flags=re.DOTALL)
return text
def markdown_unescape(text):
patterns = {
r'\\\*\\\*': '**',
r'\\\~\\\~': '~~',
r'\\\_\\\_': '__',
}
for p, b in patterns.items():
text = re.sub(p, b, text, flags=re.DOTALL)
return text
def pseudo_markdown(text):
text = html_escape(text)
@ -166,7 +187,7 @@ def pseudo_markdown(text):
return f'<code>{codes[int(match.group(1))]}</code>'
text = Markup(re.sub(r'<code>(\d+)</code>', code_replace, text, flags=re.DOTALL))
return text
return markdown_unescape(text)
def _make_github_session(token):

View File

@ -1,6 +1,6 @@
import re
from odoo import models, fields
from odoo.addons.runbot.common import markdown_escape
class ConfigStep(models.Model):
_inherit = 'runbot.build.config.step'
@ -124,10 +124,10 @@ class ConfigStep(models.Model):
for file, file_reviewers in reviewer_per_file.items():
href = 'https://%s/blob/%s/%s' % (commit_link.branch_id.remote_id.base_url, commit_link.commit_id.name, file.split('/', 1)[-1])
if file_reviewers:
build._log('', 'Adding %s to reviewers for file [%s](%s)' % (', '.join(sorted(file_reviewers)), file, href), log_type='markdown')
build._log('', 'Adding %s to reviewers for file [%s](%s)' % (', '.join(sorted(file_reviewers)), markdown_escape(file), href), log_type='markdown')
reviewers |= file_reviewers
else:
build._log('', 'No reviewer for file [%s](%s)' % (file, href), log_type='markdown')
build._log('', 'No reviewer for file [%s](%s)' % (markdown_escape(file), href), log_type='markdown')
if reviewers:
pr = pr_by_commit[commit_link]

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from .common import RunbotCase
from odoo.addons.runbot.common import markdown_escape
class TestIrLogging(RunbotCase):
@ -60,6 +60,19 @@ class TestIrLogging(RunbotCase):
'This <a href="https://wwww.somewhere.com">link</a> goes to somewhere and <a href="http://www.nowhere.com">this one</a> to nowhere.'
)
# test links with markdown like symbols
log.message = f'Adding validation to reviewers for file [{markdown_escape("foo/__init__.py")}](https://www.nowhere.com/)'
self.assertEqual(
log._markdown(),
'Adding validation to reviewers for file <a href="https://www.nowhere.com/">foo/__init__.py</a>'
)
log.message = f'~~{markdown_escape("foo/__init__.py")}~~'
self.assertEqual(
log._markdown(),
'<del>foo/__init__.py</del>'
)
# test link with icon
log.message = '[@icon-download](https://wwww.somewhere.com) goes to somewhere.'
self.assertEqual(