Index: media/tools/layout_tests/test_expectations_unittest.py |
diff --git a/media/tools/layout_tests/test_expectations_unittest.py b/media/tools/layout_tests/test_expectations_unittest.py |
index 7979561b42fa268c9ddef5c0d45541920ab409d0..f3380f0d1ebbb92ed78a01ab2558cda52dfacd4a 100755 |
--- a/media/tools/layout_tests/test_expectations_unittest.py |
+++ b/media/tools/layout_tests/test_expectations_unittest.py |
@@ -3,223 +3,52 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
-"""A unit test module for TestExpectationManager.""" |
- |
-from datetime import date |
-from datetime import datetime |
-from datetime import timedelta |
-import os |
-import shutil |
-import time |
import unittest |
-from test_expectations import TestExpectationsManager |
- |
- |
-class TestTestExpectationsManager(unittest.TestCase): |
- """A unit test class for TestExpectationManager.""" |
- test_dir = u'test_dir' |
- cleaned = False |
- |
- def setUp(self): |
- if not TestTestExpectationsManager.cleaned: |
- if os.path.exists(self.test_dir): |
- shutil.rmtree(self.test_dir) |
- os.mkdir(self.test_dir) |
- TestTestExpectationsManager.cleaned = True |
- |
- def verify_test_expectaion_format(self, file_name, media): |
- """Verify the test expectation format in the file. |
- |
- Args: |
- file_name: a file name to be verified. |
- media: a boolean to indicate whether the test is for media |
- or not. |
- |
- Returns: |
- a boolean indicating whether the file is in test expectation |
- format. |
- """ |
- file_object = open(file_name, 'r') |
- firstline = file_object.readline() |
- if ('These are the layout test expectations for the ' |
- 'Chromium port(s) of WebKit.') not in firstline: |
- return False |
- # Check media related test case file is there. |
- verify_media = not media |
- if media: |
- for line in file_object: |
- if 'media' in line: |
- verify_media = True |
- file_object.close() |
- return verify_media |
- |
- def verify_test_expectaion_format_in_csv(self, file_name): |
- """Verify the CSV file has information parsed. |
- |
- Args: |
- file_name: file name to be examined. |
- |
- Returns: |
- a boolean that indicates that the CSV file contains information |
- parsed from test expectation file. |
- """ |
- file_object = open(file_name, 'r') |
- firstline = file_object.readline() |
- file_object.close() |
- return 'TestCase' in firstline |
- |
- def test_get_and_save_content(self): |
- """Test get_and_save_content method. |
- |
- Also, test several other methods. |
- """ |
- # Get all test cases. |
- result_file = os.path.join(self.test_dir, |
- 'test_get_and_save_content.txt') |
- |
- test_expectations_manager = TestExpectationsManager() |
- test_expectations_manager.get_and_save_content( |
- test_expectations_manager.DEFAULT_TEST_EXPECTATION_LOCATION, |
- result_file) |
- |
- self.assertTrue( |
- self.verify_test_expectaion_format(result_file, False)) |
- |
- # Get media test cases from local all test cases. |
- result_file_media = os.path.join(self.test_dir, |
- 'test_get_and_save_content_m.txt') |
- |
- test_expectations_manager = TestExpectationsManager() |
- test_expectations_manager.get_and_save_content_media_only( |
- result_file, result_file_media) |
- |
- self.assertTrue( |
- self.verify_test_expectaion_format(result_file_media, True)) |
- |
- # Get media test cases from local all test cases. |
- result_file_media_csv = os.path.join( |
- self.test_dir, 'test_get_and_save_content_m.csv') |
- |
- test_expectations_manager.get_and_parse_content( |
- result_file, result_file_media_csv, True) |
- |
- elements = test_expectations_manager.get_test_case_element( |
- 'media/restore-from-page-cache.html', |
- ['TEXT', 'UNIMPLEMENTED', 'RELEASE']) |
- self.assertEqual( |
- elements, ['N', 'N', 'N'], |
- 'returned element of GetTestCaseElement is wrong') |
- |
- field_names = ['SKIP', 'UNIMPLEMENTED', 'KNOWNISSUE'] |
- field_name_indexes = test_expectations_manager.get_column_indexes( |
- field_names) |
- expected_filed_name_indexes = [6, 22, 23] |
- self.assertEqual(field_name_indexes, expected_filed_name_indexes, |
- 'incorrect field indexes') |
- |
- def test_parse_content_from_svn(self): |
- """Test get_and_parse_content method using SVN.""" |
- self.parse_content_from_svn_test_helper(False) |
- |
- def test_parse_content_from_svn_media(self): |
- """Test get_and_parse_content method using SVN (only media).""" |
- self.parse_content_from_svn_test_helper(True) |
- |
- def parse_content_from_svn_test_helper(self, media): |
- """Test get_and_parse_content method using SVN. |
- |
- Args: |
- media: True if this is for media tests. |
- """ |
- media_string = 'all' |
- if media: |
- media_string = 'media' |
- result_file = os.path.join( |
- self.test_dir, |
- 'test_parse_content_from_svn_%s.csv' % media_string) |
- test_expectations_manager = TestExpectationsManager() |
- test_expectations_manager.get_and_parse_content( |
- test_expectations_manager.DEFAULT_TEST_EXPECTATION_LOCATION, |
- result_file, media) |
- |
- self.assertTrue(test_expectations_manager.testcases > 0) |
- |
- self.verify_test_expectaion_format_in_csv(result_file) |
- |
- def test_generate_link_for_cbug(self): |
- """Test generate_link_for_bug for a chromium bug.""" |
- self.generate_link_for_bug_helper( |
- 'BUGCR1234', |
- 'http://code.google.com/p/chromium/issues/detail?id=1234') |
- |
- def test_generate_link_for_wbug(self): |
- """Test generate_link_for_bug for a webkit bug.""" |
- self.generate_link_for_bug_helper( |
- 'BUGWK1234', |
- 'https://bugs.webkit.org/show_bug.cgi?id=1234') |
- |
- def test_generate_link_for_pbug(self): |
- """Test generate_link_for_bug for person.""" |
- self.generate_link_for_bug_helper('BUGIMASAKI', |
- 'mailto:imasaki@chromium.org') |
- |
- def generate_link_for_bug_helper(self, bug_text, expected_link): |
- """A helper for generating link test.""" |
- test_expectations_manager = TestExpectationsManager() |
- link = test_expectations_manager.generate_link_for_bug(bug_text) |
- self.assertEqual(link, expected_link, 'link generated are not correct') |
- |
- def test_te_diff_between_times(self): |
- test_expectations_manager = TestExpectationsManager() |
- now = time.time() |
- past = datetime.now() - timedelta(days=4) |
- past = time.mktime(past.timetuple()) |
- result_list = test_expectations_manager.get_te_diff_between_times( |
- test_expectations_manager.DEFAULT_TEST_EXPECTATION_DIR, |
- now, past, ['media/audio-repaint.html'], -1, True) |
- self.assertTrue(result_list is not None) |
- |
- def test_te_diff_between_times_no_changecheck(self): |
- test_expectations_manager = TestExpectationsManager() |
- now = time.time() |
- past = datetime.now() - timedelta(weeks=2) |
- past = time.mktime(past.timetuple()) |
- result_list = test_expectations_manager.get_te_diff_between_times( |
- test_expectations_manager.DEFAULT_TEST_EXPECTATION_DIR, |
- now, past, ['media/audio-repaint.html'], -1, False) |
- self.assertTrue(result_list is not None) |
- |
- def test_te_diff_between_times_no_changecheck_with_pattern(self): |
- test_expectations_manager = TestExpectationsManager() |
- now = time.time() |
- past = datetime.now() - timedelta(weeks=2) |
- past = time.mktime(past.timetuple()) |
- result_list = test_expectations_manager.get_te_diff_between_times( |
- test_expectations_manager.DEFAULT_TEST_EXPECTATION_DIR, |
- now, past, ['media/audio-repaint.html'], -1, False) |
- self.assertTrue(result_list is not None) |
- |
- def test_get_all_column_names_no_other_field(self): |
- test_expectations_manager = TestExpectationsManager() |
- column_names = test_expectations_manager.get_all_column_names(False, |
- True) |
- other_field_column_names = test_expectations_manager.OTHER_FIELD_NAMES |
- for other_field_column_name in other_field_column_names: |
- self.assertFalse(other_field_column_name in column_names) |
- |
- def test_get_all_column_names_no_comment_field(self): |
- test_expectations_manager = TestExpectationsManager() |
- column_names = test_expectations_manager.get_all_column_names(True, |
- False) |
- other_field_column_names = ( |
- test_expectations_manager.COMMENT_COLUMN_NAMES) |
- for other_field_column_name in other_field_column_names: |
- self.assertFalse(other_field_column_name in column_names) |
- |
- |
-def main(): |
- test_suite = unittest.TestLoader().loadTestsFromTestCase( |
- TestTestExpectationsManager) |
- |
- unittest.TextTestRunner(verbosity=2).run(test_suite) |
+from test_expectations import TestExpectations |
+ |
+ |
+class TestTestExpectations(unittest.TestCase): |
+ |
+ def testParseLine(self): |
+ line = "BUGCR86714 MAC GPU : media/video-zoom.html = CRASH IMAGE" |
+ comments = 'Comments' |
+ expected_map = {'CRASH': True, 'IMAGE': True, 'Bugs': ['BUGCR86714'], |
+ 'Comments': 'Comments', 'MAC': True, 'GPU': True} |
+ self.assertEquals(TestExpectations.ParseLine(line, comments), |
+ expected_map) |
+ |
+ def testParseLineWithLineComments(self): |
+ line = "BUGCR86714 MAC GPU : media/video-zoom.html = CRASH IMAGE // foo" |
+ comments = 'Comments' |
+ expected_map = {'CRASH': True, 'IMAGE': True, 'Bugs': ['BUGCR86714'], |
+ 'Comments': 'Comments foo', 'MAC': True, 'GPU': True} |
+ self.assertEquals(TestExpectations.ParseLine(line, comments), |
+ expected_map) |
+ |
+ def testParseLineWithLineGPUComments(self): |
+ line = "BUGCR86714 MAC : media/video-zoom.html = CRASH IMAGE // GPU" |
+ comments = 'Comments' |
+ expected_map = {'CRASH': True, 'IMAGE': True, 'Bugs': ['BUGCR86714'], |
+ 'Comments': 'Comments GPU', 'MAC': True} |
+ self.assertEquals(TestExpectations.ParseLine(line, comments), |
+ expected_map) |
+ |
+ def testExtractTestOrDirectoryName(self): |
+ line = ('BUGWK58013 MAC GPU : compositing/scaling/' |
+ 'tiled-layer-recursion.html = CRASH') |
+ self.assertEquals(TestExpectations.ExtractTestOrDirectoryName(line), |
+ 'compositing/scaling/tiled-layer-recursion.html') |
+ |
+ def testExtractTestOrDirectoryNameWithDirName(self): |
+ line = 'BUGWK43668 SKIP : media/track/ = TIMEOUT' |
+ self.assertEquals(TestExpectations.ExtractTestOrDirectoryName(line), |
+ 'media/track/') |
+ |
+ def testExtractTestOrDirectoryNameWithException(self): |
+ self.assertRaises(ValueError, |
+ TestExpectations.ExtractTestOrDirectoryName, 'Foo') |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |