summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Marek <tmarek@google.com>2013-07-24 11:17:37 +0200
committerTorsten Marek <tmarek@google.com>2013-07-24 11:17:37 +0200
commitf1b2a96fc423abb5d5bb48626300231e143c61cf (patch)
tree4dd32c8bdcd2c0ed1dd7e722ab435c755caf60f5
parentb1738f9489175d1e790128b6b0ec337ad660ec12 (diff)
downloadpylint-f1b2a96fc423abb5d5bb48626300231e143c61cf.tar.gz
Do not emit [fixme] for every line if the config value 'notes' is empty, but [fixme] is enabled.
Also added a very basic test for checkers/misc.py.
-rw-r--r--ChangeLog3
-rw-r--r--checkers/misc.py7
-rw-r--r--test/test_misc.py61
3 files changed, 69 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 6ba6037..a756db8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,9 @@ ChangeLog for Pylint
====================
--
+ * Do not emit [fixme] for every line if the config value 'notes'
+ is empty, but [fixme] is enabled.
+
* Emit warnings about lines exceeding the column limit when
those lines are inside multiline docstrings.
diff --git a/checkers/misc.py b/checkers/misc.py
index 11c43a9..ca88c8b 100644
--- a/checkers/misc.py
+++ b/checkers/misc.py
@@ -72,14 +72,17 @@ separated by a comma.'
"""
stream = module.file_stream
stream.seek(0) # XXX may be removed with astroid > 0.23
- notes = re.compile('|'.join(self.config.notes))
+ if self.config.notes:
+ notes = re.compile('|'.join(self.config.notes))
+ else:
+ notes = None
if module.file_encoding:
encoding = module.file_encoding
else:
encoding = 'ascii'
for lineno, line in enumerate(stream):
line = self._check_encoding(lineno+1, line, encoding)
- if line is not None:
+ if line is not None and notes:
self._check_note(notes, lineno+1, line)
def register(linter):
diff --git a/test/test_misc.py b/test/test_misc.py
new file mode 100644
index 0000000..68f3e4a
--- /dev/null
+++ b/test/test_misc.py
@@ -0,0 +1,61 @@
+# Copyright 2013 Google Inc. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+"""
+Tests for the misc checker.
+"""
+
+import tempfile
+
+from logilab.common.testlib import unittest_main
+from astroid import test_utils
+from pylint.checkers import misc
+from pylint.testutils import CheckerTestCase, Message
+
+
+class FixmeTest(CheckerTestCase):
+ CHECKER_CLASS = misc.EncodingChecker
+
+ def create_file_backed_module(self, code):
+ tmp = tempfile.NamedTemporaryFile()
+ tmp.write(code)
+ tmp.flush()
+ module = test_utils.build_module(code)
+ module.file = tmp.name
+ # Just make sure to keep a reference to the file
+ # so it isn't deleted.
+ module._tmpfile = tmp
+ return module
+
+ def test_fixme(self):
+ module = self.create_file_backed_module(
+ """a = 1
+ # FIXME
+ """)
+ with self.assertAddsMessages(
+ Message(msg_id='W0511', line=2, args=u'FIXME')):
+ self.checker.process_module(module)
+
+ def test_emtpy_fixme_regex(self):
+ self.checker.config.notes = []
+ module = self.create_file_backed_module(
+ """a = 1
+ # fixme
+ """)
+ with self.assertNoMessages():
+ self.checker.process_module(module)
+
+
+if __name__ == '__main__':
+ unittest_main()