diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bash/__init__.py | 0 | ||||
-rw-r--r-- | tests/bash/parser.py | 20 | ||||
-rw-r--r-- | tests/bash/run_tests.py | 48 |
3 files changed, 68 insertions, 0 deletions
diff --git a/tests/bash/__init__.py b/tests/bash/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/bash/__init__.py diff --git a/tests/bash/parser.py b/tests/bash/parser.py new file mode 100644 index 0000000..8f2b635 --- /dev/null +++ b/tests/bash/parser.py @@ -0,0 +1,20 @@ +import re + +def log_parse(log_file): + reObj = re.compile('^(PASS|FAIL+?): (run.+)', re.MULTILINE) + case_list = dict() + test_log = open(log_file, 'r') + + line = test_log.readline() + while line: + matchs = reObj.search(line) + + if matchs: + groups = matchs.groups() + case_list[groups[1]] = [groups[1], groups[0], ""] + + line = test_log.readline() + + test_log.close() + + return case_list diff --git a/tests/bash/run_tests.py b/tests/bash/run_tests.py new file mode 100644 index 0000000..d18ecf0 --- /dev/null +++ b/tests/bash/run_tests.py @@ -0,0 +1,48 @@ +import pytest +import pathlib +import tests.bash.parser as parser +from plugins.agl_test_ptest_base import PTESTBase + +class BashBase(PTESTBase): + def __init__(self): + super().__init__(test_name="bash") + + def log_process(self): + log_file = self.get_logfile() + self.case_info_list = parser.log_parse(log_file) + + def precheck(self): + path_bash = pathlib.Path("/usr/bin/bash") + return super().precheck() and path_bash.is_file() + + def get_para(self): + #Due to the bug of "ptest-runner", the test case "run-read" may fail + xfail_list = ["run-read"] + return self.set_xfail_case(xfail_list) + + def set_xfail_case(self, xfail_list): + para = list(self.case_info_list.keys()) + for test_case in xfail_list: + para.remove(test_case) + para.append(pytest.param(test_case, marks=pytest.mark.xfail)) + if(self.case_info_list[test_case][1] == "PASS"): + self.case_info_list[test_case][2] = "xpassed" + else: + self.case_info_list[test_case][2] = "xfailed" + return para + +instance = BashBase() +instance.run_ptest() + +@pytest.fixture(scope='module') +def testbase(): + yield instance + #package log files and make report file + instance.log_report() + +@pytest.mark.parametrize('case_name', instance.get_para()) +def test_bash(testbase: BashBase, case_name): + testbase.run_case(case_name) + +if __name__ == '__main__': + pytest.main("-s run_tests") |