diff --git a/dennis/linter.py b/dennis/linter.py index c4cb447..5a76ac5 100644 --- a/dennis/linter.py +++ b/dennis/linter.py @@ -449,6 +449,11 @@ def lint(self, vartok, linted_entry): continue msgid_tokens = vartok.extract_tokens(' '.join(trstr.msgid_strings)) + # If this is python-format or python-brace-format and there are + # no tokens in the msgid, then "no tokens, no problem". + if not msgid_tokens: + continue + msgstr_tokens = vartok.extract_tokens(trstr.msgstr_string) invalid = msgstr_tokens.difference(msgid_tokens) diff --git a/tests/test_linter.py b/tests/test_linter.py index 00f5766..9ebdcab 100644 --- a/tests/test_linter.py +++ b/tests/test_linter.py @@ -495,7 +495,7 @@ def test_fine(self): def test_invalid(self): linted_entry = build_linted_entry( '#: foo/foo.py:5\n' - 'msgid "Foo"\n' + 'msgid "Foo {bar}"\n' 'msgstr "Oof: {foo}"\n') msgs = self.lintrule.lint(self.vartok, linted_entry) @@ -564,6 +564,15 @@ def test_urlencoded_urls(self): msgs = self.lintrule.lint(self.vartok, linted_entry) assert len(msgs) == 0 + def test_msgid_no_vars(self): + linted_entry = build_linted_entry( + '#: foo/foo.py:5\n' + 'msgid "http://en.wikipedia.org/wiki/Canvas_element"\n' + 'msgstr "http://it.wikipedia.org/wiki/Canvas_%28elemento_HTML%29"\n') + + msgs = self.lintrule.lint(self.vartok, linted_entry) + assert len(msgs) == 0 + class TestBlankLintRule(LintRuleTestCase): lintrule = BlankLintRule()