third_party.pylibs.pylint.src/test/test_format.py

181 lines
20 KiB
Python
Raw Normal View History

2006-04-26 10:48:09 +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.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
""" Copyright (c) 2000-2003 LOGILAB S.A. (Paris, FRANCE).
http://www.logilab.fr/ -- mailto:contact@logilab.fr
Check format checker helper functions
"""
__revision__ = '$Id: test_format.py,v 1.13 2005-11-02 09:22:06 syt Exp $'
import unittest
import sys
import re
from os import linesep
from pylint.checkers.format import *
from utils import TestReporter
REPORTER = TestReporter()
class StringRgxTest(unittest.TestCase):
"""test the STRING_RGX regular expression"""
def test_known_values_1(self):
self.assertEqual(STRING_RGX.sub('', '"yo"'), '')
def test_known_values_2(self):
self.assertEqual(STRING_RGX.sub('', "'yo'"), '')
def test_known_values_tq_1(self):
self.assertEqual(STRING_RGX.sub('', '"""yo"""'), '')
def test_known_values_tq_2(self):
2009-03-25 08:26:53 +00:00
self.assertEqual(STRING_RGX.sub('', '"""yo\n"""'), '')
2006-04-26 10:48:09 +00:00
def test_known_values_ta_1(self):
self.assertEqual(STRING_RGX.sub('', "'''yo'''"), '')
def test_known_values_ta_2(self):
2009-03-25 08:26:53 +00:00
self.assertEqual(STRING_RGX.sub('', "'''yo\n'''"), '')
2006-04-26 10:48:09 +00:00
def test_known_values_5(self):
self.assertEqual(STRING_RGX.sub('', r'"yo\"yo"'), '')
def test_known_values_6(self):
self.assertEqual(STRING_RGX.sub('', r"'yo\'yo'"), '')
def test_known_values_7(self):
self.assertEqual(STRING_RGX.sub('', '"yo"upi"yo"upi'), 'upiupi')
def test_known_values_8(self):
2009-03-25 08:26:53 +00:00
self.assertEqual(STRING_RGX.sub('', r"'yo\'yo\''"), '')
2006-04-26 10:48:09 +00:00
def test_known_values_9(self):
2009-03-25 08:26:53 +00:00
self.assertEqual(STRING_RGX.sub('', r'"yoyo\""'), '')
2006-04-26 10:48:09 +00:00
def test_known_values_10(self):
self.assertEqual(STRING_RGX.sub('', 'self.filterFunc = eval(\'lambda %s: %s\'%(\',\'.join(variables),formula),{},{})'),
'self.filterFunc = eval(%(.join(variables),formula),{},{})')
def test_known_values_11(self):
self.assertEqual(STRING_RGX.sub('', 'cond_list[index] = OLD_PROG.sub(r\'getattr(__old__,"\1")\',cond)'),
'cond_list[index] = OLD_PROG.sub(r,cond)')
## def test_no_crash(self):
## crash_str = """wizardBmp = ('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\
## re.sub(SQSTRING_RGX, '', crash_str)
## re.sub(TQSTRING_RGX, '', crash_str)
## re.sub(SASTRING_RGX, '', crash_str)
## re.sub(TASTRING_RGX, '', crash_str)
if linesep != '\n':
LINE_RGX = re.compile(linesep)
def ulines(strings):
return strings[0], LINE_RGX.sub('\n', strings[1])
else:
def ulines(strings):
return strings
class ChecklineFunctionTest(unittest.TestCase):
"""test the check_line method"""
def test_known_values_opspace_1(self):
self.assertEqual(ulines(check_line('a=1', REPORTER)), ('C0322', 'a=1\n ^'))
def test_known_values_opspace_2(self):
self.assertEqual(ulines(check_line('a= 1', REPORTER)), ('C0322', 'a= 1\n ^') )
def test_known_values_opspace_3(self):
self.assertEqual(ulines(check_line('a =1', REPORTER)), ('C0323', 'a =1\n ^'))
def test_known_values_opspace_4(self):
self.assertEqual(check_line('f(a=1)', REPORTER), None)
def test_known_values_opspace_4(self):
self.assertEqual(check_line('f(a=1)', REPORTER), None)
## def test_known_values_colonnl_1(self):
## self.assertEqual(check_line('if a: a = 1', REPORTER),
## ('W0321', 'if a: a = 1\n ^^^^^^^'))
## def test_known_values_colonnl_2(self):
## self.assertEqual(check_line('a[:1]', REPORTER), None)
## def test_known_values_colonnl_3(self):
## self.assertEqual(check_line('a[1:]', REPORTER), None)
## def test_known_values_colonnl_4(self):
## self.assertEqual(check_line('a[1:2]', REPORTER), None)
## def test_known_values_colonnl_5(self):
## self.assertEqual(check_line('def intersection(list1, list2):', REPORTER), None)
## def test_known_values_colonnl_6(self):
## self.assertEqual(check_line('def intersection(list1, list2):\n', REPORTER), None)
## def test_known_values_colonnl_7(self):
## self.assertEqual(check_line('if file[:pfx_len] == path:\n', REPORTER), None)
## def test_known_values_colonnl_8(self):
## self.assertEqual(check_line('def intersection(list1, list2): pass\n', REPORTER),
## ('W0321',
## 'def intersection(list1, list2): pass\n ^^^^^^') )
## def test_known_values_colonnl_9(self):
## self.assertEqual(check_line('if file[:pfx_len[1]] == path:\n', REPORTER), None)
## def test_known_values_colonnl_10(self):
## self.assertEqual(check_line('if file[pfx_len[1]] == path:\n', REPORTER), None)
def test_known_values_commaspace_1(self):
self.assertEqual(ulines(check_line('a, b = 1,2', REPORTER)),
('C0324', 'a, b = 1,2\n ^^'))
def test_known_values_commaspace_2(self):
self.assertEqual(check_line('should_not_warn = [1, 2, 3,]\n', REPORTER),
None)
def test_known_values_commaspace_3(self):
self.assertEqual(check_line('should_not_warn = {1:2, 3:4,}\n', REPORTER),
None)
def test_known_values_commaspace_4(self):
self.assertEqual(check_line('should_not_warn = (1, 2, 3,)\n', REPORTER),
None)
2006-04-26 10:48:09 +00:00
def test_known_values_instring_1(self):
self.assertEqual(check_line('f("a=1")', REPORTER), None)
def test_known_values_instring_2(self):
self.assertEqual(ulines(check_line('print >>1, ("a:1")', REPORTER)),
('C0323', 'print >>1, ("a:1")\n ^'))
def test_known_values_all_1(self):
self.assertEqual(ulines(check_line("self.filterFunc = eval('lambda %s: %s'%(','.join(variables),formula),{},{})", REPORTER)),
('C0324', "self.filterFunc = eval('lambda %s: %s'%(','.join(variables),formula),{},{})\n ^^"))
def test_known_values_tqstring(self):
2009-03-25 08:26:53 +00:00
self.assertEqual(check_line('print """<a="=")\n"""', REPORTER), None)
2006-04-26 10:48:09 +00:00
def test_known_values_tastring(self):
2009-03-25 08:26:53 +00:00
self.assertEqual(check_line("print '''<a='=')\n'''", REPORTER), None)
2006-04-26 10:48:09 +00:00
if __name__ == '__main__':
unittest.main()