diff options
-rw-r--r-- | python/servo/testing_commands.py | 22 | ||||
-rwxr-xr-x | tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py | 34 |
2 files changed, 41 insertions, 15 deletions
diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 29d098e6cb4..9c322694f12 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -20,6 +20,7 @@ from time import time import json import urllib2 import base64 +import shutil from mach.registrar import Registrar from mach.decorators import ( @@ -929,3 +930,24 @@ testing/web-platform/mozilla/tests for Servo-only tests""" % reference_path) run_globals = {"__file__": run_file} execfile(run_file, run_globals) return run_globals["update_test_file"](cache_dir) + + @Command('update-webgl', + description='Update the WebGL conformance suite tests from Khronos repo', + category='testing') + @CommandArgument('--version', action='store_true', default='1.0.3', + help='WebGL conformance suite version') + def update_webgl(self, version=None): + self.ensure_bootstrapped() + + base_dir = path.abspath(path.join(PROJECT_TOPLEVEL_PATH, + "tests", "wpt", "mozilla", "tests", "webgl")) + run_file = path.join(base_dir, "tools", "import-conformance-tests.py") + dest_folder = path.join(base_dir, "conformance-%s" % version) + patches_dir = path.join(base_dir, "tools") + # Clean dest folder if exists + if os.path.exists(dest_folder): + shutil.rmtree(dest_folder) + + run_globals = {"__file__": run_file} + execfile(run_file, run_globals) + return run_globals["update_conformance"](version, dest_folder, None, patches_dir) 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 e4fb16f6ab4..8712a3d2de5 100755 --- a/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py +++ b/tests/wpt/mozilla/tests/webgl/tools/import-conformance-tests.py @@ -14,6 +14,10 @@ PATCHES = [ ("unit.patch", "conformance/more/unit.js") ] +# Fix for 'UnicodeDecodeError: 'ascii' codec can't decode byte' +reload(sys) +sys.setdefaultencoding('utf8') + def usage(): print("Usage: {} version destination [existing_webgl_repo]".format(sys.argv[0])) sys.exit(1) @@ -63,20 +67,11 @@ def process_test(test): -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("version", help="WebGL test suite version (e.g.: 1.0.3)") - parser.add_argument("destination", help="Test suite destination") - parser.add_argument("-e", "--existing-repo", help="Path to an existing clone of the khronos WebGL repository") - args = parser.parse_args() - - version = args.version - destination = args.destination - +def update_conformance(version, destination, existing_repo, patches_dir): print("Trying to import WebGL conformance test suite {} into {}".format(version, destination)) - if args.existing_repo: - directory = args.existing_repo + if existing_repo: + directory = existing_repo print("Using existing WebGL repository: {}".format(directory)) else: directory = tempfile.mkdtemp() @@ -127,15 +122,24 @@ def main(): process_test(test) # Try to apply the patches to the required files - - this_dir = os.path.abspath(os.path.dirname(sys.argv[0])) + if not patches_dir: + patches_dir = os.path.abspath(os.path.dirname(sys.argv[0])) for patch, file_name in PATCHES: try: - patch = os.path.join(this_dir, patch) + patch = os.path.join(patches_dir, patch) subprocess.check_call(["patch", "-d", destination, file_name, patch]) except subprocess.CalledProcessError: print("Automatic patch failed for {}".format(file_name)) print("Please review the WPT integration and update {} accordingly".format(os.path.basename(patch))) +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("version", help="WebGL test suite version (e.g.: 1.0.3)") + parser.add_argument("destination", help="Test suite destination") + parser.add_argument("-e", "--existing-repo", help="Path to an existing clone of the khronos WebGL repository") + args = parser.parse_args() + + update_conformance(args.version, args.destination, args.existing_repo, None) + if __name__ == '__main__': main() |