"""Test aggregation of config files and command-line options.""" import argparse import os import pytest from flake8.main import options from flake8.options import aggregator from flake8.options import config from flake8.options import manager CLI_SPECIFIED_CONFIG = "tests/fixtures/config_files/cli-specified.ini" @pytest.fixture def optmanager(): """Create a new OptionManager.""" prelim_parser = argparse.ArgumentParser(add_help=False) options.register_preliminary_options(prelim_parser) option_manager = manager.OptionManager( prog="flake8", version="3.0.0", parents=[prelim_parser], ) options.register_default_options(option_manager) return option_manager def test_aggregate_options_with_config(optmanager): """Verify we aggregate options and config values appropriately.""" arguments = [ "flake8", "--select", "E11,E34,E402,W,F", "--exclude", "tests/*", ] config_finder = config.ConfigFileFinder( "flake8", config_file=CLI_SPECIFIED_CONFIG ) options, args = aggregator.aggregate_options( optmanager, config_finder, arguments ) assert options.select == ["E11", "E34", "E402", "W", "F"] assert options.ignore == ["E123", "W234", "E111"] assert options.exclude == [os.path.abspath("tests/*")] def test_aggregate_options_when_isolated(optmanager): """Verify we aggregate options and config values appropriately.""" arguments = [ "flake8", "--select", "E11,E34,E402,W,F", "--exclude", "tests/*", ] config_finder = config.ConfigFileFinder("flake8", ignore_config_files=True) optmanager.extend_default_ignore(["E8"]) options, args = aggregator.aggregate_options( optmanager, config_finder, arguments ) assert options.select == ["E11", "E34", "E402", "W", "F"] assert sorted(options.ignore) == [ "E121", "E123", "E126", "E226", "E24", "E704", "E8", "W503", "W504", ] assert options.exclude == [os.path.abspath("tests/*")]