Skip to content

Commit 7b590ad

Browse files
committed
Add more tests for the CLI; issue #162
1 parent 8be7ca6 commit 7b590ad

6 files changed

Lines changed: 288 additions & 80 deletions

File tree

CHANGES.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ Changelog
2020
* Do not report false E302 when the source file has a coding cookie or a
2121
comment on the first line. (Issue #174)
2222

23-
* Reorganize the tests and add basic tests for the API. (Issue #161)
23+
* Reorganize the tests and add tests for the API and for the command line
24+
usage and options. (Issues #161 and #162)
2425

2526

2627
1.4.4 (2013-02-24)

pep8.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1845,7 +1845,7 @@ def _main():
18451845
options = pep8style.options
18461846
if options.doctest or options.testsuite:
18471847
from testsuite.support import run_tests
1848-
report = run_tests(pep8style, options.doctest, options.testsuite)
1848+
report = run_tests(pep8style)
18491849
else:
18501850
report = pep8style.check_files()
18511851
if options.statistics:

testsuite/support.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
# -*- coding: utf-8 -*-
2+
import os.path
23
import re
34
import sys
45

56
from pep8 import Checker, BaseReport, StandardReport, readlines
67

78
SELFTEST_REGEX = re.compile(r'\b(Okay|[EW]\d{3}):\s(.*)')
9+
ROOT_DIR = os.path.dirname(os.path.dirname(__file__))
810

911

1012
class TestReport(StandardReport):
@@ -141,9 +143,9 @@ def run_tests(filename):
141143
init_tests.__test__ = False
142144

143145

144-
def run_tests(style, doctest=True, testsuite=False):
146+
def run_tests(style):
145147
options = style.options
146-
if doctest:
148+
if options.doctest:
147149
import doctest
148150
fail_d, done_d = doctest.testmod(report=False, verbose=options.verbose)
149151
fail_s, done_s = selftest(options)
@@ -154,7 +156,7 @@ def run_tests(style, doctest=True, testsuite=False):
154156
print("Test failed." if count_failed else "Test passed.")
155157
if count_failed:
156158
sys.exit(1)
157-
if testsuite:
159+
if options.testsuite:
158160
init_tests(style)
159161
return style.check_files()
160162
run_tests.__test__ = False

testsuite/test_all.py

Lines changed: 6 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
import unittest
66

77
import pep8
8-
from testsuite.support import init_tests, selftest
9-
10-
ROOT_DIR = os.path.dirname(os.path.dirname(__file__))
8+
from testsuite.support import init_tests, selftest, ROOT_DIR
119

1210
# Note: please only use a subset of unittest methods which were present
1311
# in Python 2.5: assert(True|False|Equal|NotEqual|Raises)
@@ -18,7 +16,7 @@ class Pep8TestCase(unittest.TestCase):
1816

1917
def setUp(self):
2018
self._style = pep8.StyleGuide(
21-
paths=[os.path.dirname(__file__)],
19+
paths=[os.path.join(ROOT_DIR, 'testsuite')],
2220
ignore=None, quiet=True)
2321

2422
def test_doctest(self):
@@ -47,81 +45,14 @@ def test_own_dog_food(self):
4745
msg='Failures: %s' % report.messages)
4846

4947

50-
class APITestCase(unittest.TestCase):
51-
"""Test the public methods."""
52-
53-
def setUp(self):
54-
self._saved_checks = pep8._checks
55-
pep8._checks = dict((k, dict((f, (vals[0][:], vals[1]))
56-
for (f, vals) in v.items()))
57-
for (k, v) in self._saved_checks.items())
58-
59-
def tearDown(self):
60-
pep8._checks = self._saved_checks
61-
62-
def test_register_physical_check(self):
63-
def check_dummy(physical_line, line_number):
64-
if False:
65-
yield
66-
pep8.register_check(check_dummy, ['Z001'])
67-
68-
self.assertTrue(check_dummy in pep8._checks['physical_line'])
69-
codes, args = pep8._checks['physical_line'][check_dummy]
70-
self.assertTrue('Z001' in codes)
71-
self.assertEqual(args, ['physical_line', 'line_number'])
72-
73-
def test_register_logical_check(self):
74-
def check_dummy(logical_line, tokens):
75-
if False:
76-
yield
77-
pep8.register_check(check_dummy, ['Z401'])
78-
79-
self.assertTrue(check_dummy in pep8._checks['logical_line'])
80-
codes, args = pep8._checks['logical_line'][check_dummy]
81-
self.assertTrue('Z401' in codes)
82-
self.assertEqual(args, ['logical_line', 'tokens'])
83-
84-
def test_register_ast_check(self):
85-
class DummyChecker(object):
86-
def __init__(self, tree, filename):
87-
pass
88-
89-
def run(self):
90-
if False:
91-
yield
92-
pep8.register_check(DummyChecker, ['Z701'])
93-
94-
self.assertTrue(DummyChecker in pep8._checks['tree'])
95-
codes, args = pep8._checks['tree'][DummyChecker]
96-
self.assertTrue('Z701' in codes)
97-
self.assertTrue(args is None)
98-
99-
def test_register_invalid_check(self):
100-
class DummyChecker(object):
101-
def __init__(self, filename):
102-
pass
103-
104-
def run(self):
105-
if False:
106-
yield
107-
pep8.register_check(DummyChecker, ['Z741'])
108-
109-
def check_dummy(logical, tokens):
110-
if False:
111-
yield
112-
pep8.register_check(check_dummy, ['Z441'])
113-
114-
for checkers in pep8._checks.values():
115-
self.assertTrue(DummyChecker not in checkers)
116-
self.assertTrue(check_dummy not in checkers)
117-
118-
self.assertRaises(TypeError, pep8.register_check)
119-
120-
12148
def _main():
49+
from testsuite.test_api import APITestCase
50+
from testsuite.test_shell import ShellTestCase
51+
12252
suite = unittest.TestSuite()
12353
suite.addTest(unittest.makeSuite(Pep8TestCase))
12454
suite.addTest(unittest.makeSuite(APITestCase))
55+
suite.addTest(unittest.makeSuite(ShellTestCase))
12556
runner = unittest.TextTestRunner(verbosity=2)
12657
return runner.run(suite)
12758

testsuite/test_api.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# -*- coding: utf-8 -*-
2+
import unittest
3+
4+
import pep8
5+
6+
7+
class APITestCase(unittest.TestCase):
8+
"""Test the public methods."""
9+
10+
def setUp(self):
11+
self._saved_checks = pep8._checks
12+
pep8._checks = dict((k, dict((f, (vals[0][:], vals[1]))
13+
for (f, vals) in v.items()))
14+
for (k, v) in self._saved_checks.items())
15+
16+
def tearDown(self):
17+
pep8._checks = self._saved_checks
18+
19+
def test_register_physical_check(self):
20+
def check_dummy(physical_line, line_number):
21+
if False:
22+
yield
23+
pep8.register_check(check_dummy, ['Z001'])
24+
25+
self.assertTrue(check_dummy in pep8._checks['physical_line'])
26+
codes, args = pep8._checks['physical_line'][check_dummy]
27+
self.assertTrue('Z001' in codes)
28+
self.assertEqual(args, ['physical_line', 'line_number'])
29+
30+
def test_register_logical_check(self):
31+
def check_dummy(logical_line, tokens):
32+
if False:
33+
yield
34+
pep8.register_check(check_dummy, ['Z401'])
35+
36+
self.assertTrue(check_dummy in pep8._checks['logical_line'])
37+
codes, args = pep8._checks['logical_line'][check_dummy]
38+
self.assertTrue('Z401' in codes)
39+
self.assertEqual(args, ['logical_line', 'tokens'])
40+
41+
pep8.register_check(check_dummy, [])
42+
pep8.register_check(check_dummy, ['Z402', 'Z403'])
43+
codes, args = pep8._checks['logical_line'][check_dummy]
44+
self.assertEqual(codes, ['Z401', 'Z402', 'Z403'])
45+
self.assertEqual(args, ['logical_line', 'tokens'])
46+
47+
def test_register_ast_check(self):
48+
class DummyChecker(object):
49+
def __init__(self, tree, filename):
50+
pass
51+
52+
def run(self):
53+
if False:
54+
yield
55+
pep8.register_check(DummyChecker, ['Z701'])
56+
57+
self.assertTrue(DummyChecker in pep8._checks['tree'])
58+
codes, args = pep8._checks['tree'][DummyChecker]
59+
self.assertTrue('Z701' in codes)
60+
self.assertTrue(args is None)
61+
62+
def test_register_invalid_check(self):
63+
class DummyChecker(object):
64+
def __init__(self, filename):
65+
pass
66+
67+
def run(self):
68+
if False:
69+
yield
70+
pep8.register_check(DummyChecker, ['Z741'])
71+
72+
def check_dummy(logical, tokens):
73+
if False:
74+
yield
75+
pep8.register_check(check_dummy, ['Z441'])
76+
77+
for checkers in pep8._checks.values():
78+
self.assertTrue(DummyChecker not in checkers)
79+
self.assertTrue(check_dummy not in checkers)
80+
81+
self.assertRaises(TypeError, pep8.register_check)

0 commit comments

Comments
 (0)