1# Copyright (C) 2014 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15import sys 16import os 17 18if len(sys.argv) != 3: 19 raise Exception("Usage: extract_webgl_tests.py <webgl_sdk_tests_path> <version>") 20 21top_list = sys.argv[1] + "/00_test_list.txt" 22version = sys.argv[2] 23tests = [] 24lists = [] 25lists.append(top_list) 26 27def filter_by_version(lines): 28 version_lines = [ line for line in lines if "--min-version" in line ] 29 version_lines.extend([ line for line in lines if "--max-version" in line ]) 30 lines = [ line for line in lines if not line in version_lines ] 31 for line in version_lines: 32 assert len(line.split()) == 3 33 min_version = line.split()[1] if line.split()[0] == "--min-version" else "0.0.0" 34 max_version = line.split()[1] if line.split()[0] == "--max-version" else "9.9.9" 35 test = line.split()[2] 36 if (version >= min_version and version <= max_version): 37 lines.append(test) 38 return lines 39 40while not len(lists) == 0: 41 lists2 = lists 42 lists = [] 43 for list in lists2: 44 directory = os.path.dirname(os.path.realpath(list)) 45 with open(list) as file: 46 # Filter out comments and --min-version 47 lines = [ line.strip() for line in file.readlines()] 48 lines = [ line for line in lines if not "//" in line ] 49 lines = [ line for line in lines if not "#" in line ] 50 lines = [ line.replace("--slow","") for line in lines ] 51 lines = filter_by_version(lines) 52 # Append lists and tests found in this list. 53 lines = [ directory + "/" + line for line in lines ] 54 lists.extend([ line for line in lines if "00_test_list.txt" in line ]) 55 tests.extend([ line for line in lines if ".html" in line ]) 56 57# Directories for formating test-names/relative-paths. 58name_directory = os.path.dirname(os.path.realpath(top_list)) 59path_directory = os.path.realpath(os.path.join(name_directory, os.pardir)) 60 61tests = sorted(tests) 62for test in tests: 63 test_path = test.replace(path_directory + "/", "") 64 test_name = test.replace(name_directory + "/", "") 65 test_name = test_name.replace("/","_") 66 test_name = test_name.replace(".","_") 67 test_name = test_name.replace("-","_") 68 print " public void test_" + test_name + "() throws Exception { doTest(\"" + test_path + "\"); }" 69 70