• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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