Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: media/tools/layout_tests/test_expectations_unittest.py

Issue 7671049: Refactor/Simplify the test expectation code in media/tools/layout_tests/ (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Modified based on CR comments. Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/tools/layout_tests/test_expectations.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """A unit test module for TestExpectationManager."""
7
8 from datetime import date
9 from datetime import datetime
10 from datetime import timedelta
11 import os
12 import shutil
13 import time
14 import unittest 6 import unittest
15 7
16 from test_expectations import TestExpectationsManager 8 from test_expectations import TestExpectations
17 9
18 10
19 class TestTestExpectationsManager(unittest.TestCase): 11 class TestTestExpectations(unittest.TestCase):
20 """A unit test class for TestExpectationManager."""
21 test_dir = u'test_dir'
22 cleaned = False
23 12
24 def setUp(self): 13 def testParseLine(self):
25 if not TestTestExpectationsManager.cleaned: 14 line = "BUGCR86714 MAC GPU : media/video-zoom.html = CRASH IMAGE"
26 if os.path.exists(self.test_dir): 15 comments = "Comments"
27 shutil.rmtree(self.test_dir) 16 expected_map = {'CRASH': True, 'IMAGE': True, 'Bugs': ['BUGCR86714'],
28 os.mkdir(self.test_dir) 17 'Comments': 'Comments', 'MAC': True, 'GPU': True}
29 TestTestExpectationsManager.cleaned = True 18 self.assertEquals(TestExpectations.ParseLine(line, comments),
19 expected_map)
30 20
31 def verify_test_expectaion_format(self, file_name, media): 21 def testParseLineWithLineComments(self):
32 """Verify the test expectation format in the file. 22 line = "BUGCR86714 MAC GPU : media/video-zoom.html = CRASH IMAGE // foo"
Ami GONE FROM WEBRTC_CHROMIUM 2011/08/20 18:21:00 I think you still missed my point. If the inline c
imasaki1 2011/08/20 20:30:03 Done.
23 comments = "Comments"
24 expected_map = {'CRASH': True, 'IMAGE': True, 'Bugs': ['BUGCR86714'],
25 'Comments': 'Comments foo', 'MAC': True, 'GPU': True}
26 self.assertEquals(TestExpectations.ParseLine(line, comments),
27 expected_map)
33 28
34 Args: 29 def testExtractTestName(self):
35 file_name: a file name to be verified. 30 line = ('BUGWK58013 MAC GPU : compositing/scaling/'
36 media: a boolean to indicate whether the test is for media 31 'tiled-layer-recursion.html = CRASH')
37 or not. 32 self.assertEquals(TestExpectations.ExtractTestName(line),
33 'compositing/scaling/tiled-layer-recursion.html',
34 'Test case name is different')
38 35
39 Returns: 36 def testExtractTestNameWithDirName(self):
40 a boolean indicating whether the file is in test expectation 37 line = 'BUGWK43668 SKIP : media/track/ = TIMEOUT'
41 format. 38 self.assertEquals(TestExpectations.ExtractTestName(line),
42 """ 39 'media/track/',
43 file_object = open(file_name, 'r') 40 'Test case name is different')
44 firstline = file_object.readline()
45 if ('These are the layout test expectations for the '
46 'Chromium port(s) of WebKit.') not in firstline:
47 return False
48 # Check media related test case file is there.
49 verify_media = not media
50 if media:
51 for line in file_object:
52 if 'media' in line:
53 verify_media = True
54 file_object.close()
55 return verify_media
56 41
57 def verify_test_expectaion_format_in_csv(self, file_name): 42 def testExtractTestNameWithException(self):
58 """Verify the CSV file has information parsed. 43 line = 'Foo'
59 44 try:
60 Args: 45 TestExpectations.ExtractTestName(line),
61 file_name: file name to be examined. 46 except ValueError:
62 47 return
63 Returns: 48 fail
64 a boolean that indicates that the CSV file contains information 49 if __name__ == '__main__':
65 parsed from test expectation file. 50 unittest.main()
66 """
67 file_object = open(file_name, 'r')
68 firstline = file_object.readline()
69 file_object.close()
70 return 'TestCase' in firstline
71
72 def test_get_and_save_content(self):
73 """Test get_and_save_content method.
74
75 Also, test several other methods.
76 """
77 # Get all test cases.
78 result_file = os.path.join(self.test_dir,
79 'test_get_and_save_content.txt')
80
81 test_expectations_manager = TestExpectationsManager()
82 test_expectations_manager.get_and_save_content(
83 test_expectations_manager.DEFAULT_TEST_EXPECTATION_LOCATION,
84 result_file)
85
86 self.assertTrue(
87 self.verify_test_expectaion_format(result_file, False))
88
89 # Get media test cases from local all test cases.
90 result_file_media = os.path.join(self.test_dir,
91 'test_get_and_save_content_m.txt')
92
93 test_expectations_manager = TestExpectationsManager()
94 test_expectations_manager.get_and_save_content_media_only(
95 result_file, result_file_media)
96
97 self.assertTrue(
98 self.verify_test_expectaion_format(result_file_media, True))
99
100 # Get media test cases from local all test cases.
101 result_file_media_csv = os.path.join(
102 self.test_dir, 'test_get_and_save_content_m.csv')
103
104 test_expectations_manager.get_and_parse_content(
105 result_file, result_file_media_csv, True)
106
107 elements = test_expectations_manager.get_test_case_element(
108 'media/restore-from-page-cache.html',
109 ['TEXT', 'UNIMPLEMENTED', 'RELEASE'])
110 self.assertEqual(
111 elements, ['N', 'N', 'N'],
112 'returned element of GetTestCaseElement is wrong')
113
114 field_names = ['SKIP', 'UNIMPLEMENTED', 'KNOWNISSUE']
115 field_name_indexes = test_expectations_manager.get_column_indexes(
116 field_names)
117 expected_filed_name_indexes = [6, 22, 23]
118 self.assertEqual(field_name_indexes, expected_filed_name_indexes,
119 'incorrect field indexes')
120
121 def test_parse_content_from_svn(self):
122 """Test get_and_parse_content method using SVN."""
123 self.parse_content_from_svn_test_helper(False)
124
125 def test_parse_content_from_svn_media(self):
126 """Test get_and_parse_content method using SVN (only media)."""
127 self.parse_content_from_svn_test_helper(True)
128
129 def parse_content_from_svn_test_helper(self, media):
130 """Test get_and_parse_content method using SVN.
131
132 Args:
133 media: True if this is for media tests.
134 """
135 media_string = 'all'
136 if media:
137 media_string = 'media'
138 result_file = os.path.join(
139 self.test_dir,
140 'test_parse_content_from_svn_%s.csv' % media_string)
141 test_expectations_manager = TestExpectationsManager()
142 test_expectations_manager.get_and_parse_content(
143 test_expectations_manager.DEFAULT_TEST_EXPECTATION_LOCATION,
144 result_file, media)
145
146 self.assertTrue(test_expectations_manager.testcases > 0)
147
148 self.verify_test_expectaion_format_in_csv(result_file)
149
150 def test_generate_link_for_cbug(self):
151 """Test generate_link_for_bug for a chromium bug."""
152 self.generate_link_for_bug_helper(
153 'BUGCR1234',
154 'http://code.google.com/p/chromium/issues/detail?id=1234')
155
156 def test_generate_link_for_wbug(self):
157 """Test generate_link_for_bug for a webkit bug."""
158 self.generate_link_for_bug_helper(
159 'BUGWK1234',
160 'https://bugs.webkit.org/show_bug.cgi?id=1234')
161
162 def test_generate_link_for_pbug(self):
163 """Test generate_link_for_bug for person."""
164 self.generate_link_for_bug_helper('BUGIMASAKI',
165 'mailto:imasaki@chromium.org')
166
167 def generate_link_for_bug_helper(self, bug_text, expected_link):
168 """A helper for generating link test."""
169 test_expectations_manager = TestExpectationsManager()
170 link = test_expectations_manager.generate_link_for_bug(bug_text)
171 self.assertEqual(link, expected_link, 'link generated are not correct')
172
173 def test_te_diff_between_times(self):
174 test_expectations_manager = TestExpectationsManager()
175 now = time.time()
176 past = datetime.now() - timedelta(days=4)
177 past = time.mktime(past.timetuple())
178 result_list = test_expectations_manager.get_te_diff_between_times(
179 test_expectations_manager.DEFAULT_TEST_EXPECTATION_DIR,
180 now, past, ['media/audio-repaint.html'], -1, True)
181 self.assertTrue(result_list is not None)
182
183 def test_te_diff_between_times_no_changecheck(self):
184 test_expectations_manager = TestExpectationsManager()
185 now = time.time()
186 past = datetime.now() - timedelta(weeks=2)
187 past = time.mktime(past.timetuple())
188 result_list = test_expectations_manager.get_te_diff_between_times(
189 test_expectations_manager.DEFAULT_TEST_EXPECTATION_DIR,
190 now, past, ['media/audio-repaint.html'], -1, False)
191 self.assertTrue(result_list is not None)
192
193 def test_te_diff_between_times_no_changecheck_with_pattern(self):
194 test_expectations_manager = TestExpectationsManager()
195 now = time.time()
196 past = datetime.now() - timedelta(weeks=2)
197 past = time.mktime(past.timetuple())
198 result_list = test_expectations_manager.get_te_diff_between_times(
199 test_expectations_manager.DEFAULT_TEST_EXPECTATION_DIR,
200 now, past, ['media/audio-repaint.html'], -1, False)
201 self.assertTrue(result_list is not None)
202
203 def test_get_all_column_names_no_other_field(self):
204 test_expectations_manager = TestExpectationsManager()
205 column_names = test_expectations_manager.get_all_column_names(False,
206 True)
207 other_field_column_names = test_expectations_manager.OTHER_FIELD_NAMES
208 for other_field_column_name in other_field_column_names:
209 self.assertFalse(other_field_column_name in column_names)
210
211 def test_get_all_column_names_no_comment_field(self):
212 test_expectations_manager = TestExpectationsManager()
213 column_names = test_expectations_manager.get_all_column_names(True,
214 False)
215 other_field_column_names = (
216 test_expectations_manager.COMMENT_COLUMN_NAMES)
217 for other_field_column_name in other_field_column_names:
218 self.assertFalse(other_field_column_name in column_names)
219
220
221 def main():
222 test_suite = unittest.TestLoader().loadTestsFromTestCase(
223 TestTestExpectationsManager)
224
225 unittest.TextTestRunner(verbosity=2).run(test_suite)
OLDNEW
« no previous file with comments | « media/tools/layout_tests/test_expectations.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698