diff --git a/docs/system_base/apropos/tc_service_apropos_fun001.yaml b/docs/system_base/apropos/tc_service_apropos_fun001.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f79919edbb3e1d938ab013783dcf8c30e81228a8 --- /dev/null +++ b/docs/system_base/apropos/tc_service_apropos_fun001.yaml @@ -0,0 +1,29 @@ +作者: douzhihcong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local,apropos +用例描述: 测试 apropos 命令的各项功能 +修改人: douzhihcong + +前置条件: +- 系统已安装 man-db 包,且已通过 mandb 命令初始化或更新手册页数据库 + +测试步骤: +- 执行 `apropos ls` 并过滤结果,检查是否包含与 "lsinitrd" 相关的手册页 +- 执行 `apropos -r "ls.*"` 并过滤结果,验证正则表达式搜索功能 +- 执行 `apropos -a tar` 并过滤结果,验证同时匹配多个关键字的搜索功能 +- 执行 `apropos -M /usr/share/man ll`,验证手动指定手册页搜索路径的功能 +- 执行 `apropos -w "ls*"` 并检查是否包含 "ls",验证通配符搜索功能 +- 执行 `apropos -C /etc/manpath.config "ls"` 并检查是否包含 "ls",验证使用自定义配置文件的功能 +- 执行 `apropos -d "ls"` 并检查输出中是否包含调试或配置文件相关信息,验证调试模式输出功能 + +期望结果: +- 搜索到与 "ls" 相关的手册页,且结果中包含 "lsinitrd" +- 使用正则表达式能成功搜索到以 "ls" 开头的关键字 +- 搜索到同时匹配 "tar" 的手册页条目 +- 在指定路径 `/usr/share/man` 下成功搜索到 "ll" 相关手册页 +- 使用通配符能成功搜索到匹配 "ls*" 的手册页 +- 使用自定义配置文件 `/etc/manpath.config` 能成功搜索到 "ls" 相关手册页 +- 调试模式输出中包含 "debug" 或 "config file" 相关信息 diff --git a/docs/system_base/apropos/tc_service_apropos_fun002.yaml b/docs/system_base/apropos/tc_service_apropos_fun002.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4c0d68d788a48c9bd66bb5a979b7dd218d9343ed --- /dev/null +++ b/docs/system_base/apropos/tc_service_apropos_fun002.yaml @@ -0,0 +1,27 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local,apropos +用例描述: 测试 apropos 命令的基本搜索功能和可用性 +修改人: douzhichong + +前置条件: +- 系统已安装 man-db 包,且已通过 mandb 命令初始化或更新手册页数据库 + +测试步骤: +- 执行 `apropos ls` 并提取前 5 行结果,检查是否包含 "ls" +- 执行 `apropos "ls"` 并检查结果中是否包含 "list" 相关内容 +- 执行 `apropos "printf"` 并检查是否包含 "printf" 相关手册页 +- 执行 `apropos "file"` 并提取前 5 行结果,验证是否有输出 +- 执行 `apropos --help` 并检查输出前两行是否包含 "usage" 或 "apropos" +- 执行 `apropos --version` 验证命令版本输出是否正常 + +期望结果: +- 成功搜索到 "ls" 相关的手册页,前 5 行结果中包含 "ls" +- 搜索 "ls" 的结果中包含 "list" 相关内容 +- 成功搜索到 "printf" 相关手册页 +- 搜索 "file" 至少返回 1 条有效结果 +- 帮助选项输出包含 "usage" 或 "apropos" 标识 +- 版本命令执行成功,apropos 命令可用 diff --git a/tests/system_base/apropos/tc_service_apropos_fun001.py b/tests/system_base/apropos/tc_service_apropos_fun001.py new file mode 100644 index 0000000000000000000000000000000000000000..60c0e3a8a1253e90ed61f6632f0c4aaa6fb42955 --- /dev/null +++ b/tests/system_base/apropos/tc_service_apropos_fun001.py @@ -0,0 +1,52 @@ +""" +@File: tc_service_apropos_fun001.py +@Time: 2026/2/6 15:30:20 +@Author: douzhihcong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhihcong +""" +from common.basetest import LocalTest +import time +import subprocess +import os + + +class Test(LocalTest): + """ + See tc_service_apropos_fun001.yaml for details + + :avocado: tags=P1,noarch,local,apropos + """ + PARAM_DIC = {"pkg_name": " man-db"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.cmd("mandb") + + def test(self): + code, result = self.cmd('apropos ls | grep lsinitrd') + self.assertFalse(code, "Failed to search for the manual page related to 'ls'") + + code, result = self.cmd('apropos -r "ls.*" | grep ls') + self.assertFalse(code, "Failed to search for keywords using regular expressions") + + code, result = self.cmd('apropos -a tar | grep -E "glGetQueryiv|tar"') + self.assertFalse(code, "Failed to search for entries matching tar") + + code, result = self.cmd('apropos -M /usr/share/man ll') + self.assertFalse(code, "Failed to set the search path entry") + + code, result = self.cmd('apropos -w "ls*" | grep -q "ls"') + self.assertFalse(code, "Wildcard search failed") + + code, result = self.cmd('apropos -C /etc/manpath.config "ls" | grep -q "ls"') + self.assertFalse(code, "Config file not applied") + + code, result = self.cmd('apropos -d "ls" 2>&1 | grep -q -E "debug|config file"') + self.assertFalse(code, "Debug mode output failed") + + def tearDown(self): + super().tearDown(self.PARAM_DIC) + diff --git a/tests/system_base/apropos/tc_service_apropos_fun002.py b/tests/system_base/apropos/tc_service_apropos_fun002.py new file mode 100644 index 0000000000000000000000000000000000000000..6cab48cbff05557d395cc46c4dabe251754fd8aa --- /dev/null +++ b/tests/system_base/apropos/tc_service_apropos_fun002.py @@ -0,0 +1,49 @@ +""" +@File: tc_service_apropos_fun002.py +@Time: 2026/2/6 15:30:20 +@Author: douzhihcong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhihcong +""" +from common.basetest import LocalTest +import time +import subprocess +import os + + +class Test(LocalTest): + """ + See tc_service_apropos_fun002.yaml for details + + :avocado: tags=P1,noarch,local,apropos + """ + PARAM_DIC = {"pkg_name": " man-db"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + self.cmd("mandb > /dev/null 2>&1") + + def test(self): + code, result = self.cmd('apropos ls | head -5 | grep -q "ls"') + self.assertFalse(code, "Basic search for 'ls' failed") + + code, result = self.cmd('apropos "ls" | grep -q "list"') + self.assertFalse(code, "Search for 'ls' content failed") + + code, result = self.cmd('apropos "printf" | grep -q "printf"') + self.assertFalse(code, "Search for 'printf' failed") + + code, result = self.cmd('apropos "file" | head -5 | wc -l | grep -q "[1-9]"') + self.assertFalse(code, "Search for 'file' returned no results") + + code, result = self.cmd('apropos --help 2>&1 | head -2 | grep -q -E "(usage|apropos)"') + self.assertFalse(code, "Help option test failed") + + code, result = self.cmd('apropos --version > /dev/null 2>&1') + self.assertFalse(code, "Apropos command is not available") + + def tearDown(self): + super().tearDown(self.PARAM_DIC) +