aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bash/run_tests.py
blob: b37f5fc5ca38a534a7009d1caa079c6dabb3bb66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import pytest
import pathlib
import plugins.agl_test_log as log
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 = log.log_process_gnu(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")