summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorduerpei <duep.fnst@fujitsu.com>2022-10-22 17:17:15 +0800
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2023-01-20 16:03:16 +0000
commit95ea8f3633f58cd5433e36c10074df5fe19a125a (patch)
tree0af6c51b4acb3b510248d117b76a62ab48b15f8a
parent2f9db91f9e63e7b746770b17c2c9204ff663a7de (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__.py0
-rw-r--r--tests/busybox/parser.py20
-rw-r--r--tests/busybox/resource/fix_duplicate_case_names.patch13
-rw-r--r--tests/busybox/run_tests.py45
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")