2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
7 from datetime
import datetime
14 import layouttest_analyzer_helpers
17 class TestLayoutTestAnalyzerHelpers(unittest
.TestCase
):
19 def testFindLatestTime(self
):
20 time_list
= ['2011-08-18-19', '2011-08-18-22', '2011-08-18-21',
21 '2012-01-11-21', '.foo']
22 self
.assertEquals(layouttest_analyzer_helpers
.FindLatestTime(time_list
),
25 def testFindLatestTimeWithEmptyList(self
):
27 self
.assertEquals(layouttest_analyzer_helpers
.FindLatestTime(time_list
),
30 def testFindLatestTimeWithNoValidStringInList(self
):
31 time_list
= ['.foo1', '232232']
32 self
.assertEquals(layouttest_analyzer_helpers
.FindLatestTime(time_list
),
35 def GenerateTestDataWholeAndSkip(self
):
36 """You should call this method if you want to generate test data."""
37 file_path
= os
.path
.join('test_data', 'base')
38 analyzerResultMapBase
= (
39 layouttest_analyzer_helpers
.AnalyzerResultMap
.Load(file_path
))
40 # Remove this first part
41 m
= analyzerResultMapBase
.result_map
['whole']
42 del m
['media/video-source-type.html']
43 m
= analyzerResultMapBase
.result_map
['skip']
44 del m
['media/track/track-webvtt-tc004-magicheader.html']
46 file_path
= os
.path
.join('test_data', 'less')
47 analyzerResultMapBase
.Save(file_path
)
49 file_path
= os
.path
.join('test_data', 'base')
50 analyzerResultMapBase
= AnalyzerResultMap
.Load(file_path
)
52 analyzerResultMapBase
.result_map
['whole']['add1.html'] = True
53 analyzerResultMapBase
.result_map
['skip']['add2.html'] = True
55 file_path
= os
.path
.join('test_data', 'more')
56 analyzerResultMapBase
.Save(file_path
)
58 def GenerateTestDataNonSkip(self
):
59 """You should call this method if you want to generate test data."""
60 file_path
= os
.path
.join('test_data', 'base')
61 analyzerResultMapBase
= AnalyzerResultMap
.Load(file_path
)
62 m
= analyzerResultMapBase
.result_map
['nonskip']
63 ex
= m
['media/media-document-audio-repaint.html']
64 te_info_map1
= ex
['te_info'][0]
65 te_info_map2
= copy
.copy(te_info_map1
)
66 te_info_map2
['NEWADDED'] = True
67 ex
['te_info'].append(te_info_map2
)
68 m
= analyzerResultMapBase
.result_map
['nonskip']
70 file_path
= os
.path
.join('test_data', 'more_te_info')
71 analyzerResultMapBase
.Save(file_path
)
73 def testCompareResultMapsWholeAndSkip(self
):
74 file_path
= os
.path
.join('test_data', 'base')
75 analyzerResultMapBase
= (
76 layouttest_analyzer_helpers
.AnalyzerResultMap
.Load(file_path
))
78 file_path
= os
.path
.join('test_data', 'less')
79 analyzerResultMapLess
= (
80 layouttest_analyzer_helpers
.AnalyzerResultMap
.Load(file_path
))
82 diff
= analyzerResultMapBase
.CompareToOtherResultMap(analyzerResultMapLess
)
83 self
.assertEquals(diff
['skip'][0][0][0],
84 'media/track/track-webvtt-tc004-magicheader.html')
85 self
.assertEquals(diff
['whole'][0][0][0],
86 'media/video-source-type.html')
87 file_path
= os
.path
.join('test_data', 'more')
88 analyzerResultMapMore
= (
89 layouttest_analyzer_helpers
.AnalyzerResultMap
.Load(file_path
))
90 diff
= analyzerResultMapBase
.CompareToOtherResultMap(analyzerResultMapMore
)
91 self
.assertEquals(diff
['whole'][1][0][0], 'add1.html')
92 self
.assertEquals(diff
['skip'][1][0][0], 'add2.html')
94 def testCompareResultMapsNonSkip(self
):
95 file_path
= os
.path
.join('test_data', 'base')
96 analyzerResultMapBase
= (
97 layouttest_analyzer_helpers
.AnalyzerResultMap
.Load(file_path
))
98 file_path
= os
.path
.join('test_data', 'more_te_info')
99 analyzerResultMapMoreTEInfo
= (
100 layouttest_analyzer_helpers
.AnalyzerResultMap
.Load(file_path
))
101 m
= analyzerResultMapBase
.CompareToOtherResultMap(
102 analyzerResultMapMoreTEInfo
)
103 self
.assertTrue('NEWADDED' in m
['nonskip'][1][0][1][0])
105 def testGetListOfBugsForNonSkippedTests(self
):
106 file_path
= os
.path
.join('test_data', 'base')
107 analyzerResultMapBase
= (
108 layouttest_analyzer_helpers
.AnalyzerResultMap
.Load(file_path
))
110 len(analyzerResultMapBase
.GetListOfBugsForNonSkippedTests().keys()),
113 def RunTestGetRevisionString(self
, current_time_str
, prev_time_str
,
114 expected_rev_str
, expected_simple_rev_str
,
115 expected_rev_number
, expected_rev_date
,
116 testname
, diff_map_none
=False):
117 current_time
= datetime
.strptime(current_time_str
, '%Y-%m-%d-%H')
118 current_time
= time
.mktime(current_time
.timetuple())
119 prev_time
= datetime
.strptime(prev_time_str
, '%Y-%m-%d-%H')
120 prev_time
= time
.mktime(prev_time
.timetuple())
126 'skip': [[(testname
, 'te_info1')], []],
129 (rev_str
, simple_rev_str
, rev_number
, rev_date
) = (
130 layouttest_analyzer_helpers
.GetRevisionString(prev_time
, current_time
,
132 self
.assertEquals(rev_str
, expected_rev_str
)
133 self
.assertEquals(simple_rev_str
, expected_simple_rev_str
)
134 self
.assertEquals(rev_number
, expected_rev_number
)
135 self
.assertEquals(rev_date
, expected_rev_date
)
137 def testGetRevisionString(self
):
138 expected_rev_str
= ('<ul><a href="http://trac.webkit.org/changeset?'
139 'new=94377@trunk/LayoutTests/platform/chromium/'
140 'test_expectations.txt&old=94366@trunk/LayoutTests/'
141 'platform/chromium/test_expectations.txt">94366->'
143 '<li>jamesr@google.com</li>\n'
144 '<li>2011-09-01 18:00:23</li>\n'
145 '<ul><li>-<a href="http://webkit.org/b/63878">'
146 'BUGWK63878</a> : <a href="http://test-results.'
147 'appspot.com/dashboards/flakiness_dashboard.html#'
148 'tests=fast/dom/dom-constructors.html">fast/dom/'
149 'dom-constructors.html</a> = TEXT</li>\n</ul></ul>')
150 expected_simple_rev_str
= ('<a href="http://trac.webkit.org/changeset?'
151 'new=94377@trunk/LayoutTests/platform/chromium/'
152 'test_expectations.txt&old=94366@trunk/'
153 'LayoutTests/platform/chromium/'
154 'test_expectations.txt">94366->94377</a>,')
155 self
.RunTestGetRevisionString('2011-09-02-00', '2011-09-01-00',
156 expected_rev_str
, expected_simple_rev_str
,
157 94377, '2011-09-01 18:00:23',
158 'fast/dom/dom-constructors.html')
160 def testGetRevisionStringNoneDiffMap(self
):
161 self
.RunTestGetRevisionString('2011-09-02-00', '2011-09-01-00', '', '',
162 '', '', '', diff_map_none
=True)
164 def testGetRevisionStringNoMatchingTest(self
):
165 self
.RunTestGetRevisionString('2011-09-01-00', '2011-09-02-00', '', '',
168 def testReplaceLineInFile(self
):
169 file_path
= os
.path
.join('test_data', 'inplace.txt')
170 f
= open(file_path
, 'w')
173 layouttest_analyzer_helpers
.ReplaceLineInFile(
174 file_path
, 'Hello', 'Goodbye')
175 f
= open(file_path
, 'r')
176 self
.assertEquals(f
.readline(), 'Goodbye')
178 layouttest_analyzer_helpers
.ReplaceLineInFile(
179 file_path
, 'Bye', 'Hello')
180 f
= open(file_path
, 'r')
181 self
.assertEquals(f
.readline(), 'Goodbye')
184 def testFindLatestResultWithNoData(self
):
186 layouttest_analyzer_helpers
.FindLatestResult('test_data'))
188 def testConvertToCSVText(self
):
189 file_path
= os
.path
.join('test_data', 'base')
190 analyzerResultMapBase
= (
191 layouttest_analyzer_helpers
.AnalyzerResultMap
.Load(file_path
))
192 data
, issues_txt
= analyzerResultMapBase
.ConvertToCSVText('11-10-10-2011')
193 self
.assertEquals(data
, '11-10-10-2011,204,36,10,95')
194 expected_issues_txt
= """\
195 BUGWK,66310,TEXT PASS,media/media-blocked-by-beforeload.html,DEBUG TEXT PASS,\
196 media/video-source-error.html,
197 BUGCR,86714,GPU IMAGE CRASH MAC,media/video-zoom.html,GPU IMAGE CRASH MAC,\
198 media/video-controls-rendering.html,
199 BUGCR,74102,GPU IMAGE PASS LINUX,media/video-controls-rendering.html,
200 BUGWK,55718,TEXT IMAGE IMAGE+TEXT,media/media-document-audio-repaint.html,
201 BUGCR,78376,TIMEOUT,http/tests/media/video-play-stall-seek.html,
202 BUGCR,59415,WIN TEXT TIMEOUT PASS,media/video-loop.html,
203 BUGCR,72223,IMAGE PASS,media/video-frame-accurate-seek.html,
204 BUGCR,75354,TEXT IMAGE IMAGE+TEXT,media/media-document-audio-repaint.html,
205 BUGCR,73609,TEXT,http/tests/media/video-play-stall.html,
206 BUGWK,64003,DEBUG TEXT MAC PASS,media/video-delay-load-event.html,
208 self
.assertEquals(issues_txt
, expected_issues_txt
)
211 if __name__
== '__main__':