普通文本  |  70行  |  2.7 KB

# 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 + "\"); }"