diff options
| author | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2014-07-24 23:53:44 +0200 |
|---|---|---|
| committer | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2014-07-24 23:53:44 +0200 |
| commit | 2925504f4c4ffc3ec980eb7b4467284fe8653006 (patch) | |
| tree | 68efdbb8fca057ef5ef9078229d3613ea87ead14 /test | |
| parent | 109090dfa67f1a7a35db5002346795bb717bf7d0 (diff) | |
| download | pylint-2925504f4c4ffc3ec980eb7b4467284fe8653006.tar.gz | |
[refactor] move handling of file specific state to its own FileState class (mostly message states)
Diffstat (limited to 'test')
| -rw-r--r-- | test/messages/func_i0022.txt | 9 | ||||
| -rw-r--r-- | test/unittest_lint.py | 54 | ||||
| -rw-r--r-- | test/unittest_reporting.py | 2 |
3 files changed, 37 insertions, 28 deletions
diff --git a/test/messages/func_i0022.txt b/test/messages/func_i0022.txt index ddcb066..fb527b1 100644 --- a/test/messages/func_i0022.txt +++ b/test/messages/func_i0022.txt @@ -1,12 +1,21 @@ I: 5: Locally disabling invalid-name (C0103) I: 5: Suppressed 'invalid-name' (from line 5) +I: 6: Locally disabling invalid-name (C0103) I: 6: Pragma "disable-msg" is deprecated, use "disable" instead I: 6: Suppressed 'invalid-name' (from line 6) +I: 8: Locally disabling invalid-name (C0103) I: 9: Suppressed 'invalid-name' (from line 8) +I: 10: Locally enabling invalid-name (C0103) +I: 12: Locally disabling invalid-name (C0103) I: 12: Pragma "disable-msg" is deprecated, use "disable" instead I: 13: Suppressed 'invalid-name' (from line 12) +I: 14: Locally enabling invalid-name (C0103) I: 14: Pragma "enable-msg" is deprecated, use "enable" instead +I: 16: Locally disabling invalid-name (C0103) I: 16: Pragma "disable-msg" is deprecated, use "disable" instead I: 17: Suppressed 'invalid-name' (from line 16) +I: 18: Locally enabling invalid-name (C0103) I: 18: Pragma "enable-msg" is deprecated, use "enable" instead +I: 20: Locally disabling invalid-name (C0103) I: 21: Suppressed 'invalid-name' (from line 20) +I: 22: Locally enabling invalid-name (C0103) diff --git a/test/unittest_lint.py b/test/unittest_lint.py index 0e0ed9c..d9185f6 100644 --- a/test/unittest_lint.py +++ b/test/unittest_lint.py @@ -27,8 +27,8 @@ from pylint import config from pylint.lint import PyLinter, Run, UnknownMessage, preprocess_options, \ ArgumentPreprocessingError from pylint.utils import MSG_STATE_SCOPE_CONFIG, MSG_STATE_SCOPE_MODULE, \ - MessagesStore, PyLintASTWalker, MessageDefinition, build_message_def, \ - tokenize_module + MessagesStore, PyLintASTWalker, MessageDefinition, FileState, \ + build_message_def, tokenize_module from pylint.testutils import TestReporter from pylint.reporters import text from pylint import checkers @@ -61,10 +61,15 @@ class PyLinterTC(TestCase): checkers.initialize(self.linter) self.linter.set_reporter(TestReporter()) - def test_enable_message(self): + def init_linter(self): linter = self.linter linter.open() linter.set_current_module('toto') + linter.file_state = FileState('toto') + return linter + + def test_enable_message(self): + linter = self.init_linter() self.assertTrue(linter.is_message_enabled('W0101')) self.assertTrue(linter.is_message_enabled('W0102')) linter.disable('W0101', scope='package') @@ -80,9 +85,7 @@ class PyLinterTC(TestCase): self.assertTrue(linter.is_message_enabled('W0102', 1)) def test_enable_message_category(self): - linter = self.linter - linter.open() - linter.set_current_module('toto') + linter = self.init_linter() self.assertTrue(linter.is_message_enabled('W0101')) self.assertTrue(linter.is_message_enabled('C0121')) linter.disable('W', scope='package') @@ -100,31 +103,29 @@ class PyLinterTC(TestCase): self.assertTrue(linter.is_message_enabled('C0121', line=1)) def test_message_state_scope(self): - linter = self.linter - linter.open() + linter = self.init_linter() + fs = linter.file_state linter.disable('C0121') self.assertEqual(MSG_STATE_SCOPE_CONFIG, - linter.get_message_state_scope('C0121')) + fs._message_state_scope('C0121')) linter.disable('W0101', scope='module', line=3) self.assertEqual(MSG_STATE_SCOPE_CONFIG, - linter.get_message_state_scope('C0121')) + fs._message_state_scope('C0121')) self.assertEqual(MSG_STATE_SCOPE_MODULE, - linter.get_message_state_scope('W0101', 3)) + fs._message_state_scope('W0101', 3)) linter.enable('W0102', scope='module', line=3) self.assertEqual(MSG_STATE_SCOPE_MODULE, - linter.get_message_state_scope('W0102', 3)) + fs._message_state_scope('W0102', 3)) def test_enable_message_block(self): - linter = self.linter + linter = self.init_linter() linter.open() filepath = join(INPUTDIR, 'func_block_disable_msg.py') linter.set_current_module('func_block_disable_msg') astroid = linter.get_ast(filepath, 'func_block_disable_msg') linter.process_tokens(tokenize_module(astroid)) - orig_state = linter._module_msgs_state.copy() - linter._module_msgs_state = {} - linter._suppression_mapping = {} - linter.collect_block_lines(astroid, orig_state) + fs = linter.file_state + fs.collect_block_lines(linter.msgs_store, astroid) # global (module level) self.assertTrue(linter.is_message_enabled('W0613')) self.assertTrue(linter.is_message_enabled('E1101')) @@ -161,25 +162,24 @@ class PyLinterTC(TestCase): self.assertTrue(linter.is_message_enabled('E1101', 75)) self.assertTrue(linter.is_message_enabled('E1101', 77)) - self.assertEqual(17, linter._suppression_mapping['W0613', 18]) - self.assertEqual(30, linter._suppression_mapping['E1101', 33]) - self.assertTrue(('E1101', 46) not in linter._suppression_mapping) - self.assertEqual(1, linter._suppression_mapping['C0302', 18]) - self.assertEqual(1, linter._suppression_mapping['C0302', 50]) + fs = linter.file_state + self.assertEqual(17, fs._suppression_mapping['W0613', 18]) + self.assertEqual(30, fs._suppression_mapping['E1101', 33]) + self.assertTrue(('E1101', 46) not in fs._suppression_mapping) + self.assertEqual(1, fs._suppression_mapping['C0302', 18]) + self.assertEqual(1, fs._suppression_mapping['C0302', 50]) # This is tricky. While the disable in line 106 is disabling # both 108 and 110, this is usually not what the user wanted. # Therefore, we report the closest previous disable comment. - self.assertEqual(106, linter._suppression_mapping['E1101', 108]) - self.assertEqual(109, linter._suppression_mapping['E1101', 110]) + self.assertEqual(106, fs._suppression_mapping['E1101', 108]) + self.assertEqual(109, fs._suppression_mapping['E1101', 110]) def test_enable_by_symbol(self): """messages can be controlled by symbolic names. The state is consistent across symbols and numbers. """ - linter = self.linter - linter.open() - linter.set_current_module('toto') + linter = self.init_linter() self.assertTrue(linter.is_message_enabled('W0101')) self.assertTrue(linter.is_message_enabled('unreachable')) self.assertTrue(linter.is_message_enabled('W0102')) diff --git a/test/unittest_reporting.py b/test/unittest_reporting.py index 3dd0d0a..e1cf161 100644 --- a/test/unittest_reporting.py +++ b/test/unittest_reporting.py @@ -1,4 +1,4 @@ -# Copyright (c) 2003-2013 LOGILAB S.A. (Paris, FRANCE). +# Copyright (c) 2003-2014 LOGILAB S.A. (Paris, FRANCE). # 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 |
