diff options
author | Alexander Todorov <atodorov@otb.bg> | 2016-12-31 11:10:45 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2016-12-31 11:10:45 +0200 |
commit | 53414376fdb528087f9e5e23d0dbeab871bfd3fd (patch) | |
tree | 8972bd2b9be28065ff377a593a784b3e0aee180f /pylint/test/extensions | |
parent | 9b1e5a90fdd35c25b1f5039ffc7eb33b7ca9f913 (diff) | |
download | pylint-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.py | 28 | ||||
-rw-r--r-- | pylint/test/extensions/test_comparetozero.py | 56 |
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() |