summaryrefslogtreecommitdiff
path: root/pylint/test/extensions
diff options
context:
space:
mode:
authorAlexander Todorov <atodorov@otb.bg>2016-12-31 11:10:45 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2016-12-31 11:10:45 +0200
commit53414376fdb528087f9e5e23d0dbeab871bfd3fd (patch)
tree8972bd2b9be28065ff377a593a784b3e0aee180f /pylint/test/extensions
parent9b1e5a90fdd35c25b1f5039ffc7eb33b7ca9f913 (diff)
downloadpylint-git-53414376fdb528087f9e5e23d0dbeab871bfd3fd.tar.gz
Add new extension for detecting integer comparisons against zero (#1243)
Diffstat (limited to 'pylint/test/extensions')
-rw-r--r--pylint/test/extensions/data/compare_to_zero.py28
-rw-r--r--pylint/test/extensions/test_comparetozero.py56
2 files changed, 84 insertions, 0 deletions
diff --git a/pylint/test/extensions/data/compare_to_zero.py b/pylint/test/extensions/data/compare_to_zero.py
new file mode 100644
index 000000000..06f3475dc
--- /dev/null
+++ b/pylint/test/extensions/data/compare_to_zero.py
@@ -0,0 +1,28 @@
+# pylint: disable=literal-comparison,missing-docstring,misplaced-comparison-constant
+
+X = 123
+Y = len('test')
+
+if X is 0: # [compare-to-zero]
+ pass
+
+if Y is not 0: # [compare-to-zero]
+ pass
+
+if X == 0: # [compare-to-zero]
+ pass
+
+if Y != 0: # [compare-to-zero]
+ pass
+
+if X > 0: # [compare-to-zero]
+ pass
+
+if X < 0: # this is allowed
+ pass
+
+if 0 < X: # [compare-to-zero]
+ pass
+
+if 0 > X: # this is allowed
+ pass
diff --git a/pylint/test/extensions/test_comparetozero.py b/pylint/test/extensions/test_comparetozero.py
new file mode 100644
index 000000000..8ae795593
--- /dev/null
+++ b/pylint/test/extensions/test_comparetozero.py
@@ -0,0 +1,56 @@
+# Copyright (c) 2016 Alexander Todorov <atodorov@MrSenko.com>
+
+# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+# For details: https://github.com/PyCQA/pylint/blob/master/COPYING
+
+"""Tests for the pylint checker in :mod:`pylint.extensions.emptystring
+"""
+
+import os
+import os.path as osp
+import unittest
+
+from pylint import checkers
+from pylint.extensions.comparetozero import CompareToZeroChecker
+from pylint.lint import PyLinter
+from pylint.reporters import BaseReporter
+
+
+class CompareToZeroTestReporter(BaseReporter):
+
+ def handle_message(self, msg):
+ self.messages.append(msg)
+
+ def on_set_current_module(self, module, filepath):
+ self.messages = []
+
+
+class CompareToZeroUsedTC(unittest.TestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ cls._linter = PyLinter()
+ cls._linter.set_reporter(CompareToZeroTestReporter())
+ checkers.initialize(cls._linter)
+ cls._linter.register_checker(CompareToZeroChecker(cls._linter))
+ cls._linter.disable('I')
+
+ def test_comparetozero_message(self):
+ elif_test = osp.join(osp.dirname(osp.abspath(__file__)), 'data',
+ 'compare_to_zero.py')
+ self._linter.check([elif_test])
+ msgs = self._linter.reporter.messages
+ self.assertEqual(len(msgs), 6)
+ for msg in msgs:
+ self.assertEqual(msg.symbol, 'compare-to-zero')
+ self.assertEqual(msg.msg, 'Avoid comparisons to zero')
+ self.assertEqual(msgs[0].line, 6)
+ self.assertEqual(msgs[1].line, 9)
+ self.assertEqual(msgs[2].line, 12)
+ self.assertEqual(msgs[3].line, 15)
+ self.assertEqual(msgs[4].line, 18)
+ self.assertEqual(msgs[5].line, 24)
+
+
+if __name__ == '__main__':
+ unittest.main()