@@ -43,9 +43,80 @@ def test_own_dog_food(self):
4343 msg = 'Failures: %s' % report .messages )
4444
4545
46+ class APITestCase (unittest .TestCase ):
47+
48+ def setUp (self ):
49+ self ._saved_checks = pep8 ._checks
50+ pep8 ._checks = dict ((k , dict ((f , (vals [0 ][:], vals [1 ]))
51+ for (f , vals ) in v .items ()))
52+ for (k , v ) in self ._saved_checks .items ())
53+
54+ def tearDown (self ):
55+ pep8 ._checks = self ._saved_checks
56+
57+ def test_register_physical_check (self ):
58+ def check_dummy (physical_line , line_number ):
59+ if False :
60+ yield
61+ pep8 .register_check (check_dummy , ['Z001' ])
62+
63+ self .assertTrue (check_dummy in pep8 ._checks ['physical_line' ])
64+ codes , args = pep8 ._checks ['physical_line' ][check_dummy ]
65+ self .assertTrue ('Z001' in codes )
66+ self .assertEqual (args , ['physical_line' , 'line_number' ])
67+
68+ def test_register_logical_check (self ):
69+ def check_dummy (logical_line , tokens ):
70+ if False :
71+ yield
72+ pep8 .register_check (check_dummy , ['Z401' ])
73+
74+ self .assertTrue (check_dummy in pep8 ._checks ['logical_line' ])
75+ codes , args = pep8 ._checks ['logical_line' ][check_dummy ]
76+ self .assertTrue ('Z401' in codes )
77+ self .assertEqual (args , ['logical_line' , 'tokens' ])
78+
79+ def test_register_ast_check (self ):
80+ class DummyChecker (object ):
81+ def __init__ (self , tree , filename ):
82+ pass
83+
84+ def run (self ):
85+ if False :
86+ yield
87+ pep8 .register_check (DummyChecker , ['Z701' ])
88+
89+ self .assertTrue (DummyChecker in pep8 ._checks ['tree' ])
90+ codes , args = pep8 ._checks ['tree' ][DummyChecker ]
91+ self .assertTrue ('Z701' in codes )
92+ self .assertTrue (args is None )
93+
94+ def test_register_invalid_check (self ):
95+ class DummyChecker (object ):
96+ def __init__ (self , filename ):
97+ pass
98+
99+ def run (self ):
100+ if False :
101+ yield
102+ pep8 .register_check (DummyChecker , ['Z741' ])
103+
104+ def check_dummy (logical , tokens ):
105+ if False :
106+ yield
107+ pep8 .register_check (check_dummy , ['Z441' ])
108+
109+ for checkers in pep8 ._checks .values ():
110+ self .assertTrue (DummyChecker not in checkers )
111+ self .assertTrue (check_dummy not in checkers )
112+
113+ self .assertRaises (TypeError , pep8 .register_check )
114+
115+
46116def _main ():
47117 suite = unittest .TestSuite ()
48118 suite .addTest (unittest .makeSuite (Pep8TestCase ))
119+ suite .addTest (unittest .makeSuite (APITestCase ))
49120 runner = unittest .TextTestRunner (verbosity = 2 )
50121 return runner .run (suite )
51122
0 commit comments