| Index: tools/telemetry/telemetry/story/story_filter.py
|
| diff --git a/tools/telemetry/telemetry/story/story_filter.py b/tools/telemetry/telemetry/story/story_filter.py
|
| deleted file mode 100644
|
| index 10551b2342932c9e6d575441fcc4899ba198a6fe..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/story/story_filter.py
|
| +++ /dev/null
|
| @@ -1,81 +0,0 @@
|
| -# Copyright 2013 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import optparse
|
| -import re
|
| -
|
| -from telemetry.internal.util import command_line
|
| -
|
| -
|
| -class _StoryMatcher(object):
|
| - def __init__(self, pattern):
|
| - self._regex = None
|
| - self.has_compile_error = False
|
| - if pattern:
|
| - try:
|
| - self._regex = re.compile(pattern)
|
| - except re.error:
|
| - self.has_compile_error = True
|
| -
|
| - def __nonzero__(self):
|
| - return self._regex is not None
|
| -
|
| - def HasMatch(self, story):
|
| - return self and bool(
|
| - self._regex.search(story.display_name) or
|
| - (story.name and self._regex.search(story.name)))
|
| -
|
| -
|
| -class _StoryLabelMatcher(object):
|
| - def __init__(self, labels_str):
|
| - self._labels = labels_str.split(',') if labels_str else None
|
| -
|
| - def __nonzero__(self):
|
| - return self._labels is not None
|
| -
|
| - def HasLabelIn(self, story):
|
| - return self and bool(story.labels.intersection(self._labels))
|
| -
|
| -
|
| -class StoryFilter(command_line.ArgumentHandlerMixIn):
|
| - """Filters stories in the story set based on command-line flags."""
|
| -
|
| - @classmethod
|
| - def AddCommandLineArgs(cls, parser):
|
| - group = optparse.OptionGroup(parser, 'User story filtering options')
|
| - group.add_option('--story-filter',
|
| - help='Use only stories whose names match the given filter regexp.')
|
| - group.add_option('--story-filter-exclude',
|
| - help='Exclude stories whose names match the given filter regexp.')
|
| - group.add_option('--story-label-filter',
|
| - help='Use only stories that have any of these labels')
|
| - group.add_option('--story-label-filter-exclude',
|
| - help='Exclude stories that have any of these labels')
|
| - parser.add_option_group(group)
|
| -
|
| - @classmethod
|
| - def ProcessCommandLineArgs(cls, parser, args):
|
| - cls._include_regex = _StoryMatcher(args.story_filter)
|
| - cls._exclude_regex = _StoryMatcher(args.story_filter_exclude)
|
| - cls._include_labels = _StoryLabelMatcher(args.story_label_filter)
|
| - cls._exclude_labels = _StoryLabelMatcher(args.story_label_filter_exclude)
|
| -
|
| - if cls._include_regex.has_compile_error:
|
| - raise parser.error('--story-filter: Invalid regex.')
|
| - if cls._exclude_regex.has_compile_error:
|
| - raise parser.error('--story-filter-exclude: Invalid regex.')
|
| -
|
| - @classmethod
|
| - def IsSelected(cls, story):
|
| - # Exclude filters take priority.
|
| - if cls._exclude_labels.HasLabelIn(story):
|
| - return False
|
| - if cls._exclude_regex.HasMatch(story):
|
| - return False
|
| -
|
| - if cls._include_labels and not cls._include_labels.HasLabelIn(story):
|
| - return False
|
| - if cls._include_regex and not cls._include_regex.HasMatch(story):
|
| - return False
|
| - return True
|
|
|