From 1d665700e59358ff9a013b44623ebbdd302e2119 Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Sat, 27 Jul 2013 21:48:36 -0500 Subject: [PATCH] These should have been committed over a week ago. --- flake8/tests/test_engine.py | 62 ++++++++++++++++++++++++++++++++++++- setup.py | 2 +- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/flake8/tests/test_engine.py b/flake8/tests/test_engine.py index ba04bce..48be97b 100644 --- a/flake8/tests/test_engine.py +++ b/flake8/tests/test_engine.py @@ -1,9 +1,26 @@ -from flake8 import engine +from flake8 import engine, util, __version__ +import pep8 import unittest import mock class TestEngine(unittest.TestCase): + def setUp(self): + self.patches = {} + + def tearDown(self): + assert len(self.patches.items()) == 0 + + def start_patch(self, patch): + self.patches[patch] = mock.patch(patch) + return self.patches[patch].start() + + def stop_patches(self): + patches = self.patches.copy() + for k, v in patches.items(): + v.stop() + del(self.patches[k]) + def test_get_style_guide(self): with mock.patch('flake8.engine._register_extensions') as reg_ext: reg_ext.return_value = ([], [], []) @@ -19,3 +36,46 @@ class TestEngine(unittest.TestCase): engine.get_style_guide(foo='bar') get_parser.assert_called_once_with() StyleGuide.assert_called_once_with(**{'parser': m, 'foo': 'bar'}) + + def test_register_extensions(self): + with mock.patch('pep8.register_check') as register_check: + registered_extensions = engine._register_extensions() + self.assertTrue(isinstance(registered_extensions[0], util.OrderedSet)) + self.assertTrue(len(registered_extensions[0]) > 0) + for i in registered_extensions[1:]: + self.assertTrue(isinstance(i, list)) + register_check.assert_called() + + def test_get_parser(self): + # setup + re = self.start_patch('flake8.engine._register_extensions') + gpv = self.start_patch('flake8.engine.get_python_version') + pgp = self.start_patch('pep8.get_parser') + m = mock.Mock() + re.return_value = ([('pyflakes', '0.7'), ('mccabe', '0.2')], [], []) + gpv.return_value = 'Python Version' + pgp.return_value = m + # actual call we're testing + parser, hooks = engine.get_parser() + # assertions + re.assert_called() + gpv.assert_called() + pgp.assert_called_once_with( + 'flake8', + '%s (pyflakes: 0.7, mccabe: 0.2) Python Version' % __version__ + ) + m.remove_option.assert_called() + m.add_option.assert_called() + self.assertEqual(parser, m) + self.assertEqual(hooks, []) + # clean-up + self.stop_patches() + + def test_get_python_version(self): + self.assertTrue('on' in engine.get_python_version()) + # Silly test but it will provide 100% test coverage + # Also we can never be sure (without reconstructing the string + # ourselves) what system we may be testing on. + +if __name__ == '__main__': + unittest.main() diff --git a/setup.py b/setup.py index 12dc391..d98428b 100644 --- a/setup.py +++ b/setup.py @@ -52,6 +52,6 @@ setup( "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Quality Assurance", ], - tests_require=['nose'], + tests_require=['nose', 'mock'], test_suite='nose.collector', )