From 50df2b6904dc448c2a8c5ed4f974c631fd97b070 Mon Sep 17 00:00:00 2001 From: duerpei Date: Sat, 3 Sep 2022 16:01:29 +0800 Subject: agl-test-framework: add test 'bash' Add test script for 'bash' Bug-AGL: SPEC-4345 Signed-off-by: duerpei Change-Id: Id50dcc3d1a80b8d088b8af897aee82f6492e1a96 --- tests/bash/__init__.py | 0 tests/bash/parser.py | 20 ++++++++++++++++++++ tests/bash/run_tests.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 tests/bash/__init__.py create mode 100644 tests/bash/parser.py create mode 100644 tests/bash/run_tests.py (limited to 'tests') diff --git a/tests/bash/__init__.py b/tests/bash/__init__.py new file mode 100644 index 0000000..e69de29 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") -- cgit 1.2.3-korg