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

169 lines
19 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 $'
from logilab.common.testlib import TestCase
2006-04-26 10:48:09 +00:00
import sys
import re
from os import linesep
from pylint.checkers.format import *
from utils import TestReporter
REPORTER = TestReporter()
class StringRgxTest(TestCase):
2006-04-26 10:48:09 +00:00
"""test the STRING_RGX regular expression"""
2006-04-26 10:48:09 +00:00
def test_known_values_1(self):
self.assertEqual(STRING_RGX.sub('', '"yo"'), '')
2006-04-26 10:48:09 +00:00
def test_known_values_2(self):
self.assertEqual(STRING_RGX.sub('', "'yo'"), '')
2006-04-26 10:48:09 +00:00
def test_known_values_tq_1(self):
self.assertEqual(STRING_RGX.sub('', '"""yo"""'), '')
2006-04-26 10:48:09 +00:00
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'''"), '')
2006-04-26 10:48:09 +00:00
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"'), '')
2006-04-26 10:48:09 +00:00
def test_known_values_6(self):
self.assertEqual(STRING_RGX.sub('', r"'yo\'yo'"), '')
2006-04-26 10:48:09 +00:00
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),{},{})')
2006-04-26 10:48:09 +00:00
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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\neD
re.sub(SQSTRING_RGX, '', crash_str)
re.sub(TQSTRING_RGX, '', crash_str)
re.sub(SASTRING_RGX, '', crash_str)
re.sub(TASTRING_RGX, '', crash_str)
self.skipTest('XXX: explain the test, remove it or assert something')
2006-04-26 10:48:09 +00:00
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(TestCase):
2006-04-26 10:48:09 +00:00
"""test the check_line method"""
2006-04-26 10:48:09 +00:00
def test_known_values_opspace_1(self):
self.assertEqual(ulines(check_line('a=1')), ('C0322', 'a=1\n ^'))
2006-04-26 10:48:09 +00:00
def test_known_values_opspace_2(self):
self.assertEqual(ulines(check_line('a= 1')), ('C0322', 'a= 1\n ^') )
2006-04-26 10:48:09 +00:00
def test_known_values_opspace_3(self):
self.assertEqual(ulines(check_line('a =1')), ('C0323', 'a =1\n ^'))
2006-04-26 10:48:09 +00:00
def test_known_values_opspace_4(self):
self.assertEqual(check_line('f(a=1)'), None)
2006-04-26 10:48:09 +00:00
def test_known_values_opspace_4(self):
self.assertEqual(check_line('f(a=1)'), None)
2006-04-26 10:48:09 +00:00
def test_known_values_colonnl_2(self):
self.assertEqual(check_line('a[:1]'), None)
def test_known_values_colonnl_3(self):
self.assertEqual(check_line('a[1:]'), None)
def test_known_values_colonnl_4(self):
self.assertEqual(check_line('a[1:2]'), None)
def test_known_values_colonnl_5(self):
self.assertEqual(check_line('def intersection(list1, list2):'), None)
def test_known_values_colonnl_6(self):
self.assertEqual(check_line('def intersection(list1, list2):\n'), None)
def test_known_values_colonnl_7(self):
self.assertEqual(check_line('if file[:pfx_len] == path:\n'), None)
def test_known_values_colonnl_9(self):
self.assertEqual(check_line('if file[:pfx_len[1]] == path:\n'), None)
def test_known_values_colonnl_10(self):
self.assertEqual(check_line('if file[pfx_len[1]] == path:\n'), None)
2006-04-26 10:48:09 +00:00
def test_known_values_commaspace_1(self):
self.assertEqual(ulines(check_line('a, b = 1,2')),
2006-04-26 10:48:09 +00:00
('C0324', 'a, b = 1,2\n ^^'))
def test_known_values_commaspace_2(self):
self.assertEqual(check_line('should_not_warn = [1, 2, 3,]\n'),
None)
def test_known_values_commaspace_3(self):
self.assertEqual(check_line('should_not_warn = {1:2, 3:4,}\n'),
None)
def test_known_values_commaspace_4(self):
self.assertEqual(check_line('should_not_warn = (1, 2, 3,)\n'),
None)
2006-04-26 10:48:09 +00:00
def test_known_values_instring_1(self):
self.assertEqual(check_line('f("a=1")'), None)
2006-04-26 10:48:09 +00:00
def test_known_values_instring_2(self):
self.assertEqual(ulines(check_line('print >>1, ("a:1")')),
2006-04-26 10:48:09 +00:00
('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),{},{})")),
2006-04-26 10:48:09 +00:00
('C0324', "self.filterFunc = eval('lambda %s: %s'%(','.join(variables),formula),{},{})\n ^^"))
def test_known_values_tqstring(self):
self.assertEqual(check_line('print """<a="=")\n"""'), None)
2006-04-26 10:48:09 +00:00
def test_known_values_tastring(self):
self.assertEqual(check_line("print '''<a='=')\n'''"), None)
2006-04-26 10:48:09 +00:00
if __name__ == '__main__':
unittest.main()