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")