| # Copyright (C) 2014 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import sys |
| import os |
| |
| if len(sys.argv) != 3: |
| raise Exception("Usage: extract_webgl_tests.py <webgl_sdk_tests_path> <version>") |
| |
| top_list = sys.argv[1] + "/00_test_list.txt" |
| version = sys.argv[2] |
| tests = [] |
| lists = [] |
| lists.append(top_list) |
| |
| def filter_by_version(lines): |
| version_lines = [ line for line in lines if "--min-version" in line ] |
| version_lines.extend([ line for line in lines if "--max-version" in line ]) |
| lines = [ line for line in lines if not line in version_lines ] |
| for line in version_lines: |
| assert len(line.split()) == 3 |
| min_version = line.split()[1] if line.split()[0] == "--min-version" else "0.0.0" |
| max_version = line.split()[1] if line.split()[0] == "--max-version" else "9.9.9" |
| test = line.split()[2] |
| if (version >= min_version and version <= max_version): |
| lines.append(test) |
| return lines |
| |
| while not len(lists) == 0: |
| lists2 = lists |
| lists = [] |
| for list in lists2: |
| directory = os.path.dirname(os.path.realpath(list)) |
| with open(list) as file: |
| # Filter out comments and --min-version |
| lines = [ line.strip() for line in file.readlines()] |
| lines = [ line for line in lines if not "//" in line ] |
| lines = [ line for line in lines if not "#" in line ] |
| lines = [ line.replace("--slow","") for line in lines ] |
| lines = filter_by_version(lines) |
| # Append lists and tests found in this list. |
| lines = [ directory + "/" + line for line in lines ] |
| lists.extend([ line for line in lines if "00_test_list.txt" in line ]) |
| tests.extend([ line for line in lines if ".html" in line ]) |
| |
| # Directories for formating test-names/relative-paths. |
| name_directory = os.path.dirname(os.path.realpath(top_list)) |
| path_directory = os.path.realpath(os.path.join(name_directory, os.pardir)) |
| |
| tests = sorted(tests) |
| for test in tests: |
| test_path = test.replace(path_directory + "/", "") |
| test_name = test.replace(name_directory + "/", "") |
| test_name = test_name.replace("/","_") |
| test_name = test_name.replace(".","_") |
| test_name = test_name.replace("-","_") |
| print " public void test_" + test_name + "() throws Exception { doTest(\"" + test_path + "\"); }" |
| |