summaryrefslogtreecommitdiff
path: root/tools/ci/scripts/gettests.py
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2017-08-30 01:17:58 +0300
committerAndrei Karas <akaras@inbox.ru>2017-08-30 01:25:40 +0300
commit89e97b05daf6fd98fce48cf3fef624e55905af46 (patch)
tree2944b4c7b2b0cb121e84752b3f95ffc4c4506fcb /tools/ci/scripts/gettests.py
parenta5f01058610fbb5ce099d0a11acf2eaf6a4b3515 (diff)
downloadmv-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-xtools/ci/scripts/gettests.py62
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")