def test_I101_google_style(): base_path = os.path.dirname(__file__) test_case_path = os.path.join(base_path, "test_cases") fullpath = os.path.join(test_case_path, "bad_order_google.py") data = open(fullpath).read() tree = ast.parse(data, fullpath) argv = [ "--application-import-names=flake8_import_order,tests", "--import-order-style=google", ] parser = pep8.get_parser('', '') Linter.add_options(parser) options, args = parser.parse_args(argv) Linter.parse_options(options) checker = Linter(tree, fullpath) codes = [] messages = [] for lineno, col_offset, msg, instance in checker.run(): code, message = msg.split(" ", 1) codes.append(code) messages.append(message) assert codes == ["I101"] assert messages == [ "Imported names are in the wrong order. Should be A, c, D" ]
def test_expected_error(tree, filename, expected): parser = pep8.get_parser('', '') Linter.add_options(parser) options, args = parser.parse_args( ['--import-order-style=google'] if 'google' in filename else []) Linter.parse_options(options) checker = Linter(tree, filename) errors = [] for lineno, col_offset, msg, instance in checker.run(): errors.append(msg.split()[0]) assert errors == expected
def test_linter(): argv = ['--application-import-names=flake8_import_order'] parser = pycodestyle.get_parser('', '') Linter.add_options(parser) options, args = parser.parse_args(argv) Linter.parse_options(options) data = 'import ast\nimport flake8_import_order\n' pycodestyle.stdin_get_value = lambda: data tree = ast.parse(data) checker = Linter(tree, None) for lineno, col_offset, msg, instance in checker.run(): assert msg == 'I201 Missing newline before sections or imports.'
def test_expected_error(tree, filename, expected_codes, expected_messages): argv = ["--application-import-names=flake8_import_order,tests"] if 'google' in filename: argv.append('--import-order-style=google') parser = pep8.get_parser('', '') Linter.add_options(parser) options, args = parser.parse_args(argv) Linter.parse_options(options) checker = Linter(tree, filename) codes = [] messages = [] for lineno, col_offset, msg, instance in checker.run(): code, message = msg.split(" ", 1) codes.append(code) messages.append(message) assert codes == expected_codes assert set(messages) >= set(expected_messages)
def _get_linter(argv, code, filename): parser = pycodestyle.get_parser('', '') Linter.add_options(parser) options, args = parser.parse_args(argv) Linter.parse_options(options) return Linter(ast.parse(code, filename), str(filename))