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 | |
parent | a5f01058610fbb5ce099d0a11acf2eaf6a4b3515 (diff) | |
download | manaplus-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.gz manaplus-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.bz2 manaplus-89e97b05daf6fd98fce48cf3fef624e55905af46.tar.xz manaplus-89e97b05daf6fd98fce48cf3fef624e55905af46.zip |
Add into .gitlab-ci.yml job for run separatly all unit tests.
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/ci/scripts/gettests.py | 62 | ||||
-rwxr-xr-x | tools/ci/scripts/separateunittests.sh | 17 | ||||
-rwxr-xr-x | tools/ci/scripts/test.sh | 6 |
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 |