예제 #1
0
def test_statistics_for_single_record():
    """Show we can retrieve the only statistic recorded."""
    aggregator = stats.Statistics()
    assert list(aggregator.statistics_for('E')) == []
    aggregator.record(make_error())
    statistics = list(aggregator.statistics_for('E'))
    assert len(statistics) == 1
    assert isinstance(statistics[0], stats.Statistic)
예제 #2
0
def test_style_guide_applies_to(style_guide_file, filename, expected):
    """Verify that we match a file to its style guide."""
    formatter = mock.create_autospec(base.BaseFormatter, instance=True)
    options = create_options()
    guide = style_guide.StyleGuide(options,
                                   formatter=formatter,
                                   stats=statistics.Statistics(),
                                   filename=style_guide_file)
    assert guide.applies_to(filename) is expected
예제 #3
0
def test_statistics_for_filters_by_filename():
    """Show we can retrieve the only statistic recorded."""
    aggregator = stats.Statistics()
    assert list(aggregator.statistics_for('E')) == []
    aggregator.record(make_error())
    aggregator.record(make_error(filename='example.py'))

    statistics = list(aggregator.statistics_for('E', DEFAULT_FILENAME))
    assert len(statistics) == 1
    assert isinstance(statistics[0], stats.Statistic)
예제 #4
0
def test_recording_statistics():
    """Verify that we appropriately create a new Statistic and store it."""
    aggregator = stats.Statistics()
    assert list(aggregator.statistics_for('E')) == []
    aggregator.record(make_error())
    storage = aggregator._store
    for key, value in storage.items():
        assert isinstance(key, stats.Key)
        assert isinstance(value, stats.Statistic)

    assert storage[stats.Key(DEFAULT_FILENAME, DEFAULT_ERROR_CODE)].count == 1
예제 #5
0
def test_handle_error_does_not_raise_type_errors():
    """Verify that we handle our inputs better."""
    formatter = mock.create_autospec(base.BaseFormatter, instance=True)
    guide = style_guide.StyleGuide(
        create_options(select=['T111'], ignore=[]),
        formatter=formatter,
        stats=statistics.Statistics(),
    )

    assert 1 == guide.handle_error('T111', 'file.py', 1, None, 'error found',
                                   'a = 1')
예제 #6
0
    def __init__(self, options, listener_trie, formatter, decider=None):
        """Initialize our StyleGuide.

        .. todo:: Add parameter documentation.
        """
        self.options = options
        self.listener = listener_trie
        self.formatter = formatter
        self.stats = statistics.Statistics()
        self.decider = decider or DecisionEngine(options)
        self._parsed_diff = {}
예제 #7
0
def test_statistic_for_retrieves_more_than_one_value():
    """Show this works for more than a couple statistic values."""
    aggregator = stats.Statistics()
    for i in range(50):
        aggregator.record(make_error(code='E1{:02d}'.format(i)))
        aggregator.record(make_error(code='W2{:02d}'.format(i)))

    statistics = list(aggregator.statistics_for('E'))
    assert len(statistics) == 50

    statistics = list(aggregator.statistics_for('W22'))
    assert len(statistics) == 10
예제 #8
0
    def __init__(self, options, formatter, filename=None, decider=None):
        """Initialize our StyleGuide.

        .. todo:: Add parameter documentation.
        """
        self.options = options
        self.formatter = formatter
        self.stats = statistics.Statistics()
        self.decider = decider or DecisionEngine(options)
        self.filename = filename
        if self.filename:
            self.filename = utils.normalize_path(self.filename)
        self._parsed_diff = {}
예제 #9
0
    def __init__(self, options, listener_trie, formatter):
        """Initialize our StyleGuide.

        .. todo:: Add parameter documentation.
        """
        self.options = options
        self.listener = listener_trie
        self.formatter = formatter
        self.stats = statistics.Statistics()
        self._selected = tuple(options.select)
        self._extended_selected = tuple(options.extended_default_select)
        self._ignored = tuple(options.ignore)
        self._decision_cache = {}
        self._parsed_diff = {}
예제 #10
0
    def __init__(self, options, formatter, decider=None):
        """Initialize our StyleGuide.

        .. todo:: Add parameter documentation.
        """
        self.options = options
        self.formatter = formatter
        self.stats = statistics.Statistics()
        self.decider = decider or DecisionEngine(options)
        self.style_guides = []  # type: List[StyleGuide]
        self.default_style_guide = StyleGuide(options,
                                              formatter,
                                              self.stats,
                                              decider=decider)
        self.style_guides = list(
            itertools.chain([self.default_style_guide],
                            self.populate_style_guides_with(options)))
    def __init__(
        self,
        options,  # type: argparse.Namespace
        formatter,  # type: base_formatter.BaseFormatter
        decider=None,  # type: Optional[DecisionEngine]
    ):  # type: (...) -> None
        """Initialize our StyleGuide.

        .. todo:: Add parameter documentation.
        """
        self.options = options
        self.formatter = formatter
        self.stats = statistics.Statistics()
        self.decider = decider or DecisionEngine(options)
        self.style_guides = []  # type: List[StyleGuide]
        self.default_style_guide = StyleGuide(
            options, formatter, self.stats, decider=decider
        )
        self.style_guides = list(
            itertools.chain(
                [self.default_style_guide], self.populate_style_guides_with(options),
            )
        )