Mercurial > hg-stable
diff tests/test-contrib-check-code.t @ 29397:844f72885fb9
check-code: detect "missing _() in ui message" more exactly
Before this patch, "missing _() in ui message" rule overlooks
translatable message, which starts with other than alphabet.
To detect "missing _() in ui message" more exactly, this patch
improves the regexp with assumptions below.
- sequence consisting of below might precede "translatable message"
in same string token
- formatting string, which starts with '%'
- escaped character, which starts with 'b' (as replacement of '\\'), or
- characters other than '%', 'b' and 'x' (as replacement of alphabet)
- any string tokens might precede a string token, which contains
"translatable message"
This patch builds an input file, which is used to examine "missing _()
in ui message" detection, before '"$check_code" stringjoin.py' in
test-contrib-check-code.t, because this reduces amount of change churn
in subsequent patch.
This patch also applies "()" instead of "_()" on messages below to
hide false-positives:
- messages for ui.debug() or debug commands/tools
- contrib/debugshell.py
- hgext/win32mbcs.py (ui.write() is used, though)
- mercurial/commands.py
- _debugchangegroup
- debugindex
- debuglocks
- debugrevlog
- debugrevspec
- debugtemplate
- untranslatable messages
- doc/gendoc.py (ReST specific text)
- hgext/hgk.py (permission string)
- hgext/keyword.py (text written into configuration file)
- mercurial/cmdutil.py (formatting strings for JSON)
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Tue, 21 Jun 2016 00:50:39 +0900 |
parents | 438caf194160 |
children | 2a54cf92c773 |
line wrap: on
line diff
--- a/tests/test-contrib-check-code.t Wed Jun 22 21:30:49 2016 +0100 +++ b/tests/test-contrib-check-code.t Tue Jun 21 00:50:39 2016 +0900 @@ -262,6 +262,20 @@ > 'bar foo-' > 'bar') > EOF + +'missing _() in ui message' detection + + $ cat > uigettext.py <<EOF + > ui.status("% 10s %05d % -3.2f %*s %%" + > # this use '\\\\' instead of '\\', because the latter in + > # heredoc on shell becomes just '\' + > '\\\\ \n \t \0' + > """12345 + > """ + > '''.:*+-= + > ''' "%-6d \n 123456 .:*+-= foobar") + > EOF + $ "$check_code" stringjoin.py stringjoin.py:1: > foo = (' foo' @@ -288,3 +302,9 @@ > 'bar foo-' string join across lines with no space [1] + + $ "$check_code" uigettext.py + uigettext.py:1: + > ui.status("% 10s %05d % -3.2f %*s %%" + missing _() in ui message (use () to hide false-positives) + [1]