summaryrefslogtreecommitdiff
path: root/tools/ci
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
parenta5f01058610fbb5ce099d0a11acf2eaf6a4b3515 (diff)
downloadplus-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.gz
plus-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.bz2
plus-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.xz
plus-89e97b05daf6fd98fce48cf3fef624e55905af46.zip
Add into .gitlab-ci.yml job for run separatly all unit tests.
Diffstat (limited to 'tools/ci')
-rwxr-xr-xtools/ci/scripts/gettests.py62
-rwxr-xr-xtools/ci/scripts/separateunittests.sh17
-rwxr-xr-xtools/ci/scripts/test.sh6
3 files changed, 85 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")
diff --git a/tools/ci/scripts/separateunittests.sh b/tools/ci/scripts/separateunittests.sh
new file mode 100755
index 000000000..9db32ead8
--- /dev/null
+++ b/tools/ci/scripts/separateunittests.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+export LIST=./logs/testslist.txt
+
+./tools/ci/scripts/gettests.py >${LIST} || exit 1
+
+IFS='
+'
+
+for str in $(cat ${LIST})
+do
+ unset IFS
+ declare -a "arr=($str)"
+ echo ./src/manaplustests --test-case=\"${arr[0]}\" --subcase=\"${arr[1]}\"
+ ./src/manaplustests --test-case="${arr[0]}" --subcase="${arr[1]}" || exit 1
+done
+
diff --git a/tools/ci/scripts/test.sh b/tools/ci/scripts/test.sh
new file mode 100755
index 000000000..4d4426780
--- /dev/null
+++ b/tools/ci/scripts/test.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+echo 1: $1
+echo 2: $2
+echo 3: $3
+echo 4: $4