diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 9c322694f12e..17d743a3f6d4 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -934,7 +934,7 @@ def update_net_cookies(self): @Command('update-webgl', description='Update the WebGL conformance suite tests from Khronos repo', category='testing') - @CommandArgument('--version', action='store_true', default='1.0.3', + @CommandArgument('--version', default='2.0.0', help='WebGL conformance suite version') def update_webgl(self, version=None): self.ensure_bootstrapped() diff --git a/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py b/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py index 8712a3d2de5a..fdedb71989dd 100755 --- a/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py +++ b/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py @@ -9,10 +9,16 @@ import argparse KHRONOS_REPO_URL = "https://github.com/KhronosGroup/WebGL.git" -PATCHES = [ +# Patches for conformance tests 1.0.x +PATCHES_1X = [ ("js-test-pre.patch", "resources/js-test-pre.js"), ("unit.patch", "conformance/more/unit.js") ] +# Patches for conformance tests 2.0.x +PATCHES_2X = [ + ("js-test-pre2.patch", "js/js-test-pre.js"), + ("unit.patch", "conformance/more/unit.js") +] # Fix for 'UnicodeDecodeError: 'ascii' codec can't decode byte' reload(sys) @@ -124,7 +130,8 @@ def update_conformance(version, destination, existing_repo, patches_dir): # Try to apply the patches to the required files if not patches_dir: patches_dir = os.path.abspath(os.path.dirname(sys.argv[0])) - for patch, file_name in PATCHES: + patches = PATCHES_2X if version.startswith('2') else PATCHES_1X + for patch, file_name in patches: try: patch = os.path.join(patches_dir, patch) subprocess.check_call(["patch", "-d", destination, file_name, patch]) diff --git a/tests/wpt/mozilla/tests/webgl/tools/js-test-pre2.patch b/tests/wpt/mozilla/tests/webgl/tools/js-test-pre2.patch new file mode 100644 index 000000000000..13cb667374c8 --- /dev/null +++ b/tests/wpt/mozilla/tests/webgl/tools/js-test-pre2.patch @@ -0,0 +1,84 @@ +diff --git a/conformance-suites/2.0.0/js/js-test-pre.js b/conformance-suites/2.0.0/js/js-test-pre.js +index df30a6f..7ca8559 100644 +--- a/conformance-suites/2.0.0/js/js-test-pre.js ++++ b/conformance-suites/2.0.0/js/js-test-pre.js +@@ -111,11 +111,25 @@ function nonKhronosFrameworkNotifyDone() { + } + } + +-function reportTestResultsToHarness(success, msg) { +- if (window.parent.webglTestHarness) { +- window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg); +- } +-} ++(function() { ++ var WPT_TEST_ID = 0; ++ ++ // Store the current WPT test harness `test` function ++ // if found, since it's overriden by some tests. ++ var wpt_test = window.test; ++ var wpt_assert_true = window.assert_true; ++ var wt_async_test = window.async_test; ++ ++ window.reportTestResultsToHarness = function reportTestResultsToHarness(success, msg) { ++ if (window.parent.webglTestHarness) { ++ window.parent.webglTestHarness.reportResults(window.location.pathname, success, msg); ++ } else if (wpt_test) { // WPT test harness ++ wpt_test(function () { ++ wpt_assert_true(success, msg); ++ }, "WebGL test #" + (WPT_TEST_ID++) + ": " + msg); ++ } ++ } ++ }()) + + function reportSkippedTestResultsToHarness(success, msg) { + if (window.parent.webglTestHarness) { +@@ -132,6 +146,12 @@ function notifyFinishedToHarness() { + } + } + ++(function() { ++ var oldNotify = notifyFinishedToHarness; ++ var t = async_test("Overall test"); ++ window.notifyFinishedToHarness = t.step_func_done(oldNotify); ++}()) ++ + var _bufferedConsoleLogs = []; + + function _bufferedLogToConsole(msg) +@@ -162,7 +182,7 @@ function _flushBufferedLogsToConsole() + } + } + +-var _jsTestPreVerboseLogging = false; ++var _jsTestPreVerboseLogging = true; + + function enableJSTestPreVerboseLogging() + { +@@ -175,24 +195,12 @@ function description(msg) + if (msg === undefined) { + msg = document.title; + } +- // For MSIE 6 compatibility +- var span = document.createElement("span"); +- span.innerHTML = '

' + msg + '

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

'; +- var description = document.getElementById("description"); +- if (description.firstChild) +- description.replaceChild(span, description.firstChild); +- else +- description.appendChild(span); +- if (_jsTestPreVerboseLogging) { +- _bufferedLogToConsole(msg); +- } ++ ++ _bufferedLogToConsole("DESCRIPTION: " +msg); + } + + function _addSpan(contents) + { +- var span = document.createElement("span"); +- document.getElementById("console").appendChild(span); // insert it first so XHTML knows the namespace +- span.innerHTML = contents + '
'; + } + + function debug(msg)