summaryrefslogtreecommitdiffstats
path: root/tests/busybox/run_tests.py
blob: 31c5c5b6e34138cb43b60196b5ebe27175f27bc5 (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
import pytest
import pathlib
import subprocess
import plugins.agl_test_log as log
from plugins.agl_test_ptest_base import PTESTBase

class BusyboxBase(PTESTBase):
    def __init__(self):
        super().__init__(test_name="busybox")

    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/busybox")
        return super().precheck() and path_bash.is_file()

    def do_patch(self, patch_file, do_patch_dir):
        patch_cmd = "patch -p1 < " + patch_file
        subprocess.run(patch_cmd, shell = True, cwd = do_patch_dir)

    def un_patch(self, patch_file, do_patch_dir):
        patch_cmd = "patch -R -p1 < " + patch_file
        subprocess.run(patch_cmd, shell = True, cwd = do_patch_dir)

instance = BusyboxBase()
patch_file = instance.get_workdir() + "fix_duplicate_case_names.patch"
do_patch_dir = "/usr/lib/busybox/ptest/"
instance.do_patch(patch_file, do_patch_dir)
instance.run_ptest()
instance.un_patch(patch_file, do_patch_dir)

@pytest.fixture(scope='module')
def testbase():
    yield instance
    #package log files and make report file
    instance.log_report()

@pytest.mark.parametrize('case_name', instance.case_info_list.keys())
def test_busybox(testbase: BusyboxBase, case_name):
    testbase.run_case(case_name)

if __name__ == '__main__':
    pytest.main("-s run_tests")