1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# 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 unittest
from telemetry import story
from telemetry.page import page
from telemetry.story import story_filter as story_filter_module
class FilterTest(unittest.TestCase):
def setUp(self):
story_set = story.StorySet()
self.p1 = page.Page(
url='file://your/smile/widen.html', page_set=story_set,
name='MayYour.smile_widen', tags=['tag1', 'tag2'])
self.p2 = page.Page(
url='file://share_a/smile/too.html', page_set=story_set,
name='ShareA.smiles_too', tags=['tag1'])
self.p3 = page.Page(
url='file://share_a/smile/too.html', page_set=story_set,
tags=['tag2'])
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,
story_tag_filter=None, story_tag_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
self.story_tag_filter = story_tag_filter
self.story_tag_filter_exclude = story_tag_filter_exclude
story_filter_module.StoryFilter.ProcessCommandLineArgs(
parser, Options(**kwargs))
def PageSelections(self):
return [story_filter_module.StoryFilter.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 testNotagMatch(self):
self.ProcessCommandLineArgs(story_tag_filter='tagX')
self.assertEquals([False, False, False], self.PageSelections())
def testtagsAllMatch(self):
self.ProcessCommandLineArgs(story_tag_filter='tag1,tag2')
self.assertEquals([True, True, True], self.PageSelections())
def testExcludetagTakesPriority(self):
self.ProcessCommandLineArgs(
story_tag_filter='tag1',
story_tag_filter_exclude='tag2')
self.assertEquals([False, True, False], self.PageSelections())
|