diff options
author | Andrei Karas <akaras@inbox.ru> | 2017-08-30 01:17:58 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2017-08-30 01:25:40 +0300 |
commit | 89e97b05daf6fd98fce48cf3fef624e55905af46 (patch) | |
tree | 2944b4c7b2b0cb121e84752b3f95ffc4c4506fcb /tools/ci/scripts/gettests.py | |
parent | a5f01058610fbb5ce099d0a11acf2eaf6a4b3515 (diff) | |
download | mv-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.gz mv-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.bz2 mv-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.xz mv-89e97b05daf6fd98fce48cf3fef624e55905af46.zip |
Add into .gitlab-ci.yml job for run separatly all unit tests.
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") |