| |
| |
| |
| """ |
| (c) 2017 - Copyright Red Hat Inc |
| |
| Authors: |
| Pierre-Yves Chibon <pingou@pingoured.fr> |
| |
| Tests for flake8 compliance of the code |
| |
| """ |
| |
| from __future__ import unicode_literals, absolute_import |
| |
| import os |
| import subprocess |
| import sys |
| import unittest |
| |
| import six |
| |
| REPO_PATH = os.path.abspath( |
| os.path.join(os.path.dirname(__file__), '..', 'pagure')) |
| |
| |
| class TestStyle(unittest.TestCase): |
| """This test class contains tests pertaining to code style.""" |
| def test_code_with_flake8(self): |
| """Enforce PEP-8 compliance on the codebase. |
| |
| This test runs flake8 on the code, and will fail if it returns a |
| non-zero exit code. |
| """ |
| |
| |
| flake8_command = [ |
| sys.executable, '-m', 'flake8', '--ignore=E712,W503,E203', |
| REPO_PATH |
| ] |
| |
| |
| import flake8 |
| flake8_v = flake8.__version__.split('.') |
| for idx, val in enumerate(flake8_v): |
| try: |
| val = int(val) |
| except ValueError: |
| pass |
| flake8_v[idx] = val |
| old_flake = tuple(flake8_v) < (3, 0) |
| |
| if old_flake: |
| raise unittest.SkipTest("Flake8 version too old to be useful") |
| |
| proc = subprocess.Popen( |
| flake8_command, |
| stdout=subprocess.PIPE, |
| cwd=REPO_PATH, |
| ) |
| print(proc.communicate()) |
| |
| self.assertEqual(proc.returncode, 0) |
| |
| @unittest.skipIf( |
| not (six.PY3 and sys.version_info.minor >=6), |
| "Black is only available in python 3.6+") |
| def test_code_with_black(self): |
| """Enforce black compliance on the codebase. |
| |
| This test runs black on the code, and will fail if it returns a |
| non-zero exit code. |
| """ |
| black_command = [ |
| sys.executable, '-m', 'black', '-l', '79', '--check', REPO_PATH |
| ] |
| proc = subprocess.Popen( |
| black_command, |
| stdout=subprocess.PIPE, |
| stderr=subprocess.PIPE, |
| cwd=REPO_PATH, |
| ) |
| stdout, stderr = proc.communicate() |
| print('stdout: ') |
| print(stdout.decode('utf-8')) |
| print('stderr: ') |
| print(stderr.decode('utf-8')) |
| |
| self.assertEqual(proc.returncode, 0) |
| |
| |
| if __name__ == '__main__': |
| unittest.main(verbosity=2) |