| import os |
| import re |
| import sys |
| |
| |
| def ReadFileAsLines(filename): |
| """Reads a file, removing blank lines and lines that start with #""" |
| file = open(filename, "r") |
| raw_lines = file.readlines() |
| file.close() |
| lines = [] |
| for line in raw_lines: |
| line = line.strip() |
| if len(line) > 0 and not line.startswith("#"): |
| lines.append(line) |
| return lines |
| |
| |
| def GetSuiteName(testName): |
| return testName[:testName.find("/")] |
| |
| |
| def GetTestName(testName): |
| replacements = {".test": "", ".": "_"} |
| splitTestName = testName.split("/") |
| cleanName = splitTestName[-2] + "_" + splitTestName[-1] |
| for replaceKey in replacements: |
| cleanName = cleanName.replace(replaceKey, replacements[replaceKey]) |
| return cleanName |
| |
| |
| def GenerateTests(outFile, testNames): |
| # Remove duplicate tests |
| testNames = list(set(testNames)) |
| testSuites = [] |
| |
| outFile.write("#include \"gles_conformance_tests.h\"\n\n") |
| |
| for test in testNames: |
| testSuite = GetSuiteName(test) |
| if not testSuite in testSuites: |
| outFile.write("DEFINE_CONFORMANCE_TEST_CLASS(" + testSuite + ");\n\n") |
| testSuites.append(testSuite) |
| |
| outFile.write("TYPED_TEST(" + testSuite + ", " + GetTestName(test) + ")\n") |
| outFile.write("{\n") |
| outFile.write(" run(\"" + test + "\");\n") |
| outFile.write("}\n\n") |
| |
| |
| def GenerateTestList(sourceFile, rootDir): |
| tests = [] |
| fileName, fileExtension = os.path.splitext(sourceFile) |
| if fileExtension == ".run": |
| lines = ReadFileAsLines(sourceFile) |
| for line in lines: |
| tests += GenerateTestList(os.path.join(os.path.dirname(sourceFile), line), rootDir) |
| elif fileExtension == ".test": |
| tests.append(os.path.relpath(os.path.realpath(sourceFile), rootDir).replace("\\", "/")) |
| return tests |
| |
| |
| def main(argv): |
| tests = GenerateTestList(argv[0], argv[1]) |
| tests.sort() |
| |
| output = open(argv[2], 'wb') |
| GenerateTests(output, tests) |
| output.close() |
| |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv[1:])) |