/media/tools/layout_tests/layouttest_analyzer_helpers_unittest.py
Python | 212 lines | 182 code | 23 blank | 7 comment | 2 complexity | 085b7bc3ed195b77c3c492511e1d6545 MD5 | raw file
- #!/usr/bin/env python
- # Copyright (c) 2012 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 copy
- from datetime import datetime
- import os
- import pickle
- import time
- import unittest
- import layouttest_analyzer_helpers
- class TestLayoutTestAnalyzerHelpers(unittest.TestCase):
- def testFindLatestTime(self):
- time_list = ['2011-08-18-19', '2011-08-18-22', '2011-08-18-21',
- '2012-01-11-21', '.foo']
- self.assertEquals(layouttest_analyzer_helpers.FindLatestTime(time_list),
- '2012-01-11-21')
- def testFindLatestTimeWithEmptyList(self):
- time_list = []
- self.assertEquals(layouttest_analyzer_helpers.FindLatestTime(time_list),
- None)
- def testFindLatestTimeWithNoValidStringInList(self):
- time_list = ['.foo1', '232232']
- self.assertEquals(layouttest_analyzer_helpers.FindLatestTime(time_list),
- None)
- def GenerateTestDataWholeAndSkip(self):
- """You should call this method if you want to generate test data."""
- file_path = os.path.join('test_data', 'base')
- analyzerResultMapBase = (
- layouttest_analyzer_helpers.AnalyzerResultMap.Load(file_path))
- # Remove this first part
- m = analyzerResultMapBase.result_map['whole']
- del m['media/video-source-type.html']
- m = analyzerResultMapBase.result_map['skip']
- del m['media/track/track-webvtt-tc004-magicheader.html']
- file_path = os.path.join('test_data', 'less')
- analyzerResultMapBase.Save(file_path)
- file_path = os.path.join('test_data', 'base')
- analyzerResultMapBase = AnalyzerResultMap.Load(file_path)
- analyzerResultMapBase.result_map['whole']['add1.html'] = True
- analyzerResultMapBase.result_map['skip']['add2.html'] = True
- file_path = os.path.join('test_data', 'more')
- analyzerResultMapBase.Save(file_path)
- def GenerateTestDataNonSkip(self):
- """You should call this method if you want to generate test data."""
- file_path = os.path.join('test_data', 'base')
- analyzerResultMapBase = AnalyzerResultMap.Load(file_path)
- m = analyzerResultMapBase.result_map['nonskip']
- ex = m['media/media-document-audio-repaint.html']
- te_info_map1 = ex['te_info'][0]
- te_info_map2 = copy.copy(te_info_map1)
- te_info_map2['NEWADDED'] = True
- ex['te_info'].append(te_info_map2)
- m = analyzerResultMapBase.result_map['nonskip']
- file_path = os.path.join('test_data', 'more_te_info')
- analyzerResultMapBase.Save(file_path)
- def testCompareResultMapsWholeAndSkip(self):
- file_path = os.path.join('test_data', 'base')
- analyzerResultMapBase = (
- layouttest_analyzer_helpers.AnalyzerResultMap.Load(file_path))
- file_path = os.path.join('test_data', 'less')
- analyzerResultMapLess = (
- layouttest_analyzer_helpers.AnalyzerResultMap.Load(file_path))
- diff = analyzerResultMapBase.CompareToOtherResultMap(analyzerResultMapLess)
- self.assertEquals(diff['skip'][0][0][0],
- 'media/track/track-webvtt-tc004-magicheader.html')
- self.assertEquals(diff['whole'][0][0][0],
- 'media/video-source-type.html')
- file_path = os.path.join('test_data', 'more')
- analyzerResultMapMore = (
- layouttest_analyzer_helpers.AnalyzerResultMap.Load(file_path))
- diff = analyzerResultMapBase.CompareToOtherResultMap(analyzerResultMapMore)
- self.assertEquals(diff['whole'][1][0][0], 'add1.html')
- self.assertEquals(diff['skip'][1][0][0], 'add2.html')
- def testCompareResultMapsNonSkip(self):
- file_path = os.path.join('test_data', 'base')
- analyzerResultMapBase = (
- layouttest_analyzer_helpers.AnalyzerResultMap.Load(file_path))
- file_path = os.path.join('test_data', 'more_te_info')
- analyzerResultMapMoreTEInfo = (
- layouttest_analyzer_helpers.AnalyzerResultMap.Load(file_path))
- m = analyzerResultMapBase.CompareToOtherResultMap(
- analyzerResultMapMoreTEInfo)
- self.assertTrue('NEWADDED' in m['nonskip'][1][0][1][0])
- def testGetListOfBugsForNonSkippedTests(self):
- file_path = os.path.join('test_data', 'base')
- analyzerResultMapBase = (
- layouttest_analyzer_helpers.AnalyzerResultMap.Load(file_path))
- self.assertEquals(
- len(analyzerResultMapBase.GetListOfBugsForNonSkippedTests().keys()),
- 10)
- def RunTestGetRevisionString(self, current_time_str, prev_time_str,
- expected_rev_str, expected_simple_rev_str,
- expected_rev_number, expected_rev_date,
- testname, diff_map_none=False):
- current_time = datetime.strptime(current_time_str, '%Y-%m-%d-%H')
- current_time = time.mktime(current_time.timetuple())
- prev_time = datetime.strptime(prev_time_str, '%Y-%m-%d-%H')
- prev_time = time.mktime(prev_time.timetuple())
- if diff_map_none:
- diff_map = None
- else:
- diff_map = {
- 'whole': [[], []],
- 'skip': [[(testname, 'te_info1')], []],
- 'nonskip': [[], []],
- }
- (rev_str, simple_rev_str, rev_number, rev_date) = (
- layouttest_analyzer_helpers.GetRevisionString(prev_time, current_time,
- diff_map))
- self.assertEquals(rev_str, expected_rev_str)
- self.assertEquals(simple_rev_str, expected_simple_rev_str)
- self.assertEquals(rev_number, expected_rev_number)
- self.assertEquals(rev_date, expected_rev_date)
- def testGetRevisionString(self):
- expected_rev_str = ('<ul><a href="http://trac.webkit.org/changeset?'
- 'new=94377@trunk/LayoutTests/platform/chromium/'
- 'test_expectations.txt&old=94366@trunk/LayoutTests/'
- 'platform/chromium/test_expectations.txt">94366->'
- '94377</a>\n'
- '<li>jamesr@google.com</li>\n'
- '<li>2011-09-01 18:00:23</li>\n'
- '<ul><li>-<a href="http://webkit.org/b/63878">'
- 'BUGWK63878</a> : <a href="http://test-results.'
- 'appspot.com/dashboards/flakiness_dashboard.html#'
- 'tests=fast/dom/dom-constructors.html">fast/dom/'
- 'dom-constructors.html</a> = TEXT</li>\n</ul></ul>')
- expected_simple_rev_str = ('<a href="http://trac.webkit.org/changeset?'
- 'new=94377@trunk/LayoutTests/platform/chromium/'
- 'test_expectations.txt&old=94366@trunk/'
- 'LayoutTests/platform/chromium/'
- 'test_expectations.txt">94366->94377</a>,')
- self.RunTestGetRevisionString('2011-09-02-00', '2011-09-01-00',
- expected_rev_str, expected_simple_rev_str,
- 94377, '2011-09-01 18:00:23',
- 'fast/dom/dom-constructors.html')
- def testGetRevisionStringNoneDiffMap(self):
- self.RunTestGetRevisionString('2011-09-02-00', '2011-09-01-00', '', '',
- '', '', '', diff_map_none=True)
- def testGetRevisionStringNoMatchingTest(self):
- self.RunTestGetRevisionString('2011-09-01-00', '2011-09-02-00', '', '',
- '', '', 'foo1.html')
- def testReplaceLineInFile(self):
- file_path = os.path.join('test_data', 'inplace.txt')
- f = open(file_path, 'w')
- f.write('Hello')
- f.close()
- layouttest_analyzer_helpers.ReplaceLineInFile(
- file_path, 'Hello', 'Goodbye')
- f = open(file_path, 'r')
- self.assertEquals(f.readline(), 'Goodbye')
- f.close()
- layouttest_analyzer_helpers.ReplaceLineInFile(
- file_path, 'Bye', 'Hello')
- f = open(file_path, 'r')
- self.assertEquals(f.readline(), 'Goodbye')
- f.close()
- def testFindLatestResultWithNoData(self):
- self.assertFalse(
- layouttest_analyzer_helpers.FindLatestResult('test_data'))
- def testConvertToCSVText(self):
- file_path = os.path.join('test_data', 'base')
- analyzerResultMapBase = (
- layouttest_analyzer_helpers.AnalyzerResultMap.Load(file_path))
- data, issues_txt = analyzerResultMapBase.ConvertToCSVText('11-10-10-2011')
- self.assertEquals(data, '11-10-10-2011,204,36,10,95')
- expected_issues_txt = """\
- BUGWK,66310,TEXT PASS,media/media-blocked-by-beforeload.html,DEBUG TEXT PASS,\
- media/video-source-error.html,
- BUGCR,86714,GPU IMAGE CRASH MAC,media/video-zoom.html,GPU IMAGE CRASH MAC,\
- media/video-controls-rendering.html,
- BUGCR,74102,GPU IMAGE PASS LINUX,media/video-controls-rendering.html,
- BUGWK,55718,TEXT IMAGE IMAGE+TEXT,media/media-document-audio-repaint.html,
- BUGCR,78376,TIMEOUT,http/tests/media/video-play-stall-seek.html,
- BUGCR,59415,WIN TEXT TIMEOUT PASS,media/video-loop.html,
- BUGCR,72223,IMAGE PASS,media/video-frame-accurate-seek.html,
- BUGCR,75354,TEXT IMAGE IMAGE+TEXT,media/media-document-audio-repaint.html,
- BUGCR,73609,TEXT,http/tests/media/video-play-stall.html,
- BUGWK,64003,DEBUG TEXT MAC PASS,media/video-delay-load-event.html,
- """
- self.assertEquals(issues_txt, expected_issues_txt)
- if __name__ == '__main__':
- unittest.main()