Add a mixin for setting file_patterns based off tool settings.

Review Request #11546 — Created March 22, 2021 and submitted

Information

ReviewBot
release-3.0.x

Reviewers

A common pattern in Review Bot tools is to allow users to set a list of
supported file extensions. The tools that support this all do it a bit
differently, in terms of what they expect or allow, and how they set it.

This change introduces a new mixin, FilePatternsFromSettingMixin,
which standardizes how this works. It offers three new class attributes
for a tool:

  • file_extensions_setting - The name of a configurable tool setting
    where custom file extensions are set.

  • file_patterns_setting - The name of a configurable tool setting
    where custom glob file patterns are set.

  • include_default_file_patterns - Whether any class-level defaults for
    file_patterns should always be included in the final result.

This simplifies tools, leading to fewer differences in behavior, and
encourages more customization.

The new implementation handles escaping of file extensions in order to
avoid issues with patterns, as well as handling inconsistencies in
lists of extensions and patterns (extra commas, whitespace, or duplicates).

Unit tests pass on Python 2.7 and 3.x.

Summary ID
Add a mixin for setting file_patterns based off tool settings.
A common pattern in Review Bot tools is to allow users to set a list of supported file extensions. The tools that support this all do it a bit differently, in terms of what they expect or allow, and how they set it. This change introduces a new mixin, `FilePatternsFromSettingMixin`, which standardizes how this works. It offers three new class attributes for a tool: * `file_extensions_setting` - The name of a configurable tool setting where custom file extensions are set. * `file_patterns_setting` - The name of a configurable tool setting where custom glob file patterns are set. * `include_default_file_patterns` - Whether any class-level defaults for `file_patterns` should always be included in the final result. This simplifies tools, leading to fewer differences in behavior, and encourages more customization.
ea8a0e0df5405ceffa19c9c1ac0d0901d4333be8
chipx86
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-3.0.x (96b5da2)