| Index: tools/telemetry/telemetry/user_story/user_story_filter_unittest.py
|
| diff --git a/tools/telemetry/telemetry/user_story/user_story_filter_unittest.py b/tools/telemetry/telemetry/user_story/user_story_filter_unittest.py
|
| index 8445e70dcc5a06cad7731f477a8f0e0e3fc44290..58386a7ea2cf8cad2500ce6fa65aef7dfb299287 100644
|
| --- a/tools/telemetry/telemetry/user_story/user_story_filter_unittest.py
|
| +++ b/tools/telemetry/telemetry/user_story/user_story_filter_unittest.py
|
| @@ -4,92 +4,91 @@
|
|
|
| import unittest
|
|
|
| -from telemetry.user_story import user_story_filter
|
| from telemetry.page import page
|
| from telemetry.page import page_set
|
| -
|
| -
|
| -class MockUrlFilterOptions(object):
|
| - def __init__(self, page_filter_include, page_filter_exclude):
|
| - self.page_filter = page_filter_include
|
| - self.page_filter_exclude = page_filter_exclude
|
| - self.page_label_filter = None
|
| - self.page_label_filter_exclude = None
|
| -
|
| -
|
| -class MockLabelFilterOptions(object):
|
| - def __init__(self, page_label_filter, page_label_filter_exclude):
|
| - self.page_filter = None
|
| - self.page_filter_exclude = None
|
| - self.page_label_filter = page_label_filter
|
| - self.page_label_filter_exclude = page_label_filter_exclude
|
| +from telemetry.user_story import user_story_filter
|
|
|
|
|
| class UserStoryFilterTest(unittest.TestCase):
|
| +
|
| def setUp(self):
|
| ps = page_set.PageSet()
|
| self.p1 = page.Page(
|
| - 'file://conformance/textures/tex-sub-image-2d.html', page_set=ps,
|
| - name='WebglConformance.conformance_textures_tex_sub_image_2d',
|
| - labels=['label1', 'label2'])
|
| + url='file://your/smile/widen.html', page_set=ps,
|
| + name='MayYour.smile_widen', labels=['label1', 'label2'])
|
| self.p2 = page.Page(
|
| - 'file://othersuite/textures/tex-sub-image-3d.html', page_set=ps,
|
| - name='OtherSuite.textures_tex_sub_image_3d',
|
| - labels=['label1'])
|
| + url='file://share_a/smile/too.html', page_set=ps,
|
| + name='ShareA.smiles_too', labels=['label1'])
|
| self.p3 = page.Page(
|
| - 'file://othersuite/textures/tex-sub-image-3d.html', page_set=ps,
|
| + url='file://share_a/smile/too.html', page_set=ps,
|
| labels=['label2'])
|
| + self.pages = [self.p1, self.p2, self.p3]
|
| +
|
| + @staticmethod
|
| + def ProcessCommandLineArgs(parser=None, **kwargs):
|
| + class Options(object):
|
| + def __init__(
|
| + self, story_filter=None, story_filter_exclude=None,
|
| + story_label_filter=None, story_label_filter_exclude=None):
|
| + self.story_filter = story_filter
|
| + self.story_filter_exclude = story_filter_exclude
|
| + self.story_label_filter = story_label_filter
|
| + self.story_label_filter_exclude = story_label_filter_exclude
|
| + user_story_filter.UserStoryFilter.ProcessCommandLineArgs(
|
| + parser, Options(**kwargs))
|
| +
|
| + def PageSelections(self):
|
| + return [user_story_filter.UserStoryFilter.IsSelected(p) for p in self.pages]
|
| +
|
| + def testNoFilterMatchesAll(self):
|
| + self.ProcessCommandLineArgs()
|
| + self.assertEquals([True, True, True], self.PageSelections())
|
| +
|
| + def testBadRegexCallsParserError(self):
|
| + class MockParserException(Exception):
|
| + pass
|
| + class MockParser(object):
|
| + def error(self, _):
|
| + raise MockParserException
|
| + with self.assertRaises(MockParserException):
|
| + self.ProcessCommandLineArgs(parser=MockParser(), story_filter='+')
|
| +
|
| + def testUniqueSubstring(self):
|
| + self.ProcessCommandLineArgs(story_filter='smile_widen')
|
| + self.assertEquals([True, False, False], self.PageSelections())
|
| +
|
| + def testSharedSubstring(self):
|
| + self.ProcessCommandLineArgs(story_filter='smile')
|
| + self.assertEquals([True, True, True], self.PageSelections())
|
| +
|
| + def testNoMatch(self):
|
| + self.ProcessCommandLineArgs(story_filter='frown')
|
| + self.assertEquals([False, False, False], self.PageSelections())
|
| +
|
| + def testExclude(self):
|
| + self.ProcessCommandLineArgs(story_filter_exclude='ShareA')
|
| + self.assertEquals([True, False, True], self.PageSelections())
|
| +
|
| + def testExcludeTakesPriority(self):
|
| + self.ProcessCommandLineArgs(
|
| + story_filter='smile',
|
| + story_filter_exclude='wide')
|
| + self.assertEquals([False, True, True], self.PageSelections())
|
| +
|
| + def testNoNameMatchesDisplayName(self):
|
| + self.ProcessCommandLineArgs(story_filter='share_a/smile')
|
| + self.assertEquals([False, False, True], self.PageSelections())
|
| +
|
| + def testNoLabelMatch(self):
|
| + self.ProcessCommandLineArgs(story_label_filter='labelX')
|
| + self.assertEquals([False, False, False], self.PageSelections())
|
| +
|
| + def testLabelsAllMatch(self):
|
| + self.ProcessCommandLineArgs(story_label_filter='label1,label2')
|
| + self.assertEquals([True, True, True], self.PageSelections())
|
|
|
| - def testURLPattern(self):
|
| - options = MockUrlFilterOptions('conformance_textures', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| - options = MockUrlFilterOptions('textures', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| - options = MockUrlFilterOptions('somethingelse', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| -
|
| - def testName(self):
|
| - options = MockUrlFilterOptions('somethingelse', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| - options = MockUrlFilterOptions('textures_tex_sub_image', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| - options = MockUrlFilterOptions('WebglConformance', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| - options = MockUrlFilterOptions('OtherSuite', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| -
|
| - def testNameNone(self):
|
| - options = MockUrlFilterOptions('othersuite/textures', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p3))
|
| - options = MockUrlFilterOptions('conformance/textures', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p3))
|
| -
|
| - def testLabelFilters(self):
|
| - # Include both labels
|
| - options = MockLabelFilterOptions('label1,label2', '')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p3))
|
| - # Exclude takes priority
|
| - options = MockLabelFilterOptions('label1', 'label2')
|
| - user_story_filter.UserStoryFilter.ProcessCommandLineArgs(None, options)
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p1))
|
| - self.assertTrue(user_story_filter.UserStoryFilter.IsSelected(self.p2))
|
| - self.assertFalse(user_story_filter.UserStoryFilter.IsSelected(self.p3))
|
| + def testExcludeLabelTakesPriority(self):
|
| + self.ProcessCommandLineArgs(
|
| + story_label_filter='label1',
|
| + story_label_filter_exclude='label2')
|
| + self.assertEquals([False, True, False], self.PageSelections())
|
|
|