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

Unified Diff: third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py

Issue 2805563002: Change wpt_expectations_updater to not depend on TestParser. (Closed)
Patch Set: Finish updating test and fix code Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py
index dc2a2f6a098018ca3844f290bff5e3f7fa3d1039..ba7b41d7bea5260c0ca9a3ba4c6e9c9834a81606 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater_unittest.py
@@ -3,6 +3,7 @@
# found in the LICENSE file.
import copy
+import json
from webkitpy.common.host_mock import MockHost
from webkitpy.common.net.buildbot import Build
@@ -52,6 +53,26 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
'is_try_builder': True,
},
})
+
+ host.filesystem.write_text_file(
+ host.port_factory.get().layout_tests_dir() + '/external/wpt/MANIFEST.json',
+ json.dumps({
+ 'items': {
+ 'reftest': {
+ 'reftest.html': [
+ ['/reftest.html', [['/reftest-ref.html', '==']], {}]
+ ]
+ },
+ 'testharness': {
+ 'test/path.html': [['/test/path.html', {}]],
+ 'test/zzzz.html': [['/test/zzzz.html', {}]],
+ },
+ 'manual': {
+ 'x-manual.html': [['/x-manual.html', {}]],
+ },
+ },
+ }))
+
return host
def test_get_failing_results_dict_only_passing_results(self):
@@ -181,10 +202,10 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
# test expectation lines are sorted by test, and then specifier.
updater = WPTExpectationsUpdater(self.mock_host())
results = {
- 'external/fake/test/zzzz.html': {
+ 'external/wpt/test/zzzz.html': {
'test-mac-mac10.10': {'expected': 'PASS', 'actual': 'TEXT', 'bug': 'crbug.com/test'},
},
- 'external/fake/test/path.html': {
+ 'external/wpt/test/path.html': {
'test-linux-trusty': {'expected': 'FAIL', 'actual': 'PASS', 'bug': 'crbug.com/test'},
'test-mac-mac10.11': {'expected': 'FAIL', 'actual': 'TIMEOUT', 'bug': 'crbug.com/test'},
},
@@ -192,9 +213,9 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
self.assertEqual(
updater.create_line_list(results),
[
- 'crbug.com/test [ Trusty ] external/fake/test/path.html [ Pass ]',
- 'crbug.com/test [ Mac10.11 ] external/fake/test/path.html [ Timeout ]',
- 'crbug.com/test [ Mac10.10 ] external/fake/test/zzzz.html [ Failure ]',
+ 'crbug.com/test [ Trusty ] external/wpt/test/path.html [ Pass ]',
+ 'crbug.com/test [ Mac10.11 ] external/wpt/test/path.html [ Timeout ]',
+ 'crbug.com/test [ Mac10.10 ] external/wpt/test/zzzz.html [ Failure ]',
])
def test_specifier_part(self):
@@ -205,8 +226,10 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
def test_skipped_specifiers_when_test_is_wontfix(self):
host = self.mock_host()
expectations_path = '/test.checkout/LayoutTests/NeverFixTests'
- host.filesystem.files[expectations_path] = 'crbug.com/111 [ Trusty ] external/wpt/test.html [ WontFix ]\n'
- host.filesystem.files['/test.checkout/LayoutTests/external/wpt/test.html'] = ''
+ host.filesystem.write_text_file(
+ expectations_path,
+ 'crbug.com/111 [ Trusty ] external/wpt/test.html [ WontFix ]\n')
+ host.filesystem.write_text_file('/test.checkout/LayoutTests/external/wpt/test.html', '')
updater = WPTExpectationsUpdater(host)
self.assertEqual(updater.skipped_specifiers('external/wpt/test.html'), ['Trusty'])
@@ -226,8 +249,10 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
def test_specifier_part_with_skipped_test(self):
host = self.mock_host()
expectations_path = '/test.checkout/LayoutTests/NeverFixTests'
- host.filesystem.files[expectations_path] = 'crbug.com/111 [ Linux Mac10.11 ] external/wpt/test.html [ WontFix ]\n'
- host.filesystem.files['/test.checkout/LayoutTests/external/wpt/test.html'] = ''
+ host.filesystem.write_text_file(
+ expectations_path,
+ 'crbug.com/111 [ Linux Mac10.11 ] external/wpt/test.html [ WontFix ]\n')
+ host.filesystem.write_text_file('/test.checkout/LayoutTests/external/wpt/test.html', '')
updater = WPTExpectationsUpdater(host)
self.assertEqual(
updater.specifier_part(['test-mac-mac10.10', 'test-win-win7', 'test-win-win10'], 'external/wpt/test.html'), '')
@@ -240,14 +265,14 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
with self.assertRaises(ValueError):
updater.merge_dicts(
{
- 'external/fake/test/path.html': {
+ 'external/wpt/test/path.html': {
'one': {'expected': 'FAIL', 'actual': 'PASS'},
'two': {'expected': 'FAIL', 'actual': 'TIMEOUT'},
'three': {'expected': 'FAIL', 'actual': 'PASS'},
},
},
{
- 'external/fake/test/path.html': {
+ 'external/wpt/test/path.html': {
'one': {'expected': 'FAIL', 'actual': 'TIMEOUT'},
}
})
@@ -261,14 +286,14 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
}
}
two = {
- 'external/fake/test/path.html': {
+ 'external/wpt/test/path.html': {
'one': {'expected': 'FAIL', 'actual': 'PASS'},
'two': {'expected': 'FAIL', 'actual': 'TIMEOUT'},
'three': {'expected': 'FAIL', 'actual': 'PASS'},
}
}
three = {
- 'external/fake/test/path.html': {
+ 'external/wpt/test/path.html': {
'four': {'expected': 'FAIL', 'actual': 'PASS'},
}
}
@@ -303,7 +328,9 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
host = self.mock_host()
expectations_path = host.port_factory.get().path_to_generic_test_expectations_file()
- host.filesystem.files[expectations_path] = MARKER_COMMENT + '\n'
+ host.filesystem.write_text_file(
+ expectations_path,
+ MARKER_COMMENT + '\n')
updater = WPTExpectationsUpdater(host)
line_list = ['crbug.com/123 [ Trusty ] fake/file/path.html [ Pass ]']
updater.write_to_test_expectations(line_list)
@@ -316,7 +343,9 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
def test_write_to_test_expectations_with_no_marker_comment(self):
host = self.mock_host()
expectations_path = host.port_factory.get().path_to_generic_test_expectations_file()
- host.filesystem.files[expectations_path] = 'crbug.com/111 [ Trusty ] foo/bar.html [ Failure ]\n'
+ host.filesystem.write_text_file(
+ expectations_path,
+ 'crbug.com/111 [ Trusty ] foo/bar.html [ Failure ]\n')
updater = WPTExpectationsUpdater(host)
line_list = ['crbug.com/123 [ Trusty ] fake/file/path.html [ Pass ]']
updater.write_to_test_expectations(line_list)
@@ -330,7 +359,9 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
def test_write_to_test_expectations_skips_existing_lines(self):
host = self.mock_host()
expectations_path = host.port_factory.get().path_to_generic_test_expectations_file()
- host.filesystem.files[expectations_path] = 'crbug.com/111 dont/copy/me.html [ Failure ]\n'
+ host.filesystem.write_text_file(
+ expectations_path,
+ 'crbug.com/111 dont/copy/me.html [ Failure ]\n')
updater = WPTExpectationsUpdater(host)
line_list = [
'crbug.com/111 dont/copy/me.html [ Failure ]',
@@ -347,60 +378,48 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
def test_write_to_test_expectations_with_marker_and_no_lines(self):
host = self.mock_host()
expectations_path = host.port_factory.get().path_to_generic_test_expectations_file()
- host.filesystem.files[expectations_path] = (
- MARKER_COMMENT + '\n'
- 'crbug.com/123 [ Trusty ] fake/file/path.html [ Pass ]\n')
+ host.filesystem.write_text_file(
+ expectations_path,
+ MARKER_COMMENT + '\n' + 'crbug.com/123 [ Trusty ] fake/file/path.html [ Pass ]\n')
updater = WPTExpectationsUpdater(host)
updater.write_to_test_expectations([])
value = updater.host.filesystem.read_text_file(expectations_path)
self.assertMultiLineEqual(
value,
- (MARKER_COMMENT + '\n'
- 'crbug.com/123 [ Trusty ] fake/file/path.html [ Pass ]\n'))
+ MARKER_COMMENT + '\n' + 'crbug.com/123 [ Trusty ] fake/file/path.html [ Pass ]\n')
- def test_is_js_test_true(self):
- host = self.mock_host()
- host.filesystem.files['/mock-checkout/third_party/WebKit/LayoutTests/foo/bar.html'] = (
- '<script src="/resources/testharness.js"></script>')
- updater = WPTExpectationsUpdater(host)
- self.assertTrue(updater.is_js_test('foo/bar.html'))
+ def test_is_reference_test_given_testharness_test(self):
+ updater = WPTExpectationsUpdater(self.mock_host())
+ self.assertFalse(updater.is_reference_test('test/path.html'))
- def test_is_js_test_false(self):
- host = self.mock_host()
- host.filesystem.files['/mock-checkout/third_party/WebKit/LayoutTests/foo/bar.html'] = (
- '<script src="ref-test.html"></script>')
- updater = WPTExpectationsUpdater(host)
- self.assertFalse(updater.is_js_test('foo/bar.html'))
+ def test_is_reference_test_given_reference_test(self):
+ updater = WPTExpectationsUpdater(self.mock_host())
+ self.assertTrue(updater.is_reference_test('external/wpt/reftest.html'))
- def test_is_js_test_non_existent_file(self):
+ def test_is_reference_test_given_non_existent_file(self):
updater = WPTExpectationsUpdater(self.mock_host())
- self.assertFalse(updater.is_js_test('foo/bar.html'))
+ self.assertFalse(updater.is_reference_test('foo/bar.html'))
def test_get_test_to_rebaseline_returns_only_tests_with_failures(self):
host = self.mock_host()
- host.filesystem.files['/mock-checkout/third_party/WebKit/LayoutTests/external/fake/test/path.html'] = (
- '<script src="/resources/testharness.js"></script>')
- host.filesystem.files['/mock-checkout/third_party/WebKit/LayoutTests/external/other/test/path.html'] = (
- '<script src="/resources/testharness.js"></script>')
updater = WPTExpectationsUpdater(host)
two = {
- 'external/fake/test/path.html': {
+ 'external/wpt/test/path.html': {
'one': {'expected': 'FAIL', 'actual': 'PASS'},
'two': {'expected': 'FAIL', 'actual': 'TIMEOUT'},
'three': {'expected': 'FAIL', 'actual': 'PASS'},
}
}
tests_to_rebaseline, _ = updater.get_tests_to_rebaseline(two)
- # The other test doesn't have an entry in the test results dict, so it is not listed as a test to rebaseline.
- self.assertEqual(tests_to_rebaseline, ['external/fake/test/path.html'])
+ # external/wpt/test/zzzz.html is another possible candidate, but it
+ # is not listed in the results dict, so it shall not be rebaselined.
+ self.assertEqual(tests_to_rebaseline, ['external/wpt/test/path.html'])
- def test_get_test_to_rebaseline_returns_only_js_tests(self):
+ def test_get_test_to_rebaseline_does_not_return_ref_tests(self):
host = self.mock_host()
- host.filesystem.files['/mock-checkout/third_party/WebKit/LayoutTests/external/fake/test/path.html'] = (
- 'this file does not look like a testharness JS test.')
updater = WPTExpectationsUpdater(host)
two = {
- 'external/fake/test/path.html': {
+ 'external/wpt/reftest.html': {
'one': {'expected': 'FAIL', 'actual': 'PASS', 'bug': 'crbug.com/test'},
'two': {'expected': 'FAIL', 'actual': 'TIMEOUT', 'bug': 'crbug.com/test'},
'three': {'expected': 'FAIL', 'actual': 'PASS', 'bug': 'crbug.com/test'},
@@ -411,53 +430,47 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
def test_get_tests_to_rebaseline_returns_updated_dict(self):
host = self.mock_host()
- test_results_dict = {
- 'external/fake/test/path.html': {
+ results = {
+ 'external/wpt/test/path.html': {
'one': {'expected': 'PASS', 'actual': 'TEXT'},
'two': {'expected': 'PASS', 'actual': 'TIMEOUT'},
},
}
- test_results_dict_copy = copy.deepcopy(test_results_dict)
- host.filesystem.files['/mock-checkout/third_party/WebKit/LayoutTests/external/fake/test/path.html'] = (
- '<script src="/resources/testharness.js"></script>')
+ results_copy = copy.deepcopy(results)
updater = WPTExpectationsUpdater(host)
- tests_to_rebaseline, modified_test_results = updater.get_tests_to_rebaseline(
- test_results_dict)
- self.assertEqual(tests_to_rebaseline, ['external/fake/test/path.html'])
+ tests_to_rebaseline, modified_test_results = updater.get_tests_to_rebaseline(results)
+ self.assertEqual(tests_to_rebaseline, ['external/wpt/test/path.html'])
# The record for the builder with a timeout is kept, but not with a text mismatch,
# since that should be covered by downloading a new baseline.
self.assertEqual(modified_test_results, {
- 'external/fake/test/path.html': {
+ 'external/wpt/test/path.html': {
'two': {'expected': 'PASS', 'actual': 'TIMEOUT'},
},
})
# The original dict isn't modified.
- self.assertEqual(test_results_dict, test_results_dict_copy)
+ self.assertEqual(results, results_copy)
def test_get_tests_to_rebaseline_also_returns_slow_tests(self):
host = self.mock_host()
- test_results_dict = {
- 'external/fake/test/path.html': {
+ results = {
+ 'external/wpt/test/path.html': {
'one': {'expected': 'SLOW', 'actual': 'TEXT'},
'two': {'expected': 'SLOW', 'actual': 'TIMEOUT'},
},
}
- test_results_dict_copy = copy.deepcopy(test_results_dict)
- host.filesystem.files['/mock-checkout/third_party/WebKit/LayoutTests/external/fake/test/path.html'] = (
- '<script src="/resources/testharness.js"></script>')
+ results_copy = copy.deepcopy(results)
updater = WPTExpectationsUpdater(host)
- tests_to_rebaseline, modified_test_results = updater.get_tests_to_rebaseline(
- test_results_dict)
- self.assertEqual(tests_to_rebaseline, ['external/fake/test/path.html'])
+ tests_to_rebaseline, modified_test_results = updater.get_tests_to_rebaseline(results)
+ self.assertEqual(tests_to_rebaseline, ['external/wpt/test/path.html'])
# The record for the builder with a timeout is kept, but not with a text mismatch,
# since that should be covered by downloading a new baseline.
self.assertEqual(modified_test_results, {
- 'external/fake/test/path.html': {
+ 'external/wpt/test/path.html': {
'two': {'expected': 'SLOW', 'actual': 'TIMEOUT'},
},
})
# The original dict isn't modified.
- self.assertEqual(test_results_dict, test_results_dict_copy)
+ self.assertEqual(results, results_copy)
def test_run_no_issue_number(self):
# TODO(qyearsley): For testing: Consider making a MockGitCL class
@@ -475,7 +488,6 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
def test_new_manual_tests_get_skip_expectation(self):
host = self.mock_host()
- host.filesystem.write_text_file('/mock-checkout/third_party/WebKit/LayoutTests/external/wpt/x-manual.html', '<html>')
updater = WPTExpectationsUpdater(host)
results = {
'external/wpt/x-manual.html': {
@@ -489,10 +501,8 @@ class WPTExpectationsUpdaterTest(LoggingTestCase):
): {'expected': 'PASS', 'actual': 'MISSING', 'bug': 'crbug.com/test'}
}
}
- results_copy = copy.deepcopy(results)
- self.assertEqual(
- updater.get_tests_to_rebaseline(results),
- ([], results_copy))
+ tests_to_rebaseline, _ = updater.get_tests_to_rebaseline(results)
+ self.assertEqual(tests_to_rebaseline, [])
self.assertEqual(
updater.create_line_list(results),
['crbug.com/test external/wpt/x-manual.html [ Skip ]'])
« no previous file with comments | « third_party/WebKit/Tools/Scripts/webkitpy/w3c/wpt_expectations_updater.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698