diff options
author | duerpei <duep.fnst@fujitsu.com> | 2022-10-22 17:17:15 +0800 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2023-01-20 16:03:16 +0000 |
commit | 95ea8f3633f58cd5433e36c10074df5fe19a125a (patch) | |
tree | 0af6c51b4acb3b510248d117b76a62ab48b15f8a | |
parent | 2f9db91f9e63e7b746770b17c2c9204ff663a7de (diff) |
agl-test-framework: enable ptest of 'busybox'
Enable the test suite of 'busybox' from ptest
Bug-AGL: SPEC-4345
Signed-off-by: duerpei <duep.fnst@fujitsu.com>
Change-Id: I960f013d47f893f65766628da443ad6dce6f1009
-rw-r--r-- | tests/busybox/__init__.py | 0 | ||||
-rw-r--r-- | tests/busybox/parser.py | 20 | ||||
-rw-r--r-- | tests/busybox/resource/fix_duplicate_case_names.patch | 13 | ||||
-rw-r--r-- | tests/busybox/run_tests.py | 45 |
4 files changed, 78 insertions, 0 deletions
diff --git a/tests/busybox/__init__.py b/tests/busybox/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/busybox/__init__.py diff --git a/tests/busybox/parser.py b/tests/busybox/parser.py new file mode 100644 index 0000000..e21814f --- /dev/null +++ b/tests/busybox/parser.py @@ -0,0 +1,20 @@ +import re + +def log_parse(log_file): + reObj = re.compile('^(PASS|FAIL|SKIP): (.+)', re.MULTILINE) + case_list = dict() + test_log = open(log_file, 'r') + + line = test_log.readline() + while line: + matchs = reObj.search(line) + + if matchs: + groups = list(matchs.groups()) + case_list[groups[1]] = [groups[1], groups[0], ""] + + line = test_log.readline() + + test_log.close() + + return case_list diff --git a/tests/busybox/resource/fix_duplicate_case_names.patch b/tests/busybox/resource/fix_duplicate_case_names.patch new file mode 100644 index 0000000..48ec7e6 --- /dev/null +++ b/tests/busybox/resource/fix_duplicate_case_names.patch @@ -0,0 +1,13 @@ +--- a/testsuite/seq.tests 2022-09-17 05:04:32.499945716 +0000 ++++ b/testsuite/seq.tests 2022-09-17 05:07:26.515945612 +0000 +@@ -14,8 +14,8 @@ + + # Test exit status + +-testing "seq (exit with error)" "seq 2> /dev/null || echo yes" "yes\n" "" "" +-testing "seq (exit with error)" "seq 1 2 3 4 2> /dev/null || echo yes" \ ++testing "seq one argument (exit with error)" "seq 2> /dev/null || echo yes" "yes\n" "" "" ++testing "seq five arguments (exit with error)" "seq 1 2 3 4 2> /dev/null || echo yes" \ + "yes\n" "" "" + testing "seq one argument" "seq 3" "1\n2\n3\n" "" "" + testing "seq two arguments" "seq 5 7" "5\n6\n7\n" "" "" diff --git a/tests/busybox/run_tests.py b/tests/busybox/run_tests.py new file mode 100644 index 0000000..c6f3b8d --- /dev/null +++ b/tests/busybox/run_tests.py @@ -0,0 +1,45 @@ +import pytest +import pathlib +import subprocess +import tests.busybox.parser as parser +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 = parser.log_parse(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") |