2014-07-30 22:38:58 +00:00
|
|
|
# Copyright 2014 Michal Nowikowski.
|
2014-08-01 05:16:37 +00:00
|
|
|
#
|
|
|
|
# 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.,
|
|
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2014-07-30 22:38:58 +00:00
|
|
|
"""Unittest for the spelling checker."""
|
|
|
|
import unittest
|
|
|
|
import tokenize
|
|
|
|
import io
|
|
|
|
from astroid import test_utils
|
|
|
|
|
|
|
|
from pylint.checkers import spelling
|
|
|
|
from pylint.testutils import CheckerTestCase, Message, set_config
|
|
|
|
|
|
|
|
# try to create enchant dictionary
|
|
|
|
try:
|
|
|
|
import enchant
|
2014-08-01 05:16:37 +00:00
|
|
|
except ImportError:
|
2014-07-30 22:38:58 +00:00
|
|
|
enchant = None
|
|
|
|
|
|
|
|
spell_dict = None
|
|
|
|
if enchant is not None:
|
|
|
|
try:
|
|
|
|
enchant.Dict("en_US")
|
|
|
|
spell_dict = "en_US"
|
|
|
|
except enchant.DictNotFoundError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
def tokenize_str(code):
|
|
|
|
return list(tokenize.generate_tokens(io.StringIO(code).readline))
|
|
|
|
|
|
|
|
|
|
|
|
class SpellingCheckerTest(CheckerTestCase):
|
|
|
|
CHECKER_CLASS = spelling.SpellingChecker
|
|
|
|
|
|
|
|
@unittest.skipIf(spell_dict is None,
|
2014-09-16 20:40:41 +00:00
|
|
|
"missing python-enchant package or missing "
|
|
|
|
"spelling dictionaries")
|
2014-07-30 22:38:58 +00:00
|
|
|
@set_config(spelling_dict=spell_dict)
|
|
|
|
def test_check_bad_coment(self):
|
|
|
|
with self.assertAddsMessages(
|
|
|
|
Message('wrong-spelling-in-comment', line=1,
|
2014-09-16 21:02:59 +00:00
|
|
|
args=('coment', '# bad coment',
|
2014-09-16 20:40:41 +00:00
|
|
|
' ^^^^^^',
|
2014-09-16 21:02:59 +00:00
|
|
|
"comet' or 'comment' or 'moment' or 'foment"))):
|
|
|
|
self.checker.process_tokens(tokenize_str("# bad coment"))
|
2014-07-30 22:38:58 +00:00
|
|
|
|
|
|
|
@unittest.skipIf(spell_dict is None,
|
2014-09-16 20:40:41 +00:00
|
|
|
"missing python-enchant package or missing "
|
|
|
|
"spelling dictionaries")
|
2014-07-30 22:38:58 +00:00
|
|
|
@set_config(spelling_dict=spell_dict)
|
|
|
|
def test_check_bad_docstring(self):
|
2014-09-16 20:40:41 +00:00
|
|
|
stmt = test_utils.extract_node(
|
2014-09-16 21:02:59 +00:00
|
|
|
'def fff():\n """bad coment"""\n pass')
|
2014-07-30 22:38:58 +00:00
|
|
|
with self.assertAddsMessages(
|
|
|
|
Message('wrong-spelling-in-docstring', line=2,
|
2014-09-16 20:40:41 +00:00
|
|
|
args=('coment', 'bad coment',
|
|
|
|
' ^^^^^^',
|
2014-09-16 21:02:59 +00:00
|
|
|
"comet' or 'comment' or 'moment' or 'foment"))):
|
2014-07-30 22:38:58 +00:00
|
|
|
self.checker.visit_function(stmt)
|
|
|
|
|
2014-09-16 20:40:41 +00:00
|
|
|
stmt = test_utils.extract_node(
|
2014-09-16 21:02:59 +00:00
|
|
|
'class Abc(object):\n """bad coment"""\n pass')
|
2014-07-30 22:38:58 +00:00
|
|
|
with self.assertAddsMessages(
|
|
|
|
Message('wrong-spelling-in-docstring', line=2,
|
2014-09-16 21:02:59 +00:00
|
|
|
args=('coment', 'bad coment',
|
2014-09-16 20:40:41 +00:00
|
|
|
' ^^^^^^',
|
2014-09-16 21:02:59 +00:00
|
|
|
"comet' or 'comment' or 'moment' or 'foment"))):
|
2014-07-30 22:38:58 +00:00
|
|
|
self.checker.visit_class(stmt)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|