diff options
Diffstat (limited to 'tools/ci/scripts/gettests.py')
-rwxr-xr-x | tools/ci/scripts/gettests.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tools/ci/scripts/gettests.py b/tools/ci/scripts/gettests.py new file mode 100755 index 000000000..ff2b89faa --- /dev/null +++ b/tools/ci/scripts/gettests.py @@ -0,0 +1,62 @@ +#! /usr/bin/env python +# -*- coding: utf8 -*- +# +# Copyright (C) 2017 Andrei Karas + +import os +import re + +testCaseRe = re.compile("^TEST_CASE[(]\"(?P<name1>([\w ()_:.,]*))\",[ ]\"(?P<name2>([\w ()_:.,]*))\"[)]$") +sectionRe = re.compile("^([ ]*)SECTION[(]\"(?P<name>([\w ()_:.,]*))\"[)]$") + + +def printTestCase(testCase): +# print("func --test-case=\"{0}\"".format(testCase)) +# print("func \"{0}\" \"\"".format(testCase)) + print("\"{0}\" \"\"".format(testCase)) + + +def printSection(testCase, section): +# print("func --test-case=\"{0}\" --subcase=\"{1}\"".format(testCase, section)) +# print("func \"{0}\" \"{1}\"".format(testCase, section)) + print("\"{0}\" \"{1}\"".format(testCase, section)) + + +def parseCC(srcFile): + with open(srcFile, "r") as r: + testCase = "" + sectionsCount = 0 + for line in r: + m = testCaseRe.search(line) + if m != None: + if testCase != "" and sectionsCount == 0: + printTestCase(testCase) + testCase = m.group("name1") + " " + m.group("name2") + sectionsCount = 0 + elif line.find("TEST_CASE(\"") >= 0: + print("Error: test case regexp failed for: " + line) + exit(1) + m = sectionRe.search(line) + if m != None: + sectionsCount = sectionsCount + 1 + printSection(testCase, m.group("name")) + elif line.find("SECTION(\"") >= 0: + print("Error: section regexp failed for: " + line) + exit(1) + if testCase != "" and sectionsCount == 0: + printTestCase(testCase) + + +def enumFiles(srcDir): + files = os.listdir(srcDir) + for file1 in files: + if file1[0] == ".": + continue + srcPath = os.path.abspath(srcDir + os.path.sep + file1) + if os.path.isdir(srcPath): + enumFiles(srcPath) + elif file1[-3:] == ".cc": + parseCC(srcPath) + + +enumFiles("src/unittests") |