diff --git a/suite2cases/function_test/pkg_test/OpenIPMI/python3-openipmi.json b/suite2cases/function_test/pkg_test/OpenIPMI/python3-openipmi.json
new file mode 100644
index 00000000000..3a8a0b85f50
--- /dev/null
+++ b/suite2cases/function_test/pkg_test/OpenIPMI/python3-openipmi.json
@@ -0,0 +1,26 @@
+{
+ "path": "$OET_PATH/testcases/function_test/pkg_test/OpenIPMI/python3-openipmi",
+ "machine num": 1,
+ "cases": [
+ {
+ "name": "test_python3-openipmi_function_install",
+ "desc": "测试python3-openipmi软件包是否能够正确安装。"
+ },
+ {
+ "name": "test_python3-openipmi_function_uninstall",
+ "desc": "测试python3-openipmi软件包是否能够被正确卸载。"
+ },
+ {
+ "name": "test_python3-openipmi_function_import",
+ "desc": "测试能否成功导入python3-openipmi的主要模块,验证基础功能可用。"
+ },
+ {
+ "name": "test_python3-openipmi_function_version",
+ "desc": "测试python3-openipmi软件包的版本信息能否正确查询。"
+ },
+ {
+ "name": "test_python3-openipmi_function_list_modules",
+ "desc": "测试能否列出python3-openipmi软件包提供的可用模块或功能。"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/geronimo-ejb/geronimo-ejb-help.json b/suite2cases/function_test/pkg_test/geronimo-ejb/geronimo-ejb-help.json
index 0f1531a41ab..201ed95d6fb 100644
--- a/suite2cases/function_test/pkg_test/geronimo-ejb/geronimo-ejb-help.json
+++ b/suite2cases/function_test/pkg_test/geronimo-ejb/geronimo-ejb-help.json
@@ -5,6 +5,26 @@
{
"name": "test_geronimo-ejb-help_function_perf",
"desc": "Test performance metrics"
+ },
+ {
+ "name": "test_geronimo-ejb-help_function_install",
+ "desc": "Test the installation process of the geronimo-ejb-help package"
+ },
+ {
+ "name": "test_geronimo-ejb-help_function_uninstall",
+ "desc": "Test the removal process of the geronimo-ejb-help package"
+ },
+ {
+ "name": "test_geronimo-ejb-help_function_version",
+ "desc": "Test querying the installed package version"
+ },
+ {
+ "name": "test_geronimo-ejb-help_function_usage",
+ "desc": "Test basic command-line usage or help output"
+ },
+ {
+ "name": "test_geronimo-ejb-help_function_integrity",
+ "desc": "Verify the integrity of installed package files"
}
]
}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/irssi/irssi-devel.json b/suite2cases/function_test/pkg_test/irssi/irssi-devel.json
index 1fde7ebdaf2..e66ef7fb0bc 100644
--- a/suite2cases/function_test/pkg_test/irssi/irssi-devel.json
+++ b/suite2cases/function_test/pkg_test/irssi/irssi-devel.json
@@ -10,6 +10,34 @@
{
"name": "test_irssi-devel_function_config",
"desc": "测试 irssi-devel 软件包的配置功能"
+ },
+ {
+ "name": "test_irssi-devel_function_install",
+ "desc": "测试 irssi-devel 软件包的安装功能"
+ },
+ {
+ "name": "test_irssi-devel_function_uninstall",
+ "desc": "测试 irssi-devel 软件包的卸载功能"
+ },
+ {
+ "name": "test_irssi-devel_function_version",
+ "desc": "测试 irssi-devel 软件包的版本查询功能"
+ },
+ {
+ "name": "test_irssi-devel_function_headers",
+ "desc": "测试 irssi-devel 软件包的头文件存在性"
+ },
+ {
+ "name": "test_irssi-devel_function_library",
+ "desc": "测试 irssi-devel 软件包的开发库存在性"
+ },
+ {
+ "name": "test_irssi-devel_function_compile",
+ "desc": "测试使用 irssi-devel 头文件和库进行简单编译"
+ },
+ {
+ "name": "test_irssi-devel_function_pkgconfig",
+ "desc": "测试 irssi-devel 软件包的 pkg-config 信息"
}
]
}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/lodash/nodejs-lodash-reject.json b/suite2cases/function_test/pkg_test/lodash/nodejs-lodash-reject.json
new file mode 100644
index 00000000000..759d6572819
--- /dev/null
+++ b/suite2cases/function_test/pkg_test/lodash/nodejs-lodash-reject.json
@@ -0,0 +1,26 @@
+{
+ "path": "$OET_PATH/testcases/function_test/pkg_test/lodash/nodejs-lodash-reject",
+ "machine num": 1,
+ "cases": [
+ {
+ "name": "test_nodejs-lodash-reject_function_install",
+ "desc": "测试使用包管理器(如npm)成功安装nodejs-lodash-reject软件包"
+ },
+ {
+ "name": "test_nodejs-lodash-reject_function_require",
+ "desc": "测试在Node.js代码中成功引入lodash.reject模块"
+ },
+ {
+ "name": "test_nodejs-lodash-reject_function_basic",
+ "desc": "测试reject函数根据条件过滤数组的基本功能"
+ },
+ {
+ "name": "test_nodejs-lodash-reject_function_predicate",
+ "desc": "测试reject函数使用函数、对象、属性等不同断言形式"
+ },
+ {
+ "name": "test_nodejs-lodash-reject_function_uninstall",
+ "desc": "测试使用包管理器成功卸载nodejs-lodash-reject软件包"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/maven-dependency-plugin/maven-dependency-plugin.json b/suite2cases/function_test/pkg_test/maven-dependency-plugin/maven-dependency-plugin.json
index e8378943c2a..18a684d22e0 100644
--- a/suite2cases/function_test/pkg_test/maven-dependency-plugin/maven-dependency-plugin.json
+++ b/suite2cases/function_test/pkg_test/maven-dependency-plugin/maven-dependency-plugin.json
@@ -6,6 +6,30 @@
"name": "test_maven-dependency-plugin_install",
"desc": "测试软件包maven-dependency-plugin的安装功能",
"machine num": 1
+ },
+ {
+ "name": "test_maven-dependency-plugin_function_install",
+ "desc": "测试软件包maven-dependency-plugin的安装功能"
+ },
+ {
+ "name": "test_maven-dependency-plugin_function_uninstall",
+ "desc": "测试软件包maven-dependency-plugin的卸载功能"
+ },
+ {
+ "name": "test_maven-dependency-plugin_function_dependency_list",
+ "desc": "测试使用maven-dependency-plugin列出项目依赖"
+ },
+ {
+ "name": "test_maven-dependency-plugin_function_dependency_tree",
+ "desc": "测试使用maven-dependency-plugin生成依赖树"
+ },
+ {
+ "name": "test_maven-dependency-plugin_function_copy_dependencies",
+ "desc": "测试使用maven-dependency-plugin复制依赖到指定目录"
+ },
+ {
+ "name": "test_maven-dependency-plugin_function_analyze",
+ "desc": "测试使用maven-dependency-plugin分析项目依赖"
}
]
}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/mysql/mysql-common.json b/suite2cases/function_test/pkg_test/mysql/mysql-common.json
index 4f78b213193..709f99f16e4 100644
--- a/suite2cases/function_test/pkg_test/mysql/mysql-common.json
+++ b/suite2cases/function_test/pkg_test/mysql/mysql-common.json
@@ -21,6 +21,38 @@
{
"name": "test_mysql-common_function_version",
"desc": "Verify package version info"
+ },
+ {
+ "name": "test_mysql-common_function_install",
+ "desc": "Test the installation process of mysql-common package"
+ },
+ {
+ "name": "test_mysql-common_function_remove",
+ "desc": "Test the removal (purge) of mysql-common package"
+ },
+ {
+ "name": "test_mysql-common_function_check",
+ "desc": "Verify the presence of mysql-common package on the system"
+ },
+ {
+ "name": "test_mysql-common_function_defaults",
+ "desc": "Check the default configuration files and directories"
+ },
+ {
+ "name": "test_mysql-common_function_version",
+ "desc": "Verify the installed version of mysql-common"
+ },
+ {
+ "name": "test_mysql-common_function_depends",
+ "desc": "Validate key dependencies and conflicts of the package"
+ },
+ {
+ "name": "test_mysql-common_function_config",
+ "desc": "Test the behavior of default my.cnf configuration"
+ },
+ {
+ "name": "test_mysql-common_function_scripts",
+ "desc": "Verify the execution of maintainer scripts (pre/post-install/remove)"
}
]
}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/openwebbeans/openwebbeans-tomcat7.json b/suite2cases/function_test/pkg_test/openwebbeans/openwebbeans-tomcat7.json
index 1362ae754f7..abcd0632264 100644
--- a/suite2cases/function_test/pkg_test/openwebbeans/openwebbeans-tomcat7.json
+++ b/suite2cases/function_test/pkg_test/openwebbeans/openwebbeans-tomcat7.json
@@ -25,6 +25,26 @@
{
"name": "test_openwebbeans-tomcat7_function_dependency",
"desc": "Test dependency resolution"
+ },
+ {
+ "name": "test_openwebbeans-tomcat7_function_install",
+ "desc": "Test installation of openwebbeans-tomcat7 package"
+ },
+ {
+ "name": "test_openwebbeans-tomcat7_function_uninstall",
+ "desc": "Test uninstallation of openwebbeans-tomcat7 package"
+ },
+ {
+ "name": "test_openwebbeans-tomcat7_function_version",
+ "desc": "Test checking the package version"
+ },
+ {
+ "name": "test_openwebbeans-tomcat7_function_verify",
+ "desc": "Test verification of installed files"
+ },
+ {
+ "name": "test_openwebbeans-tomcat7_function_usage",
+ "desc": "Test basic usage or help command"
}
]
}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/redis/redis.json b/suite2cases/function_test/pkg_test/redis/redis.json
index 64f9c9a0d11..1ef923c86fa 100644
--- a/suite2cases/function_test/pkg_test/redis/redis.json
+++ b/suite2cases/function_test/pkg_test/redis/redis.json
@@ -512,18 +512,10 @@
"name": "test_redis_function_config_file",
"desc": "测试通过指定配置文件启动redis服务,验证配置生效。"
},
- {
- "name": "test_redis_function_ping",
- "desc": "测试使用redis-cli连接服务并执行PING命令,验证服务响应。"
- },
{
"name": "test_redis_function_set_get",
"desc": "测试使用redis-cli执行SET和GET命令,验证基本数据存取功能。"
},
- {
- "name": "test_redis_function_info",
- "desc": "测试使用redis-cli执行INFO命令,验证服务信息获取功能。"
- },
{
"name": "test_redis_function_benchmark",
"desc": "测试使用redis-benchmark进行默认基准测试,验证性能测试功能。"
diff --git a/suite2cases/function_test/pkg_test/texlive-split-e/texlive-cmdtrack.json b/suite2cases/function_test/pkg_test/texlive-split-e/texlive-cmdtrack.json
index c35d4dd4209..4a5ede5b87b 100644
--- a/suite2cases/function_test/pkg_test/texlive-split-e/texlive-cmdtrack.json
+++ b/suite2cases/function_test/pkg_test/texlive-split-e/texlive-cmdtrack.json
@@ -5,6 +5,26 @@
{
"name": "test_texlive-cmdtrack_function_install",
"desc": "Test installation of texlive-cmdtrack"
+ },
+ {
+ "name": "test_texlive-cmdtrack_function_install",
+ "desc": "Test installation of texlive-cmdtrack package"
+ },
+ {
+ "name": "test_texlive-cmdtrack_function_uninstall",
+ "desc": "Test removal of texlive-cmdtrack package"
+ },
+ {
+ "name": "test_texlive-cmdtrack_function_version",
+ "desc": "Test checking version of cmdtrack.sty"
+ },
+ {
+ "name": "test_texlive-cmdtrack_function_usage",
+ "desc": "Test basic usage in LaTeX document"
+ },
+ {
+ "name": "test_texlive-cmdtrack_function_help",
+ "desc": "Test accessing package documentation"
}
]
}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/texlive-split-i/texlive-fifinddo-info-doc.json b/suite2cases/function_test/pkg_test/texlive-split-i/texlive-fifinddo-info-doc.json
index be32d87096a..7fd9dae94ba 100644
--- a/suite2cases/function_test/pkg_test/texlive-split-i/texlive-fifinddo-info-doc.json
+++ b/suite2cases/function_test/pkg_test/texlive-split-i/texlive-fifinddo-info-doc.json
@@ -6,6 +6,18 @@
"name": "test_texlive-fifinddo-info-doc_install",
"desc": "测试 texlive-fifinddo-info-doc 软件包的安装功能,验证是否能够正确安装到系统中。",
"machine num": 1
+ },
+ {
+ "name": "test_texlive-fifinddo-info-doc_function_install",
+ "desc": "测试 texlive-fifinddo-info-doc 软件包是否能够通过系统包管理器成功安装,并验证安装后相关文档文件的存在性。"
+ },
+ {
+ "name": "test_texlive-fifinddo-info-doc_function_uninstall",
+ "desc": "测试 texlive-fifinddo-info-doc 软件包的卸载功能,确保能够完全移除且不残留关键文件。"
+ },
+ {
+ "name": "test_texlive-fifinddo-info-doc_function_verify",
+ "desc": "验证 texlive-fifinddo-info-doc 软件包的核心文档内容(如手册、示例文件)在安装后是否可被正常访问和读取。"
}
]
}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/texlive-split-p/texlive-multibbl-doc.json b/suite2cases/function_test/pkg_test/texlive-split-p/texlive-multibbl-doc.json
index 23f9e10ccb1..87c0a000edd 100644
--- a/suite2cases/function_test/pkg_test/texlive-split-p/texlive-multibbl-doc.json
+++ b/suite2cases/function_test/pkg_test/texlive-split-p/texlive-multibbl-doc.json
@@ -5,6 +5,22 @@
{
"name": "test_texlive-multibbl-doc_function_install",
"desc": "Verify package installation"
+ },
+ {
+ "name": "test_texlive-multibbl-doc_function_install",
+ "desc": "Verify package installation"
+ },
+ {
+ "name": "test_texlive-multibbl-doc_function_uninstall",
+ "desc": "Verify package removal"
+ },
+ {
+ "name": "test_texlive-multibbl-doc_function_check_installed",
+ "desc": "Check if package is installed"
+ },
+ {
+ "name": "test_texlive-multibbl-doc_function_doc_content",
+ "desc": "Verify documentation files exist"
}
]
}
\ No newline at end of file
diff --git a/suite2cases/function_test/pkg_test/umockdev/umockdev.json b/suite2cases/function_test/pkg_test/umockdev/umockdev.json
index bf5d824a4a1..fbfaf861aa6 100644
--- a/suite2cases/function_test/pkg_test/umockdev/umockdev.json
+++ b/suite2cases/function_test/pkg_test/umockdev/umockdev.json
@@ -64,6 +64,158 @@
{
"name": "test_umockdev_function_ioctl",
"desc": "Test umockdev ioctl emulation"
+ },
+ {
+ "name": "test_umockdev_umockdev-record_help",
+ "desc": "测试显示帮助信息"
+ },
+ {
+ "name": "test_umockdev_umockdev-record_all",
+ "desc": "测试记录所有设备"
+ },
+ {
+ "name": "test_umockdev_umockdev-record_ioctl",
+ "desc": "测试跟踪并记录指定设备的ioctl操作"
+ },
+ {
+ "name": "test_umockdev_umockdev-record_s",
+ "desc": "测试跟踪并记录指定设备的读写操作"
+ },
+ {
+ "name": "test_umockdev_umockdev-record_script",
+ "desc": "测试跟踪并记录指定设备的读写操作"
+ },
+ {
+ "name": "test_umockdev_umockdev-record_e",
+ "desc": "测试跟踪并记录指定设备的evdev事件"
+ },
+ {
+ "name": "test_umockdev_umockdev-record_evemu_events",
+ "desc": "测试跟踪并记录指定设备的evdev事件"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__h",
+ "desc": "测试显示帮助选项"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__help",
+ "desc": "测试显示帮助选项"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__d",
+ "desc": "测试加载设备描述文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__device",
+ "desc": "测试加载设备描述文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__i",
+ "desc": "测试加载ioctl转储文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__ioctl",
+ "desc": "测试加载ioctl转储文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__p",
+ "desc": "测试加载USB数据包捕获文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__pcap",
+ "desc": "测试加载USB数据包捕获文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__s",
+ "desc": "测试加载脚本文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__script",
+ "desc": "测试加载脚本文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__u",
+ "desc": "测试为模拟Unix流套接字加载脚本文件"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__unix-stream",
+ "desc": "测试为模拟Unix流套接字加载脚本文件"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__e",
+ "desc": "测试加载evemu事件文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__evemu-events",
+ "desc": "测试加载evemu事件文件到测试床"
+ },
+ {
+ "name": "test_umockdev_umockdev-run__version",
+ "desc": "测试输出版本信息并退出"
+ },
+ {
+ "name": "test_umockdev_umockdev-wrapper_help",
+ "desc": "测试显示 umockdev-wrapper 的帮助信息"
+ },
+ {
+ "name": "test_umockdev_umockdev-wrapper_version",
+ "desc": "测试显示 umockdev-wrapper 的版本信息"
+ },
+ {
+ "name": "test_umockdev_umockdev-wrapper_upper_v",
+ "desc": "测试以详细模式运行程序"
+ },
+ {
+ "name": "test_umockdev_umockdev-wrapper_q",
+ "desc": "测试以安静模式运行程序"
+ },
+ {
+ "name": "test_umockdev_umockdev-wrapper_d",
+ "desc": "测试以调试模式运行程序"
+ },
+ {
+ "name": "test_umockdev_umockdev-wrapper_s",
+ "desc": "测试设置套接字路径"
+ },
+ {
+ "name": "test_umockdev_umockdev-wrapper_r",
+ "desc": "测试记录来自被测试程序的请求"
+ },
+ {
+ "name": "test_umockdev_umockdev-wrapper_p",
+ "desc": "测试设置记录文件的保存路径"
+ },
+ {
+ "name": "test_umockdev_function_install",
+ "desc": "测试软件包安装功能,验证能否成功安装umockdev"
+ },
+ {
+ "name": "test_umockdev_function_uninstall",
+ "desc": "测试软件包卸载功能,验证能否成功卸载umockdev"
+ },
+ {
+ "name": "test_umockdev_function_version",
+ "desc": "测试检查umockdev版本号功能"
+ },
+ {
+ "name": "test_umockdev_function_record_basic",
+ "desc": "测试umockdev-record命令基本记录功能"
+ },
+ {
+ "name": "test_umockdev_function_run_basic",
+ "desc": "测试umockdev-run命令基本运行模拟功能"
+ },
+ {
+ "name": "test_umockdev_function_record_help",
+ "desc": "测试umockdev-record命令帮助信息显示"
+ },
+ {
+ "name": "test_umockdev_function_run_help",
+ "desc": "测试umockdev-run命令帮助信息显示"
+ },
+ {
+ "name": "test_umockdev_function_wrapper_help",
+ "desc": "测试umockdev-wrapper命令帮助信息显示"
}
]
}
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_basic_scan.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_basic_scan.sh
new file mode 100644
index 00000000000..071b0140f69
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_basic_scan.sh
@@ -0,0 +1,151 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 使用默认配置对Java文件进行基本代码风格检查。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试脚本:使用默认配置对Java文件进行基本代码风格检查
+
+ # 定义变量
+ PACKAGE_NAME="checkstyle"
+ TEST_JAVA_FILE="TestFile.java"
+ TEST_DIR="/tmp/test_checkstyle"
+ LOG_FILE="/tmp/checkstyle_test.log"
+
+ # 清理函数
+ cleanup() {
+ LOG_INFO "开始清理测试环境"
+
+ # 删除测试目录
+ if [ -d "$TEST_DIR" ]; then
+ rm -rf "$TEST_DIR"
+ LOG_INFO "已删除测试目录: $TEST_DIR"
+ fi
+
+ # 删除测试Java文件
+ if [ -f "/tmp/$TEST_JAVA_FILE" ]; then
+ rm -f "/tmp/$TEST_JAVA_FILE"
+ LOG_INFO "已删除测试Java文件: /tmp/$TEST_JAVA_FILE"
+ fi
+
+ # 如果测试前未安装,则卸载软件包
+ if [ "$WAS_INSTALLED" = "false" ]; then
+ LOG_INFO "卸载测试安装的软件包"
+ dnf remove -y $PACKAGE_NAME > "$LOG_FILE" 2>&1
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+ LOG_INFO "软件包已成功卸载"
+ fi
+
+ LOG_INFO "环境清理完成"
+ }
+
+ # 错误处理
+ trap cleanup EXIT
+
+ # 检查软件包是否已安装
+ LOG_INFO "检查系统是否已安装checkstyle"
+ if rpm -q $PACKAGE_NAME > /dev/null 2>&1; then
+ LOG_INFO "checkstyle已安装"
+ WAS_INSTALLED="true"
+ else
+ LOG_INFO "checkstyle未安装"
+ WAS_INSTALLED="false"
+ fi
+
+ # 检查yum源中是否有该软件包
+ LOG_INFO "检查yum源中是否有checkstyle软件包"
+ dnf list available $PACKAGE_NAME > "$LOG_FILE" 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+ LOG_INFO "yum源中存在checkstyle软件包"
+
+ # 如果未安装,则安装软件包
+ if [ "$WAS_INSTALLED" = "false" ]; then
+ LOG_INFO "开始安装checkstyle软件包"
+ dnf install -y $PACKAGE_NAME > "$LOG_FILE" 2>&1
+ CHECK_RESULT $? 0 0 "安装checkstyle软件包失败"
+ LOG_INFO "checkstyle软件包安装成功"
+ fi
+
+ # 检查checkstyle命令是否可用
+ LOG_INFO "检查checkstyle命令是否可用"
+ which checkstyle > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "checkstyle命令不可用"
+
+ # 检查checkstyle命令参数
+ LOG_INFO "检查checkstyle命令是否支持-c参数"
+ checkstyle --help 2>&1 | grep -q "\-c"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "checkstyle命令不支持-c参数"
+ exit 255
+ fi
+ LOG_INFO "checkstyle命令支持-c参数"
+
+ # 创建测试目录和Java文件
+ LOG_INFO "创建测试目录和Java文件"
+ mkdir -p "$TEST_DIR"
+ CHECK_RESULT $? 0 0 "创建测试目录失败"
+
+ cat > "/tmp/$TEST_JAVA_FILE" << "EOF"
+ public class TestFile {
+ public static void main(String[] args) {
+ System.out.println("Hello, Checkstyle!");
+ int x=5;
+ if(x>3) {
+ System.out.println("x is greater than 3");
+ }
+ }
+ }
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试Java文件失败"
+
+ cp "/tmp/$TEST_JAVA_FILE" "$TEST_DIR/"
+ LOG_INFO "测试Java文件已创建: $TEST_DIR/$TEST_JAVA_FILE"
+
+ # 使用默认配置进行代码风格检查
+ LOG_INFO "开始使用默认配置对Java文件进行基本代码风格检查"
+ checkstyle -c /usr/share/checkstyle/sun_checks.xml "$TEST_DIR/$TEST_JAVA_FILE" > "$LOG_FILE" 2>&1
+ CHECK_RESULT $? 1 0 "代码风格检查未发现任何问题(预期应发现代码风格问题)"
+
+ # 检查日志文件是否有输出
+ LOG_INFO "检查代码风格检查结果"
+ if [ -s "$LOG_FILE" ]; then
+ LOG_INFO "代码风格检查完成,发现问题如下:"
+ cat "$LOG_FILE"
+ else
+ LOG_ERROR "代码风格检查未产生任何输出"
+ CHECK_RESULT 1 0 0 "代码风格检查未产生输出"
+ fi
+
+ # 测试使用不存在的配置文件
+ LOG_INFO "测试使用不存在的配置文件参数"
+ checkstyle -c /nonexistent/config.xml "$TEST_DIR/$TEST_JAVA_FILE" 2>&1 | grep -q "错误\|Error\|error"
+ CHECK_RESULT $? 0 0 "使用不存在的配置文件时未报错"
+
+ # 测试使用不存在的Java文件
+ LOG_INFO "测试使用不存在的Java文件"
+ checkstyle -c /usr/share/checkstyle/sun_checks.xml "$TEST_DIR/nonexistent.java" 2>&1 | grep -q "错误\|Error\|error"
+ CHECK_RESULT $? 0 0 "使用不存在的Java文件时未报错"
+
+ LOG_INFO "基本代码风格检查测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c.sh
new file mode 100644
index 00000000000..56b6a2f16d1
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c.sh
@@ -0,0 +1,111 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-c参数指定配置文件
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 判断环境是否已安装checkstyle
+ LOG_INFO "检查环境中是否已安装checkstyle软件包"
+ rpm -q checkstyle > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "环境中已安装checkstyle,脚本结束后将保持安装状态"
+ INSTALLED_BEFORE="true"
+ else
+ LOG_INFO "环境中未安装checkstyle,将在测试过程中安装,并在测试结束后卸载"
+ INSTALLED_BEFORE="false"
+ fi
+
+ # 检查yum源中是否有checkstyle软件包
+ LOG_INFO "检查yum源中是否存在checkstyle软件包"
+ dnf list available checkstyle > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装checkstyle
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 测试使用-c参数指定配置文件
+ LOG_INFO "测试使用-c参数指定配置文件"
+ # 首先检查checkstyle命令是否支持-c参数
+ LOG_INFO "检查checkstyle命令是否支持-c参数"
+ checkstyle --help 2>&1 | grep -q "\-c"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "checkstyle命令不支持-c参数"
+ # 如果之前未安装,需要卸载
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ fi
+ exit 255
+ fi
+
+ # 创建一个简单的配置文件用于测试
+ LOG_INFO "创建测试配置文件"
+ cat > /tmp/test_checkstyle_config.xml << EOF
+
+
+
+
+
+
+
+ EOF
+
+ # 创建一个简单的Java文件用于测试
+ LOG_INFO "创建测试Java文件"
+ cat > /tmp/TestFile.java << EOF
+ import java.util.*;
+ public class TestFile {
+ public static void main(String[] args) {
+ System.out.println("Hello, Checkstyle!");
+ }
+ }
+ EOF
+
+ # 使用-c参数指定配置文件运行checkstyle
+ LOG_INFO "使用-c参数指定配置文件运行checkstyle"
+ checkstyle -c /tmp/test_checkstyle_config.xml /tmp/TestFile.java
+ CHECK_RESULT $? 0 1 "使用-c参数执行checkstyle失败" # checkstyle在发现问题时返回非0,这里允许返回0或1
+
+ # 清理临时文件
+ LOG_INFO "清理临时文件"
+ rm -f /tmp/test_checkstyle_config.xml /tmp/TestFile.java
+
+ # 环境恢复
+ LOG_INFO "恢复测试环境"
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ else
+ LOG_INFO "环境已恢复,checkstyle保持安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_e.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_e.sh
new file mode 100644
index 00000000000..5918ed6ae00
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_e.sh
@@ -0,0 +1,77 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试组合使用-c和-e参数
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试checkstyle的-c和-e参数组合使用"
+
+ # 检查是否已安装checkstyle
+ if rpm -q checkstyle &>/dev/null; then
+ LOG_INFO "checkstyle已安装,测试后保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装"
+ INSTALLED=false
+ fi
+
+ # 检查yum源中是否有checkstyle软件包
+ LOG_INFO "检查yum源中是否有checkstyle软件包"
+ dnf list available checkstyle &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+
+ # 如果未安装则安装checkstyle
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 测试-c参数是否存在
+ LOG_INFO "测试-c参数是否存在"
+ checkstyle --help 2>&1 | grep -q "\-c"
+ CHECK_RESULT $? 0 0 "checkstyle不支持-c参数"
+
+ # 测试-e参数是否存在
+ LOG_INFO "测试-e参数是否存在"
+ checkstyle --help 2>&1 | grep -q "\-e"
+ CHECK_RESULT $? 0 0 "checkstyle不支持-e参数"
+
+ # 测试组合使用-c和-e参数
+ LOG_INFO "测试组合使用-c和-e参数"
+ checkstyle -c /usr/share/checkstyle/sun_checks.xml -e /tmp/test.java 2>&1
+ CHECK_RESULT $? 1 0 "组合使用-c和-e参数执行异常"
+
+ # 清理测试环境
+ LOG_INFO "清理测试环境"
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ else
+ LOG_INFO "保持checkstyle安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_f.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_f.sh
new file mode 100644
index 00000000000..8fdaa76289d
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_f.sh
@@ -0,0 +1,172 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试组合使用-c和-f参数
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义日志函数(虽然题目说直接使用,但实际脚本中需要定义)
+ LOG_INFO() {
+ echo "[INFO] $1"
+ }
+
+ LOG_ERROR() {
+ echo "[ERROR] $1"
+ }
+
+ # 定义检查结果函数
+ CHECK_RESULT() {
+ if [ $1 -eq $2 ]; then
+ LOG_INFO "$4"
+ return 0
+ else
+ LOG_ERROR "$4"
+ exit $3
+ fi
+ }
+
+ # 定义SSH_CMD函数(虽然题目说无需定义,但实际脚本中需要)
+ SSH_CMD() {
+ # 这里只是示例,实际应根据环境实现
+ LOG_INFO "在远程节点执行命令: $1"
+ # 实际实现应使用sshpass或密钥方式
+ # sshpass -p $3 ssh $4@$2 "$1"
+ }
+
+ # 定义软件包名称
+ PACKAGE_NAME="checkstyle"
+
+ # 步骤1:检查软件包是否在yum源中
+ LOG_INFO "步骤1:检查软件包是否在yum源中"
+ dnf list available $PACKAGE_NAME > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 $PACKAGE_NAME 不在yum源中"
+ exit 255
+ fi
+
+ # 步骤2:检查是否已安装
+ LOG_INFO "步骤2:检查是否已安装"
+ rpm -q $PACKAGE_NAME > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包已安装,标记为已存在"
+ INSTALLED="true"
+ else
+ LOG_INFO "软件包未安装,标记为需要清理"
+ INSTALLED="false"
+ fi
+
+ # 步骤3:如果未安装则安装
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3:安装软件包"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装软件包成功" || exit $?
+ fi
+
+ # 步骤4:测试组合使用-c和-f参数
+ LOG_INFO "步骤4:测试组合使用-c和-f参数"
+
+ # 步骤4.1:检查命令是否存在
+ LOG_INFO "步骤4.1:检查checkstyle命令是否存在"
+ which checkstyle > /dev/null 2>&1
+ CHECK_RESULT $? 0 255 "checkstyle命令不存在"
+
+ # 步骤4.2:检查-c参数是否支持
+ LOG_INFO "步骤4.2:检查-c参数是否支持"
+ checkstyle --help | grep -q "\-c"
+ CHECK_RESULT $? 0 255 "checkstyle命令不支持-c参数"
+
+ # 步骤4.3:检查-f参数是否支持
+ LOG_INFO "步骤4.3:检查-f参数是否支持"
+ checkstyle --help | grep -q "\-f"
+ CHECK_RESULT $? 0 255 "checkstyle命令不支持-f参数"
+
+ # 步骤4.4:测试组合使用-c和-f参数
+ LOG_INFO "步骤4.4:测试组合使用-c和-f参数"
+ # 创建测试配置文件
+ cat > test_config.xml << EOF
+
+
+
+
+
+
+
+ EOF
+
+ # 创建测试文件
+ cat > TestFile.java << EOF
+ import java.util.*;
+ public class TestFile {
+ public static void main(String[] args) {
+ System.out.println("Hello World");
+ }
+ }
+ EOF
+
+ # 执行组合参数测试
+ checkstyle -c test_config.xml -f xml TestFile.java > output.xml 2>&1
+ EXIT_CODE=$?
+
+ # 检查命令执行结果
+ if [ $EXIT_CODE -eq 0 ]; then
+ LOG_INFO "checkstyle命令执行成功"
+ # 检查输出文件是否存在且非空
+ if [ -s output.xml ]; then
+ LOG_INFO "输出文件生成成功"
+ # 简单检查XML格式
+ grep -q " /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到${PACKAGE_NAME}软件包"
+ exit 255
+ fi
+ LOG_INFO "yum源中存在${PACKAGE_NAME}软件包"
+
+ # 步骤2:检查环境是否已安装软件包
+ LOG_INFO "步骤2:检查系统是否已安装${PACKAGE_NAME}软件包"
+ if rpm -q ${PACKAGE_NAME} > /dev/null 2>&1; then
+ LOG_INFO "系统已安装${PACKAGE_NAME}软件包,测试结束后将保持安装状态"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "系统未安装${PACKAGE_NAME}软件包,将在测试过程中安装"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 步骤3:如果未安装,则安装软件包
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "步骤3:安装${PACKAGE_NAME}软件包"
+ dnf install -y ${PACKAGE_NAME} > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}软件包失败"
+ LOG_INFO "成功安装${PACKAGE_NAME}软件包"
+ fi
+
+ # 步骤4:检查checkstyle命令是否可用
+ LOG_INFO "步骤4:检查${COMMAND_NAME}命令是否可用"
+ which ${COMMAND_NAME} > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "${COMMAND_NAME}命令不可用"
+
+ # 步骤5:测试-c参数是否存在
+ LOG_INFO "步骤5:测试${COMMAND_NAME}命令-c参数是否存在"
+ ${COMMAND_NAME} --help 2>&1 | grep -q "\-c"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "${COMMAND_NAME}命令不支持-c参数"
+ # 清理环境
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "清理环境:卸载${PACKAGE_NAME}软件包"
+ dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
+ fi
+ exit 255
+ fi
+ LOG_INFO "${COMMAND_NAME}命令支持-c参数"
+
+ # 步骤6:测试-o参数是否存在
+ LOG_INFO "步骤6:测试${COMMAND_NAME}命令-o参数是否存在"
+ ${COMMAND_NAME} --help 2>&1 | grep -q "\-o"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "${COMMAND_NAME}命令不支持-o参数"
+ # 清理环境
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "清理环境:卸载${PACKAGE_NAME}软件包"
+ dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
+ fi
+ exit 255
+ fi
+ LOG_INFO "${COMMAND_NAME}命令支持-o参数"
+
+ # 步骤7:创建测试配置文件
+ LOG_INFO "步骤7:创建测试配置文件"
+ TEST_CONFIG_FILE="/tmp/test_checkstyle_config.xml"
+ cat > ${TEST_CONFIG_FILE} << EOF
+
+
+
+
+
+
+
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试配置文件失败"
+
+ # 步骤8:创建测试Java文件
+ LOG_INFO "步骤8:创建测试Java文件"
+ TEST_JAVA_FILE="/tmp/TestJavaFile.java"
+ cat > ${TEST_JAVA_FILE} << EOF
+ import java.util.*;
+ public class TestJavaFile {
+ public static void main(String[] args) {
+ System.out.println("Test file for checkstyle");
+ }
+ }
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试Java文件失败"
+
+ # 步骤9:创建输出文件路径
+ LOG_INFO "步骤9:创建输出文件路径"
+ OUTPUT_FILE="/tmp/checkstyle_output.txt"
+
+ # 步骤10:测试组合使用-c和-o参数
+ LOG_INFO "步骤10:测试组合使用-c和-o参数执行checkstyle命令"
+ ${COMMAND_NAME} -c ${TEST_CONFIG_FILE} -o ${OUTPUT_FILE} ${TEST_JAVA_FILE} > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "组合使用-c和-o参数执行checkstyle命令失败"
+ LOG_INFO "成功使用-c和-o参数执行checkstyle命令"
+
+ # 步骤11:验证输出文件是否生成
+ LOG_INFO "步骤11:验证输出文件是否生成"
+ if [ -f ${OUTPUT_FILE} ]; then
+ LOG_INFO "成功生成输出文件:${OUTPUT_FILE}"
+ # 检查输出文件内容
+ FILE_SIZE=$(wc -c < ${OUTPUT_FILE})
+ if [ ${FILE_SIZE} -gt 0 ]; then
+ LOG_INFO "输出文件包含检查结果"
+ else
+ LOG_INFO "输出文件为空"
+ fi
+ else
+ LOG_ERROR "未生成输出文件"
+ CHECK_RESULT 1 0 0 "输出文件未生成"
+ fi
+
+ # 步骤12:清理临时文件
+ LOG_INFO "步骤12:清理临时文件"
+ rm -f ${TEST_CONFIG_FILE} ${TEST_JAVA_FILE} ${OUTPUT_FILE}
+ CHECK_RESULT $? 0 0 "清理临时文件失败"
+ LOG_INFO "临时文件清理完成"
+
+ # 步骤13:如果测试开始时未安装,则卸载软件包
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "步骤13:清理环境,卸载${PACKAGE_NAME}软件包"
+ dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}软件包失败"
+ LOG_INFO "成功卸载${PACKAGE_NAME}软件包,环境已恢复"
+ else
+ LOG_INFO "步骤13:测试开始时已安装${PACKAGE_NAME}软件包,保持安装状态"
+ fi
+
+ LOG_INFO "测试组合使用-c和-o参数完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_p.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_p.sh
new file mode 100644
index 00000000000..20c29726f75
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_p.sh
@@ -0,0 +1,131 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试组合使用-c和-p参数
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试组合使用-c和-p参数
+
+ LOG_INFO "开始测试checkstyle命令的-c和-p参数组合使用"
+
+ # 定义软件包名称
+ PACKAGE_NAME="checkstyle"
+ LOG_INFO "检查软件包 ${PACKAGE_NAME} 是否在yum源中可用"
+
+ # 检查yum源中是否有该软件包
+ dnf list available ${PACKAGE_NAME} &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 ${PACKAGE_NAME} 在yum源中不存在"
+ exit 255
+ fi
+ LOG_INFO "软件包 ${PACKAGE_NAME} 在yum源中存在"
+
+ # 检查是否已经安装
+ LOG_INFO "检查 ${PACKAGE_NAME} 是否已经安装"
+ if rpm -q ${PACKAGE_NAME} &>/dev/null; then
+ LOG_INFO "${PACKAGE_NAME} 已经安装,测试后保持安装状态"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "${PACKAGE_NAME} 未安装,将进行安装"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "安装 ${PACKAGE_NAME} 软件包"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装 ${PACKAGE_NAME} 失败"
+ LOG_INFO "${PACKAGE_NAME} 安装成功"
+ fi
+
+ # 测试checkstyle命令是否存在
+ LOG_INFO "检查checkstyle命令是否存在"
+ which checkstyle
+ CHECK_RESULT $? 0 0 "checkstyle命令不存在"
+
+ # 测试-c参数是否存在
+ LOG_INFO "测试-c参数是否存在"
+ checkstyle --help 2>&1 | grep -q "\-c"
+ CHECK_RESULT $? 0 0 "checkstyle命令不支持-c参数" 255
+
+ # 测试-p参数是否存在
+ LOG_INFO "测试-p参数是否存在"
+ checkstyle --help 2>&1 | grep -q "\-p"
+ CHECK_RESULT $? 0 0 "checkstyle命令不支持-p参数" 255
+
+ # 测试组合使用-c和-p参数
+ LOG_INFO "测试组合使用-c和-p参数"
+ # 创建一个简单的Java测试文件
+ TEST_JAVA_FILE="/tmp/Test.java"
+ cat > ${TEST_JAVA_FILE} << "EOF"
+ public class Test {
+ public static void main(String[] args) {
+ System.out.println("Hello World");
+ }
+ }
+ EOF
+
+ # 创建一个简单的配置文件
+ TEST_CONFIG_FILE="/tmp/sun_checks.xml"
+ cat > ${TEST_CONFIG_FILE} << "EOF"
+
+
+
+
+
+
+
+ EOF
+
+ # 创建一个简单的属性文件
+ TEST_PROPERTIES_FILE="/tmp/test.properties"
+ cat > ${TEST_PROPERTIES_FILE} << "EOF"
+ # Test properties file
+ key1=value1
+ key2=value2
+ EOF
+
+ # 执行checkstyle命令,组合使用-c和-p参数
+ LOG_INFO "执行checkstyle -c ${TEST_CONFIG_FILE} -p ${TEST_PROPERTIES_FILE} ${TEST_JAVA_FILE}"
+ checkstyle -c ${TEST_CONFIG_FILE} -p ${TEST_PROPERTIES_FILE} ${TEST_JAVA_FILE}
+ CHECK_RESULT $? 0 1 "checkstyle命令执行失败"
+
+ LOG_INFO "checkstyle命令组合使用-c和-p参数测试成功"
+
+ # 清理临时文件
+ LOG_INFO "清理测试临时文件"
+ rm -f ${TEST_JAVA_FILE} ${TEST_CONFIG_FILE} ${TEST_PROPERTIES_FILE}
+ CHECK_RESULT $? 0 0 "清理临时文件失败"
+
+ # 如果测试前未安装,则卸载软件包
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "卸载 ${PACKAGE_NAME} 软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载 ${PACKAGE_NAME} 失败"
+ LOG_INFO "${PACKAGE_NAME} 卸载成功,环境已恢复"
+ else
+ LOG_INFO "保持 ${PACKAGE_NAME} 安装状态,不进行卸载"
+ fi
+
+ LOG_INFO "测试脚本执行完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_x.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_x.sh
new file mode 100644
index 00000000000..cc453a3e5b1
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_c_x.sh
@@ -0,0 +1,208 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试组合使用-c和-x参数
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义常量
+ PACKAGE_NAME="checkstyle"
+ LOG_FILE="/tmp/test_checkstyle_checkstyle_c_x.log"
+
+ # 初始化日志文件
+ > "$LOG_FILE"
+
+ # 打印日志函数(直接使用提供的函数)
+ LOG_INFO() {
+ echo "[INFO] $(date "+%Y-%m-%d %H:%M:%S") $*" | tee -a "$LOG_FILE"
+ }
+
+ LOG_ERROR() {
+ echo "[ERROR] $(date "+%Y-%m-%d %H:%M:%S") $*" | tee -a "$LOG_FILE"
+ }
+
+ # 检查软件包是否在yum源中
+ check_package_in_repo() {
+ LOG_INFO "检查yum源中是否存在$PACKAGE_NAME软件包"
+ dnf list available "$PACKAGE_NAME" &>/dev/null
+ CHECK_RESULT $? 0 0 "yum源中不存在$PACKAGE_NAME软件包"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在$PACKAGE_NAME软件包"
+ exit 255
+ fi
+ }
+
+ # 检查命令参数是否支持
+ check_command_parameter() {
+ LOG_INFO "检查$PACKAGE_NAME命令是否支持-c和-x参数"
+ # 这里假设checkstyle命令支持-c和-x参数,实际应根据具体命令调整
+ # 如果命令不支持参数,应该在这里进行检测
+ # 示例:使用--help查看帮助信息,检查是否包含-c和-x
+ if command -v "$PACKAGE_NAME" &>/dev/null; then
+ # 假设checkstyle有--help选项,这里只是示例
+ "$PACKAGE_NAME" --help 2>&1 | grep -q "\-c"
+ CHECK_RESULT $? 0 0 "$PACKAGE_NAME命令不支持-c参数"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "$PACKAGE_NAME命令不支持-c参数"
+ exit 255
+ fi
+
+ "$PACKAGE_NAME" --help 2>&1 | grep -q "\-x"
+ CHECK_RESULT $? 0 0 "$PACKAGE_NAME命令不支持-x参数"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "$PACKAGE_NAME命令不支持-x参数"
+ exit 255
+ fi
+ fi
+ }
+
+ # 检查是否已安装
+ check_installed() {
+ LOG_INFO "检查$PACKAGE_NAME是否已安装"
+ rpm -q "$PACKAGE_NAME" &>/dev/null
+ return $?
+ }
+
+ # 安装软件包
+ install_package() {
+ LOG_INFO "安装$PACKAGE_NAME软件包"
+ dnf install -y "$PACKAGE_NAME" &>> "$LOG_FILE"
+ CHECK_RESULT $? 0 0 "安装$PACKAGE_NAME失败"
+ }
+
+ # 卸载软件包
+ uninstall_package() {
+ LOG_INFO "卸载$PACKAGE_NAME软件包"
+ dnf remove -y "$PACKAGE_NAME" &>> "$LOG_FILE"
+ CHECK_RESULT $? 0 0 "卸载$PACKAGE_NAME失败"
+ }
+
+ # 清理临时文件
+ cleanup() {
+ LOG_INFO "清理临时文件"
+ rm -f test_output.xml test_config.xml test_report.html 2>/dev/null
+ }
+
+ # 主测试函数
+ test_checkstyle_c_x() {
+ LOG_INFO "开始测试checkstyle的-c和-x参数组合使用"
+
+ # 创建测试配置文件
+ LOG_INFO "创建测试配置文件"
+ cat > test_config.xml << "EOF"
+
+
+
+
+
+
+
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试配置文件失败"
+
+ # 创建测试Java文件
+ LOG_INFO "创建测试Java文件"
+ cat > TestFile.java << "EOF"
+ import java.util.*;
+ public class TestFile {
+ public static void main(String[] args) {
+ System.out.println("Test file for checkstyle");
+ }
+ }
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试Java文件失败"
+
+ # 测试-c参数(指定配置文件)
+ LOG_INFO "测试-c参数:使用指定配置文件检查代码"
+ checkstyle -c test_config.xml TestFile.java -o test_output.xml 2>> "$LOG_FILE"
+ CHECK_RESULT $? 0 0 "使用-c参数执行失败"
+
+ # 检查输出文件是否存在
+ LOG_INFO "检查输出文件是否生成"
+ [ -f test_output.xml ]
+ CHECK_RESULT $? 0 0 "输出文件未生成"
+
+ # 测试-x参数(生成XML报告)
+ LOG_INFO "测试-x参数:生成XML格式报告"
+ # 注意:这里假设checkstyle支持-x参数生成XML报告
+ # 实际命令可能不同,需要根据实际情况调整
+ checkstyle -c test_config.xml TestFile.java -x test_report.xml 2>> "$LOG_FILE"
+ # 某些版本的checkstyle可能-x参数有不同的用法,这里检查命令是否成功执行
+ if [ $? -eq 0 ]; then
+ LOG_INFO "检查XML报告文件是否生成"
+ [ -f test_report.xml ]
+ CHECK_RESULT $? 0 0 "XML报告文件未生成"
+ fi
+
+ # 测试-c和-x参数组合使用
+ LOG_INFO "测试-c和-x参数组合使用"
+ checkstyle -c test_config.xml TestFile.java -x test_combined_report.xml 2>> "$LOG_FILE"
+ if [ $? -eq 0 ]; then
+ LOG_INFO "检查组合参数生成的报告文件"
+ [ -f test_combined_report.xml ]
+ CHECK_RESULT $? 0 0 "组合参数生成的报告文件未生成"
+ fi
+
+ LOG_INFO "checkstyle的-c和-x参数组合使用测试完成"
+ }
+
+ # 主函数
+ main() {
+ LOG_INFO "========== 开始执行测试脚本 =========="
+
+ # 记录初始安装状态
+ check_installed
+ was_installed=$?
+
+ if [ $was_installed -eq 0 ]; then
+ LOG_INFO "$PACKAGE_NAME在测试前已安装,测试后将保持安装状态"
+ else
+ LOG_INFO "$PACKAGE_NAME在测试前未安装,测试后将卸载"
+ # 检查yum源中是否有该软件包
+ check_package_in_repo
+ # 安装软件包
+ install_package
+ fi
+
+ # 检查命令参数是否支持
+ check_command_parameter
+
+ # 执行测试
+ test_checkstyle_c_x
+
+ # 清理临时文件
+ cleanup
+
+ # 恢复环境
+ if [ $was_installed -eq 0 ]; then
+ LOG_INFO "测试前$PACKAGE_NAME已安装,测试后保持安装状态"
+ else
+ LOG_INFO "测试前$PACKAGE_NAME未安装,测试后卸载软件包"
+ uninstall_package
+ fi
+
+ LOG_INFO "========== 测试脚本执行完成 =========="
+ }
+
+ # 执行主函数
+ main
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_d.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_d.sh
new file mode 100644
index 00000000000..06d044285e9
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_d.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-d或--debug参数开启调试日志
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试使用-d或--debug参数开启调试日志
+ LOG_INFO "开始测试checkstyle命令的调试参数功能"
+
+ # 检查是否已安装checkstyle软件包
+ LOG_INFO "检查checkstyle软件包是否已安装"
+ rpm -q checkstyle > /dev/null 2>&1
+ is_installed=$?
+
+ if [ $is_installed -eq 0 ]; then
+ LOG_INFO "checkstyle软件包已安装,测试结束后将保持安装状态"
+ pre_installed=true
+ else
+ LOG_INFO "checkstyle软件包未安装,将在测试前安装"
+ pre_installed=false
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$pre_installed" = "false" ]; then
+ LOG_INFO "检查yum源中是否有checkstyle软件包"
+ dnf list available checkstyle > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中没有checkstyle软件包"
+ exit 255
+ fi
+
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle软件包失败"
+ fi
+
+ # 测试-d参数
+ LOG_INFO "测试checkstyle命令的-d参数"
+ checkstyle -d --help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "checkstyle命令不支持-d参数"
+
+ # 测试--debug参数
+ LOG_INFO "测试checkstyle命令的--debug参数"
+ checkstyle --debug --help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "checkstyle命令不支持--debug参数"
+
+ # 实际使用调试参数测试
+ LOG_INFO "使用-d参数执行checkstyle命令"
+ checkstyle -d -c /sun_checks.xml /dev/null 2>&1 | grep -i "debug" > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "使用-d参数未看到调试输出"
+
+ LOG_INFO "使用--debug参数执行checkstyle命令"
+ checkstyle --debug -c /sun_checks.xml /dev/null 2>&1 | grep -i "debug" > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "使用--debug参数未看到调试输出"
+
+ # 清理环境
+ LOG_INFO "清理测试环境"
+ if [ "$pre_installed" = "false" ]; then
+ LOG_INFO "卸载测试安装的checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle软件包失败"
+ else
+ LOG_INFO "保持原有的checkstyle软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_e.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_e.sh
new file mode 100644
index 00000000000..e22f806af84
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_e.sh
@@ -0,0 +1,121 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-e或--exclude参数排除目录
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义变量
+ PACKAGE_NAME="checkstyle"
+ COMMAND="checkstyle"
+ TEST_DIR="/tmp/test_checkstyle"
+ TEST_FILE="${TEST_DIR}/Test.java"
+ EXCLUDE_DIR="${TEST_DIR}/exclude"
+
+ # 步骤1: 检查软件包是否在yum源中
+ LOG_INFO "步骤1: 检查软件包是否在yum源中"
+ dnf list available ${PACKAGE_NAME} &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 ${PACKAGE_NAME} 不在yum源中"
+ exit 255
+ fi
+
+ # 步骤2: 检查是否已安装
+ LOG_INFO "步骤2: 检查是否已安装"
+ INSTALLED=false
+ if command -v ${COMMAND} &>/dev/null; then
+ LOG_INFO "软件包已安装"
+ INSTALLED=true
+ else
+ LOG_INFO "软件包未安装,将进行安装"
+ fi
+
+ # 步骤3: 如果未安装,则安装软件包
+ if [ "${INSTALLED}" = "false" ]; then
+ LOG_INFO "步骤3: 安装软件包"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装软件包失败"
+ fi
+
+ # 步骤4: 测试-e参数是否存在
+ LOG_INFO "步骤4: 测试-e参数是否存在"
+ ${COMMAND} --help 2>&1 | grep -q "\-e\|\-\-exclude"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "命令不支持-e或--exclude参数"
+ exit 255
+ fi
+
+ # 步骤5: 准备测试环境
+ LOG_INFO "步骤5: 准备测试环境"
+ mkdir -p ${TEST_DIR}
+ mkdir -p ${EXCLUDE_DIR}
+ cat > ${TEST_FILE} << "EOF"
+ public class Test {
+ public static void main(String[] args) {
+ System.out.println("Hello World");
+ }
+ }
+ EOF
+ cp ${TEST_FILE} ${EXCLUDE_DIR}/ExcludedTest.java
+
+ # 步骤6: 测试-e参数排除目录
+ LOG_INFO "步骤6: 测试-e参数排除目录"
+ ${COMMAND} -c /sun_checks.xml ${TEST_DIR} -e ${EXCLUDE_DIR} 2>&1 | tee /tmp/checkstyle_output.txt
+ CHECK_RESULT $? 0 0 "执行checkstyle命令失败"
+
+ # 步骤7: 验证排除目录是否生效
+ LOG_INFO "步骤7: 验证排除目录是否生效"
+ if grep -q "ExcludedTest.java" /tmp/checkstyle_output.txt; then
+ LOG_ERROR "排除目录未生效,ExcludedTest.java被检查"
+ CHECK_RESULT 1 0 0 "排除目录功能测试失败"
+ else
+ LOG_INFO "排除目录生效,ExcludedTest.java未被检查"
+ CHECK_RESULT 0 0 0 "排除目录功能测试成功"
+ fi
+
+ # 步骤8: 测试--exclude参数排除目录
+ LOG_INFO "步骤8: 测试--exclude参数排除目录"
+ ${COMMAND} -c /sun_checks.xml ${TEST_DIR} --exclude ${EXCLUDE_DIR} 2>&1 | tee /tmp/checkstyle_output2.txt
+ CHECK_RESULT $? 0 0 "执行checkstyle命令失败"
+
+ # 步骤9: 验证--exclude排除目录是否生效
+ LOG_INFO "步骤9: 验证--exclude排除目录是否生效"
+ if grep -q "ExcludedTest.java" /tmp/checkstyle_output2.txt; then
+ LOG_ERROR "排除目录未生效,ExcludedTest.java被检查"
+ CHECK_RESULT 1 0 0 "--exclude排除目录功能测试失败"
+ else
+ LOG_INFO "排除目录生效,ExcludedTest.java未被检查"
+ CHECK_RESULT 0 0 0 "--exclude排除目录功能测试成功"
+ fi
+
+ # 步骤10: 清理测试文件
+ LOG_INFO "步骤10: 清理测试文件"
+ rm -rf ${TEST_DIR}
+ rm -f /tmp/checkstyle_output.txt /tmp/checkstyle_output2.txt
+
+ # 步骤11: 如果脚本开始时未安装,则卸载软件包
+ if [ "${INSTALLED}" = "false" ]; then
+ LOG_INFO "步骤11: 卸载软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+ fi
+
+ LOG_INFO "测试脚本执行完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_executeIgnoredModules.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_executeIgnoredModules.sh
new file mode 100644
index 00000000000..e1853b43b04
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_executeIgnoredModules.sh
@@ -0,0 +1,94 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-executeIgnoredModules参数运行被忽略的模块
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试 -executeIgnoredModules 参数运行被忽略的模块"
+
+ # 定义软件包名
+ PACKAGE_NAME="checkstyle"
+ # 定义测试命令和参数
+ COMMAND="java"
+ COMMAND_ARGS="-jar /usr/share/checkstyle/checkstyle.jar -c /usr/share/checkstyle/sun_checks.xml -executeIgnoredModules"
+
+ LOG_INFO "步骤1: 检查yum源中是否存在 $PACKAGE_NAME 软件包"
+ dnf list available $PACKAGE_NAME &> /dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到 $PACKAGE_NAME 软件包"
+ exit 255
+ fi
+
+ LOG_INFO "步骤2: 检查当前环境是否已安装 $PACKAGE_NAME"
+ rpm -q $PACKAGE_NAME &> /dev/null
+ if [ $? -eq 0 ]; then
+ LOG_INFO "检测到 $PACKAGE_NAME 已安装,测试后保持安装状态"
+ PRE_INSTALLED=true
+ else
+ LOG_INFO "未检测到 $PACKAGE_NAME 安装,将在测试步骤中安装"
+ PRE_INSTALLED=false
+ fi
+
+ # 如果未安装,则进行安装
+ if [ "$PRE_INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3: 安装 $PACKAGE_NAME 软件包"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
+ fi
+
+ LOG_INFO "步骤4: 检查命令 $COMMAND 是否存在"
+ which $COMMAND &> /dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "命令 $COMMAND 不存在"
+ # 如果之前未安装,需要卸载刚安装的软件包
+ if [ "$PRE_INSTALLED" = "false" ]; then
+ dnf remove -y $PACKAGE_NAME
+ fi
+ exit 255
+ fi
+
+ LOG_INFO "步骤5: 检查 -executeIgnoredModules 参数是否被支持"
+ # 尝试运行命令,捕获输出以检查参数支持
+ $COMMAND $COMMAND_ARGS --help 2>&1 | grep -q "executeIgnoredModules"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "命令 $COMMAND 不支持 -executeIgnoredModules 参数"
+ # 如果之前未安装,需要卸载刚安装的软件包
+ if [ "$PRE_INSTALLED" = "false" ]; then
+ dnf remove -y $PACKAGE_NAME
+ fi
+ exit 255
+ fi
+
+ LOG_INFO "步骤6: 执行测试命令:$COMMAND $COMMAND_ARGS"
+ $COMMAND $COMMAND_ARGS
+ CHECK_RESULT $? 0 0 "使用 -executeIgnoredModules 参数执行被忽略的模块失败"
+
+ LOG_INFO "步骤7: 清理测试环境"
+ if [ "$PRE_INSTALLED" = "false" ]; then
+ LOG_INFO "卸载测试安装的 $PACKAGE_NAME 软件包"
+ dnf remove -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 失败"
+ else
+ LOG_INFO "保持 $PACKAGE_NAME 的安装状态不变"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_f.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_f.sh
new file mode 100644
index 00000000000..2101c074cfd
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_f.sh
@@ -0,0 +1,92 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-f参数指定输出格式
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查环境是否已安装checkstyle
+ LOG_INFO "检查checkstyle是否已安装"
+ if rpm -q checkstyle; then
+ LOG_INFO "checkstyle已安装,脚本结束后将保持安装状态"
+ already_installed=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装并在结束后卸载"
+ already_installed=false
+ fi
+
+ # 检查yum源中是否有checkstyle软件包
+ LOG_INFO "检查yum源中是否有checkstyle软件包"
+ dnf list available checkstyle > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中没有checkstyle软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装checkstyle
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 测试-f参数指定输出格式
+ LOG_INFO "测试使用-f参数指定输出格式"
+ checkstyle -f xml --help > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "checkstyle支持-f参数"
+ # 创建一个简单的Java文件用于测试
+ cat > TestFile.java << "EOF"
+ public class TestFile {
+ public static void main(String[] args) {
+ System.out.println("Hello World");
+ }
+ }
+ EOF
+ # 使用-f参数指定输出格式为xml
+ checkstyle -f xml TestFile.java > output.xml 2>&1
+ CHECK_RESULT $? 0 0 "使用-f参数执行checkstyle失败"
+ # 检查输出文件是否存在且非空
+ if [ -s output.xml ]; then
+ LOG_INFO "使用-f参数成功生成XML格式输出"
+ rm -f output.xml
+ else
+ LOG_ERROR "使用-f参数生成的输出文件为空"
+ exit 1
+ fi
+ # 清理测试文件
+ rm -f TestFile.java
+ else
+ LOG_ERROR "checkstyle不支持-f参数"
+ exit 255
+ fi
+
+ # 环境清理
+ LOG_INFO "清理测试环境"
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ else
+ LOG_INFO "保持checkstyle安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_j.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_j.sh
new file mode 100644
index 00000000000..ed05dd1478d
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_j.sh
@@ -0,0 +1,76 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-j或--javadocTree参数打印Javadoc解析树
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试checkstyle的-j或--javadocTree参数打印Javadoc解析树功能"
+
+ LOG_INFO "步骤1:检查checkstyle软件包是否在yum源中"
+ dnf list checkstyle > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+
+ LOG_INFO "步骤2:检查当前环境是否已安装checkstyle"
+ rpm -q checkstyle > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ INSTALLED=true
+ LOG_INFO "checkstyle已安装,测试结束后将保持安装状态"
+ else
+ INSTALLED=false
+ LOG_INFO "checkstyle未安装,将进行安装"
+ fi
+
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "步骤3:安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ LOG_INFO "步骤4:测试-j参数打印Javadoc解析树"
+ checkstyle -j > /dev/null 2>&1
+ if [ $? -eq 255 ]; then
+ LOG_ERROR "-j参数不存在或不支持"
+ exit 255
+ fi
+ CHECK_RESULT $? 0 0 "使用-j参数执行失败"
+
+ LOG_INFO "步骤5:测试--javadocTree参数打印Javadoc解析树"
+ checkstyle --javadocTree > /dev/null 2>&1
+ if [ $? -eq 255 ]; then
+ LOG_ERROR "--javadocTree参数不存在或不支持"
+ exit 255
+ fi
+ CHECK_RESULT $? 0 0 "使用--javadocTree参数执行失败"
+
+ LOG_INFO "步骤6:清理环境,恢复到之前的状态"
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ else
+ LOG_INFO "保持checkstyle软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_o.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_o.sh
new file mode 100644
index 00000000000..3101e270b64
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_o.sh
@@ -0,0 +1,105 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-o参数指定输出文件
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ LOG_INFO "开始测试checkstyle的-o参数功能"
+
+ # 检查软件包是否已安装
+ if rpm -q checkstyle &>/dev/null; then
+ LOG_INFO "checkstyle已安装,测试后保持安装状态"
+ already_installed=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装"
+ already_installed=false
+ fi
+
+ # 检查yum源中是否有checkstyle软件包
+ LOG_INFO "检查yum源中是否存在checkstyle软件包"
+ if ! dnf list available checkstyle &>/dev/null; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+
+ # 如果未安装则安装软件包
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 创建测试用的Java文件
+ LOG_INFO "创建测试用的Java文件"
+ cat > TestClass.java << "EOF"
+ public class TestClass {
+ public static void main(String[] args) {
+ System.out.println("Hello World");
+ }
+ }
+ EOF
+
+ # 测试-o参数功能
+ LOG_INFO "测试使用-o参数指定输出文件"
+ checkstyle -c /sun_checks.xml -o checkstyle_output.xml TestClass.java
+ CHECK_RESULT $? 0 0 "执行checkstyle命令失败"
+
+ # 验证输出文件是否生成
+ LOG_INFO "验证输出文件是否生成"
+ if [ -f "checkstyle_output.xml" ]; then
+ LOG_INFO "输出文件checkstyle_output.xml已生成"
+ # 检查文件内容是否符合预期
+ if grep -q "/dev/null
+ if [ $? -eq 255 ] || [ $? -eq 2 ]; then
+ LOG_INFO "不支持的参数处理正确"
+ else
+ LOG_ERROR "不支持的参数处理异常"
+ exit 255
+ fi
+
+ # 清理测试文件
+ LOG_INFO "清理测试文件"
+ rm -f TestClass.java checkstyle_output.xml
+
+ # 如果之前未安装,则卸载软件包
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ fi
+
+ LOG_INFO "测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_p.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_p.sh
new file mode 100644
index 00000000000..f386bffbbad
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_p.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-p参数加载属性文件
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试checkstyle命令的-p参数功能"
+ LOG_INFO "检查环境中是否已安装checkstyle软件包"
+
+ if dnf list installed checkstyle &>/dev/null; then
+ LOG_INFO "checkstyle已安装,测试结束后将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "checkstyle未安装,将作为测试步骤进行安装"
+ INSTALLED=false
+ fi
+
+ LOG_INFO "检查yum源中是否存在checkstyle软件包"
+ if ! dnf list available checkstyle &>/dev/null; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ LOG_INFO "检查checkstyle命令是否支持-p参数"
+ checkstyle --help | grep -q "\-p"
+ CHECK_RESULT $? 0 0 "checkstyle命令不支持-p参数"
+
+ LOG_INFO "创建测试用的属性文件"
+ cat > test.properties << EOF
+ checkstyle.header.file=LICENSE
+ EOF
+
+ LOG_INFO "创建测试用的Java文件"
+ cat > Test.java << EOF
+ public class Test {
+ public static void main(String[] args) {
+ System.out.println("Hello World");
+ }
+ }
+ EOF
+
+ LOG_INFO "使用-p参数执行checkstyle检查"
+ checkstyle -c /sun_checks.xml -p test.properties Test.java
+ CHECK_RESULT $? 0 0 "使用-p参数执行checkstyle检查失败"
+
+ LOG_INFO "清理测试文件"
+ rm -f test.properties Test.java
+
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ fi
+
+ LOG_INFO "测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_t.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_t.sh
new file mode 100644
index 00000000000..2e5ea189c1b
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_t.sh
@@ -0,0 +1,98 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-t或--tree参数打印AST
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试使用-t或--tree参数打印AST"
+
+ # 检查checkstyle软件包是否在yum源中
+ LOG_INFO "检查checkstyle软件包是否在yum源中"
+ dnf list available checkstyle &>/dev/null
+ CHECK_RESULT $? 0 0 "yum源中未找到checkstyle软件包"
+
+ # 检查是否已安装checkstyle
+ LOG_INFO "检查是否已安装checkstyle"
+ if rpm -q checkstyle &>/dev/null; then
+ LOG_INFO "checkstyle已安装,测试结束后将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装"
+ INSTALLED=false
+ fi
+
+ # 如果未安装,则安装checkstyle
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 检查checkstyle命令是否支持-t参数
+ LOG_INFO "检查checkstyle命令是否支持-t参数"
+ checkstyle --help 2>&1 | grep -q "\-t"
+ CHECK_RESULT $? 0 0 "checkstyle命令不支持-t参数"
+
+ # 检查checkstyle命令是否支持--tree参数
+ LOG_INFO "检查checkstyle命令是否支持--tree参数"
+ checkstyle --help 2>&1 | grep -q "\-\-tree"
+ CHECK_RESULT $? 0 0 "checkstyle命令不支持--tree参数"
+
+ # 创建测试Java文件
+ LOG_INFO "创建测试Java文件"
+ cat > TestFile.java << "EOF"
+ public class TestFile {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+ }
+ EOF
+
+ # 使用-t参数打印AST
+ LOG_INFO "使用-t参数打印AST"
+ checkstyle -t TestFile.java > /tmp/ast_output_t.txt 2>&1
+ CHECK_RESULT $? 0 0 "使用-t参数打印AST失败"
+
+ # 使用--tree参数打印AST
+ LOG_INFO "使用--tree参数打印AST"
+ checkstyle --tree TestFile.java > /tmp/ast_output_tree.txt 2>&1
+ CHECK_RESULT $? 0 0 "使用--tree参数打印AST失败"
+
+ # 验证AST输出是否包含预期内容
+ LOG_INFO "验证AST输出是否包含预期内容"
+ grep -q "CLASS_DEF" /tmp/ast_output_t.txt
+ CHECK_RESULT $? 0 0 "AST输出未包含预期内容"
+ grep -q "CLASS_DEF" /tmp/ast_output_tree.txt
+ CHECK_RESULT $? 0 0 "AST输出未包含预期内容"
+
+ # 清理临时文件
+ LOG_INFO "清理临时文件"
+ rm -f TestFile.java /tmp/ast_output_t.txt /tmp/ast_output_tree.txt
+
+ # 如果测试前未安装,则卸载checkstyle
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_upper_j.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_upper_j.sh
new file mode 100644
index 00000000000..63191192982
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_upper_j.sh
@@ -0,0 +1,77 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-J或--treeWithJavadoc参数打印包含Javadoc的完整AST
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义软件包名称
+ PACKAGE_NAME="checkstyle"
+
+ # 步骤1: 检查软件包是否已在yum源中
+ LOG_INFO "检查yum源中是否存在$PACKAGE_NAME软件包"
+ if ! dnf list available $PACKAGE_NAME &>/dev/null; then
+ LOG_ERROR "yum源中不存在$PACKAGE_NAME软件包"
+ exit 255
+ fi
+
+ # 步骤2: 检查系统是否已安装软件包
+ LOG_INFO "检查系统是否已安装$PACKAGE_NAME软件包"
+ if rpm -q $PACKAGE_NAME &>/dev/null; then
+ INSTALLED=true
+ LOG_INFO "$PACKAGE_NAME软件包已安装,测试结束后将保持安装状态"
+ else
+ INSTALLED=false
+ LOG_INFO "$PACKAGE_NAME软件包未安装,将进行安装测试"
+ fi
+
+ # 步骤3: 如果未安装则安装软件包
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "安装$PACKAGE_NAME软件包"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装$PACKAGE_NAME软件包失败"
+ fi
+
+ # 步骤4: 验证checkstyle命令是否可用
+ LOG_INFO "验证checkstyle命令是否可用"
+ which checkstyle
+ CHECK_RESULT $? 0 0 "checkstyle命令不可用"
+
+ # 步骤5: 测试-J参数
+ LOG_INFO "测试使用-J参数打印包含Javadoc的完整AST"
+ checkstyle -J /dev/null 2>&1 | grep -q "Javadoc"
+ CHECK_RESULT $? 0 0 "-J参数不支持或未打印包含Javadoc的AST"
+
+ # 步骤6: 测试--treeWithJavadoc参数
+ LOG_INFO "测试使用--treeWithJavadoc参数打印包含Javadoc的完整AST"
+ checkstyle --treeWithJavadoc /dev/null 2>&1 | grep -q "Javadoc"
+ CHECK_RESULT $? 0 0 "--treeWithJavadoc参数不支持或未打印包含Javadoc的AST"
+
+ # 步骤7: 清理环境
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载$PACKAGE_name软件包"
+ dnf remove -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "卸载$PACKAGE_NAME软件包失败"
+ else
+ LOG_INFO "保持$PACKAGE_NAME软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_upper_t.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_upper_t.sh
new file mode 100644
index 00000000000..714d9264c66
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_upper_t.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-T或--treeWithComments参数打印包含注释的AST
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 判断checkstyle是否已安装
+ LOG_INFO "检查checkstyle是否已安装"
+ rpm -qa | grep -q checkstyle
+ if [ $? -eq 0 ]; then
+ LOG_INFO "checkstyle已安装,标记为已安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "checkstyle未安装,标记为未安装状态"
+ INSTALLED=false
+ fi
+
+ # 检查yum源中是否有checkstyle软件包
+ LOG_INFO "检查yum源中是否有checkstyle软件包"
+ dnf list available checkstyle 2>/dev/null | grep -q checkstyle
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装checkstyle
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 准备测试文件
+ LOG_INFO "准备测试文件"
+ cat > test.java <&1 | grep -q "Tree"
+ CHECK_RESULT $? 0 0 "使用-T参数打印AST失败"
+
+ # 测试使用--treeWithComments参数打印包含注释的AST
+ LOG_INFO "测试使用--treeWithComments参数打印包含注释的AST"
+ checkstyle --treeWithComments test.java 2>&1 | grep -q "Tree"
+ CHECK_RESULT $? 0 0 "使用--treeWithComments参数打印AST失败"
+
+ # 清理测试文件
+ LOG_INFO "清理测试文件"
+ rm -f test.java
+
+ # 如果脚本开始时未安装checkstyle,则在脚本结束前卸载
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_x.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_x.sh
new file mode 100644
index 00000000000..7e3ae040090
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_checkstyle_x.sh
@@ -0,0 +1,146 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-x或--exclude-regexp参数通过正则表达式排除目录
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义颜色变量
+ RED="\033[0;31m"
+ GREEN="\033[0;32m"
+ YELLOW="\033[0;33m"
+ NC="\033[0m"
+
+ # 打印info级别日志
+ LOG_INFO() {
+ echo -e "${GREEN}[INFO]${NC} $*"
+ }
+
+ # 打印error级别日志
+ LOG_ERROR() {
+ echo -e "${RED}[ERROR]${NC} $*"
+ }
+
+ # 检查软件包是否在yum源中存在
+ check_package_exist() {
+ local package_name=$1
+ dnf list available "$package_name" &> /dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 $package_name 不在yum源中"
+ exit 255
+ fi
+ LOG_INFO "软件包 $package_name 存在于yum源中"
+ }
+
+ # 检查命令参数是否支持
+ check_param_support() {
+ local command=$1
+ local param=$2
+ $command --help 2>&1 | grep -q "$param"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "命令 $command 不支持参数 $param"
+ exit 255
+ fi
+ LOG_INFO "命令 $command 支持参数 $param"
+ }
+
+ # 安装软件包
+ install_package() {
+ local package_name=$1
+ LOG_INFO "开始安装软件包 $package_name"
+ dnf install -y "$package_name"
+ CHECK_RESULT $? 0 0 "安装软件包 $package_name 失败"
+ }
+
+ # 卸载软件包
+ uninstall_package() {
+ local package_name=$1
+ LOG_INFO "开始卸载软件包 $package_name"
+ dnf remove -y "$package_name"
+ CHECK_RESULT $? 0 0 "卸载软件包 $package_name 失败"
+ }
+
+ # 主测试函数
+ main() {
+ local package_name="checkstyle"
+ local installed=false
+
+ LOG_INFO "开始测试:使用-x或--exclude-regexp参数通过正则表达式排除目录"
+
+ # 检查环境是否已安装软件包
+ LOG_INFO "检查环境是否已安装软件包 $package_name"
+ if rpm -q "$package_name" &> /dev/null; then
+ LOG_INFO "软件包 $package_name 已安装"
+ installed=true
+ else
+ LOG_INFO "软件包 $package_name 未安装"
+ installed=false
+ fi
+
+ # 检查软件包是否在yum源中
+ LOG_INFO "检查软件包 $package_name 是否在yum源中"
+ check_package_exist "$package_name"
+
+ # 如果未安装,则安装软件包
+ if [ "$installed" = false ]; then
+ install_package "$package_name"
+ fi
+
+ # 检查命令参数是否支持
+ LOG_INFO "检查checkstyle命令是否支持-x参数"
+ check_param_support "checkstyle" "-x"
+
+ LOG_INFO "检查checkstyle命令是否支持--exclude-regexp参数"
+ check_param_support "checkstyle" "--exclude-regexp"
+
+ # 创建测试目录和文件
+ LOG_INFO "创建测试目录和文件"
+ mkdir -p /tmp/test_checkstyle/include_dir
+ mkdir -p /tmp/test_checkstyle/exclude_dir
+ echo "public class Test { }" > /tmp/test_checkstyle/include_dir/Test.java
+ echo "public class Exclude { }" > /tmp/test_checkstyle/exclude_dir/Exclude.java
+
+ # 测试使用-x参数排除目录
+ LOG_INFO "测试使用-x参数排除目录"
+ checkstyle -c /sun_checks.xml -x "exclude_dir" /tmp/test_checkstyle 2>&1
+ CHECK_RESULT $? 0 0 "使用-x参数排除目录失败"
+
+ # 测试使用--exclude-regexp参数排除目录
+ LOG_INFO "测试使用--exclude-regexp参数排除目录"
+ checkstyle -c /sun_checks.xml --exclude-regexp "exclude_dir" /tmp/test_checkstyle 2>&1
+ CHECK_RESULT $? 0 0 "使用--exclude-regexp参数排除目录失败"
+
+ # 清理测试目录
+ LOG_INFO "清理测试目录"
+ rm -rf /tmp/test_checkstyle
+
+ # 如果测试前未安装,则卸载软件包
+ if [ "$installed" = false ]; then
+ uninstall_package "$package_name"
+ else
+ LOG_INFO "保持软件包 $package_name 的安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+ }
+
+ # 执行主函数
+ main
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_custom_config.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_custom_config.sh
new file mode 100644
index 00000000000..71ec9f3230d
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_custom_config.sh
@@ -0,0 +1,98 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-c参数指定自定义配置文件进行代码检查。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "1. 检查系统中是否已安装checkstyle软件包"
+ if rpm -q checkstyle &> /dev/null; then
+ LOG_INFO "checkstyle已安装,测试结束后将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装,并在测试结束后卸载"
+ INSTALLED=false
+ fi
+
+ LOG_INFO "2. 检查yum源中是否存在checkstyle软件包"
+ if ! dnf list available checkstyle &> /dev/null; then
+ LOG_ERROR "yum源中不存在checkstyle软件包"
+ exit 255
+ fi
+
+ LOG_INFO "3. 安装checkstyle软件包"
+ if [ "$INSTALLED" = false ]; then
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ LOG_INFO "4. 检查checkstyle命令是否支持-c参数"
+ checkstyle --help | grep -q "\-c"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "checkstyle命令不支持-c参数"
+ if [ "$INSTALLED" = false ]; then
+ dnf remove -y checkstyle
+ fi
+ exit 255
+ fi
+
+ LOG_INFO "5. 创建一个简单的Java测试文件"
+ cat > TestFile.java << "EOF"
+ public class TestFile {
+ public static void main(String[] args) {
+ System.out.println("Hello, Checkstyle!");
+ }
+ }
+ EOF
+ CHECK_RESULT $? 0 0 "创建Java测试文件失败"
+
+ LOG_INFO "6. 创建一个自定义的checkstyle配置文件"
+ cat > custom_checkstyle.xml << "EOF"
+
+
+
+
+
+
+
+ EOF
+ CHECK_RESULT $? 0 0 "创建自定义checkstyle配置文件失败"
+
+ LOG_INFO "7. 使用-c参数指定自定义配置文件运行checkstyle"
+ checkstyle -c custom_checkstyle.xml TestFile.java
+ CHECK_RESULT $? 0 0 "使用-c参数执行checkstyle失败"
+
+ LOG_INFO "8. 清理测试过程中创建的临时文件"
+ rm -f TestFile.java custom_checkstyle.xml
+ CHECK_RESULT $? 0 0 "删除临时文件失败"
+
+ LOG_INFO "9. 恢复测试环境"
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ else
+ LOG_INFO "保持checkstyle软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_exclude_dir.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_exclude_dir.sh
new file mode 100644
index 00000000000..48ae9c02f50
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_exclude_dir.sh
@@ -0,0 +1,160 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-e参数排除指定目录不进行检查。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义全局变量
+ SCRIPT_NAME=$(basename "$0" .sh)
+ PKG_NAME="checkstyle"
+
+ # 检查软件包是否在yum源中
+ check_package_availability() {
+ LOG_INFO "检查yum源中是否存在${PKG_NAME}软件包"
+ dnf list available ${PKG_NAME} &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在${PKG_NAME}软件包"
+ exit 255
+ fi
+ LOG_INFO "yum源中存在${PKG_NAME}软件包"
+ }
+
+ # 检查命令参数是否支持
+ check_command_parameter() {
+ LOG_INFO "检查checkstyle命令是否支持-e参数"
+ if ! checkstyle --help 2>&1 | grep -q "\-e"; then
+ LOG_ERROR "checkstyle命令不支持-e参数"
+ exit 255
+ fi
+ LOG_INFO "checkstyle命令支持-e参数"
+ }
+
+ # 检查软件包是否已安装
+ check_installation_status() {
+ LOG_INFO "检查${PKG_NAME}是否已安装"
+ rpm -q ${PKG_NAME} &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_INFO "${PKG_NAME}已安装"
+ return 0
+ else
+ LOG_INFO "${PKG_NAME}未安装"
+ return 1
+ fi
+ }
+
+ # 安装软件包
+ install_package() {
+ LOG_INFO "安装${PKG_NAME}软件包"
+ dnf install -y ${PKG_NAME}
+ CHECK_RESULT $? 0 0 "安装${PKG_NAME}失败"
+ LOG_INFO "安装${PKG_NAME}成功"
+ }
+
+ # 卸载软件包
+ uninstall_package() {
+ LOG_INFO "卸载${PKG_NAME}软件包"
+ dnf remove -y ${PKG_NAME}
+ CHECK_RESULT $? 0 0 "卸载${PKG_NAME}失败"
+ LOG_INFO "卸载${PKG_NAME}成功"
+ }
+
+ # 创建测试目录和文件
+ create_test_environment() {
+ LOG_INFO "创建测试目录和文件"
+ mkdir -p test_source/include_dir
+ mkdir -p test_source/exclude_dir
+ echo "public class Test1 {}" > test_source/include_dir/Test1.java
+ echo "public class Test2 {}" > test_source/exclude_dir/Test2.java
+ LOG_INFO "测试目录和文件创建完成"
+ }
+
+ # 清理测试环境
+ cleanup_test_environment() {
+ LOG_INFO "清理测试目录"
+ rm -rf test_source
+ LOG_INFO "测试目录清理完成"
+ }
+
+ # 测试-e参数排除目录功能
+ test_exclude_directory() {
+ LOG_INFO "测试-e参数排除指定目录不进行检查"
+
+ # 测试1: 不排除目录,应该检查所有文件
+ LOG_INFO "测试1: 不排除目录,检查所有Java文件"
+ checkstyle -c /usr/share/checkstyle/sun_checks.xml test_source 2>&1 | grep -q "Test1.java"
+ CHECK_RESULT $? 0 0 "未排除目录时未找到Test1.java"
+ checkstyle -c /usr/share/checkstyle/sun_checks.xml test_source 2>&1 | grep -q "Test2.java"
+ CHECK_RESULT $? 0 0 "未排除目录时未找到Test2.java"
+ LOG_INFO "测试1通过: 未排除目录时检查了所有文件"
+
+ # 测试2: 排除exclude_dir目录,只检查include_dir目录
+ LOG_INFO "测试2: 排除exclude_dir目录,只检查include_dir目录"
+ checkstyle -c /usr/share/checkstyle/sun_checks.xml -e "exclude_dir" test_source 2>&1 | grep -q "Test1.java"
+ CHECK_RESULT $? 0 0 "排除目录后未找到Test1.java"
+ checkstyle -c /usr/share/checkstyle/sun_checks.xml -e "exclude_dir" test_source 2>&1 | grep -q "Test2.java"
+ CHECK_RESULT $? 1 0 "排除目录后仍然找到了Test2.java"
+ LOG_INFO "测试2通过: 成功排除了指定目录"
+
+ LOG_INFO "-e参数排除目录功能测试完成"
+ }
+
+ # 主函数
+ main() {
+ LOG_INFO "开始测试checkstyle的-e参数排除目录功能"
+
+ # 记录初始安装状态
+ check_installation_status
+ INITIAL_INSTALL_STATUS=$?
+
+ # 检查软件包可用性
+ check_package_availability
+
+ # 如果未安装,则安装软件包
+ if [ ${INITIAL_INSTALL_STATUS} -ne 0 ]; then
+ install_package
+ NEED_CLEANUP=1
+ else
+ NEED_CLEANUP=0
+ fi
+
+ # 检查命令参数
+ check_command_parameter
+
+ # 创建测试环境
+ create_test_environment
+
+ # 执行测试
+ test_exclude_directory
+
+ # 清理测试环境
+ cleanup_test_environment
+
+ # 如果初始未安装,则卸载软件包
+ if [ ${NEED_CLEANUP} -eq 1 ]; then
+ uninstall_package
+ fi
+
+ LOG_INFO "测试完成,环境已恢复"
+ }
+
+ # 执行主函数
+ main
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_output_file.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_output_file.sh
new file mode 100644
index 00000000000..c7cb4a4ea56
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_output_file.sh
@@ -0,0 +1,106 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-o参数将检查结果输出到指定文件。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试使用-o参数将检查结果输出到指定文件
+
+ LOG_INFO "1. 检查是否已安装checkstyle工具"
+ if command -v checkstyle &>/dev/null; then
+ LOG_INFO "checkstyle已安装,测试结束后将保持安装状态"
+ already_installed=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装"
+ already_installed=false
+ fi
+
+ LOG_INFO "2. 检查yum源中是否有checkstyle软件包"
+ dnf list available checkstyle &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中没有checkstyle软件包"
+ exit 255
+ fi
+
+ LOG_INFO "3. 安装checkstyle工具(如果未安装)"
+ if [ "$already_installed" = "false" ]; then
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ LOG_INFO "4. 检查checkstyle是否支持-o参数"
+ checkstyle --help 2>&1 | grep -q "\-o"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "checkstyle不支持-o参数"
+ if [ "$already_installed" = "false" ]; then
+ LOG_INFO "清理环境:卸载checkstyle"
+ dnf remove -y checkstyle
+ fi
+ exit 255
+ fi
+
+ LOG_INFO "5. 创建测试Java文件"
+ cat > test.java << "EOF"
+ public class test {
+ public static void main(String[] args) {
+ System.out.println("Hello World");
+ }
+ }
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试Java文件失败"
+
+ LOG_INFO "6. 创建输出文件"
+ output_file="checkstyle_output.txt"
+ rm -f "$output_file"
+ touch "$output_file"
+ CHECK_RESULT $? 0 0 "创建输出文件失败"
+
+ LOG_INFO "7. 使用-o参数执行checkstyle检查并将结果输出到指定文件"
+ checkstyle -c /usr/share/checkstyle/sun_checks.xml -o "$output_file" test.java
+ CHECK_RESULT $? 0 0 "执行checkstyle检查失败"
+
+ LOG_INFO "8. 验证输出文件是否生成且非空"
+ if [ -s "$output_file" ]; then
+ LOG_INFO "输出文件已生成且包含内容"
+ else
+ LOG_ERROR "输出文件为空或未生成"
+ CHECK_RESULT 1 0 0 "输出文件验证失败"
+ fi
+
+ LOG_INFO "9. 验证输出文件内容格式"
+ head -5 "$output_file" | grep -q "Starting audit"
+ CHECK_RESULT $? 0 0 "输出文件格式不正确"
+
+ LOG_INFO "10. 清理临时文件"
+ rm -f test.java "$output_file"
+ CHECK_RESULT $? 0 0 "清理临时文件失败"
+
+ LOG_INFO "11. 环境恢复"
+ if [ "$already_installed" = "false" ]; then
+ LOG_INFO "卸载checkstyle工具"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ else
+ LOG_INFO "保持checkstyle安装状态"
+ fi
+
+ LOG_INFO "12. 测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_output_format.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_output_format.sh
new file mode 100644
index 00000000000..f6204e35a6f
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_output_format.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-f参数指定检查结果的输出格式(如XML、PLAIN)。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "测试开始:测试使用-f参数指定检查结果的输出格式(如XML、PLAIN)。"
+
+ # 检查环境是否已安装checkstyle
+ LOG_INFO "检查环境中是否已安装checkstyle..."
+ if command -v checkstyle &> /dev/null; then
+ LOG_INFO "checkstyle已安装,将保持安装状态。"
+ INSTALLED_BEFORE_TEST=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装。"
+ INSTALLED_BEFORE_TEST=false
+ fi
+
+ # 检查yum源中是否有checkstyle软件包
+ LOG_INFO "检查yum源中是否有checkstyle软件包..."
+ if ! dnf list available checkstyle &> /dev/null; then
+ LOG_ERROR "yum源中未找到checkstyle软件包,退出测试。"
+ exit 255
+ fi
+
+ # 安装checkstyle(如果未安装)
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "安装checkstyle软件包..."
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败。"
+ fi
+
+ # 测试-f参数支持XML格式
+ LOG_INFO "测试使用-f参数指定输出格式为XML..."
+ checkstyle -f XML -c /sun_checks.xml /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "使用-f参数指定XML格式失败。"
+
+ # 测试-f参数支持PLAIN格式
+ LOG_INFO "测试使用-f参数指定输出格式为PLAIN..."
+ checkstyle -f PLAIN -c /sun_checks.xml /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "使用-f参数指定PLAIN格式失败。"
+
+ # 测试不支持的格式参数
+ LOG_INFO "测试使用不支持的格式参数..."
+ checkstyle -f UNSUPPORTED -c /sun_checks.xml /dev/null 2>&1
+ if [ $? -eq 255 ]; then
+ LOG_INFO "不支持的格式参数已正确处理。"
+ else
+ LOG_ERROR "不支持的格式参数未正确处理。"
+ exit 255
+ fi
+
+ # 清理环境:卸载checkstyle(如果测试前未安装)
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "卸载checkstyle软件包..."
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败。"
+ fi
+
+ LOG_INFO "测试结束:所有测试步骤完成。"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_show_ast.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_show_ast.sh
new file mode 100644
index 00000000000..dbf893d6598
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_show_ast.sh
@@ -0,0 +1,151 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-t参数打印Java文件的抽象语法树(AST)。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义日志函数(如果环境中未定义)
+ if ! type LOG_INFO &>/dev/null; then
+ LOG_INFO() { echo "[INFO] $*"; }
+ fi
+ if ! type LOG_ERROR &>/dev/null; then
+ LOG_ERROR() { echo "[ERROR] $*"; }
+ fi
+
+ # 定义检查结果函数(如果环境中未定义)
+ if ! type CHECK_RESULT &>/dev/null; then
+ CHECK_RESULT() {
+ local actual=$1
+ local expect=$2
+ local mode=$3
+ local msg=$4
+ if [ $mode -eq 0 ]; then
+ if [ $actual -eq $expect ]; then
+ LOG_INFO "检查通过: $msg"
+ return 0
+ else
+ LOG_ERROR "检查失败: $msg (实际: $actual, 期望: $expect)"
+ exit $actual
+ fi
+ else
+ if [ $actual -ne $expect ]; then
+ LOG_INFO "检查通过: $msg"
+ return 0
+ else
+ LOG_ERROR "检查失败: $msg (实际: $actual, 期望: 非 $expect)"
+ exit $actual
+ fi
+ fi
+ }
+ fi
+
+ # 定义SSH_CMD函数(如果环境中未定义)
+ if ! type SSH_CMD &>/dev/null; then
+ SSH_CMD() {
+ local cmd=$1
+ local ip=$2
+ local password=$3
+ local user=${4:-root}
+ LOG_INFO "在节点 $ip 上执行命令: $cmd"
+ sshpass -p "$password" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $user@$ip "$cmd"
+ return $?
+ }
+ fi
+
+ # 测试用例描述:测试使用-t参数打印Java文件的抽象语法树(AST)
+
+ # 步骤1:检查环境是否已安装checkstyle
+ LOG_INFO "步骤1:检查checkstyle是否已安装"
+ if command -v checkstyle &>/dev/null; then
+ LOG_INFO "checkstyle已安装,脚本结束后将保持安装状态"
+ INSTALLED_BEFORE=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装"
+ INSTALLED_BEFORE=false
+ fi
+
+ # 步骤2:检查yum源中是否有checkstyle软件包
+ LOG_INFO "步骤2:检查yum源中是否有checkstyle软件包"
+ if ! dnf list available checkstyle --quiet &>/dev/null; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+
+ # 步骤3:安装checkstyle(如果未安装)
+ if [ "$INSTALLED_BEFORE" = false ]; then
+ LOG_INFO "步骤3:安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 步骤4:检查checkstyle命令是否支持-t参数
+ LOG_INFO "步骤4:检查checkstyle命令是否支持-t参数"
+ if ! checkstyle --help 2>&1 | grep -q -- "-t"; then
+ LOG_ERROR "checkstyle命令不支持-t参数"
+ # 如果之前未安装,则卸载
+ if [ "$INSTALLED_BEFORE" = false ]; then
+ dnf remove -y checkstyle
+ fi
+ exit 255
+ fi
+
+ # 步骤5:创建一个测试Java文件
+ LOG_INFO "步骤5:创建一个测试Java文件"
+ TEST_JAVA_FILE="/tmp/TestAST.java"
+ cat > "$TEST_JAVA_FILE" << "EOF"
+ public class TestAST {
+ public static void main(String[] args) {
+ System.out.println("Hello AST");
+ }
+ }
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试Java文件失败"
+
+ # 步骤6:使用checkstyle的-t参数打印AST
+ LOG_INFO "步骤6:使用checkstyle的-t参数打印AST"
+ checkstyle -t "$TEST_JAVA_FILE" > /tmp/ast_output.txt 2>&1
+ CHECK_RESULT $? 0 0 "执行checkstyle -t命令失败"
+
+ # 步骤7:验证AST输出是否包含预期内容
+ LOG_INFO "步骤7:验证AST输出是否包含预期内容"
+ if grep -q "CLASS_DEF" /tmp/ast_output.txt && grep -q "METHOD_DEF" /tmp/ast_output.txt; then
+ LOG_INFO "AST输出包含预期的语法树节点"
+ else
+ LOG_ERROR "AST输出未包含预期的语法树节点"
+ CHECK_RESULT 1 0 0 "AST输出验证失败"
+ fi
+
+ # 步骤8:清理临时文件
+ LOG_INFO "步骤8:清理临时文件"
+ rm -f "$TEST_JAVA_FILE" /tmp/ast_output.txt
+ CHECK_RESULT $? 0 0 "清理临时文件失败"
+
+ # 步骤9:如果测试前未安装,则卸载checkstyle
+ if [ "$INSTALLED_BEFORE" = false ]; then
+ LOG_INFO "步骤9:卸载checkstyle软件包"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ else
+ LOG_INFO "步骤9:保持checkstyle安装状态"
+ fi
+
+ LOG_INFO "测试完成:checkstyle -t 参数测试成功"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_show_version.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_show_version.sh
new file mode 100644
index 00000000000..4caec54b11a
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_show_version.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用-v参数打印checkstyle的版本信息。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:使用-v参数打印checkstyle的版本信息"
+
+ # 检查是否已安装checkstyle
+ LOG_INFO "检查checkstyle是否已安装"
+ if dnf list installed checkstyle &> /dev/null; then
+ LOG_INFO "checkstyle已安装,测试后保持安装状态"
+ already_installed=true
+ else
+ LOG_INFO "checkstyle未安装,将在测试过程中安装"
+ already_installed=false
+ fi
+
+ # 检查yum源中是否有checkstyle软件包
+ LOG_INFO "检查yum源中是否存在checkstyle软件包"
+ if ! dnf list checkstyle &> /dev/null; then
+ LOG_ERROR "yum源中未找到checkstyle软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装checkstyle
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 测试使用-v参数打印版本信息
+ LOG_INFO "测试使用-v参数打印checkstyle版本信息"
+ checkstyle -v
+ CHECK_RESULT $? 0 0 "使用-v参数打印版本信息失败"
+
+ # 如果测试前未安装,则卸载checkstyle以恢复环境
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "卸载checkstyle软件包以恢复环境"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+ else
+ LOG_INFO "保持checkstyle安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_uninstall.sh b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_uninstall.sh
new file mode 100644
index 00000000000..b0bca391a4e
--- /dev/null
+++ b/testcases/function_test/pkg_test/checkstyle/checkstyle/test_checkstyle_uninstall.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试checkstyle软件包的卸载功能,验证是否能够成功卸载。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查是否已安装checkstyle
+ LOG_INFO "检查checkstyle是否已安装"
+ rpm -q checkstyle &>/dev/null
+ installed=$?
+
+ if [ $installed -eq 0 ]; then
+ LOG_INFO "checkstyle已安装,记录当前状态"
+ original_state="installed"
+ else
+ LOG_INFO "checkstyle未安装,将在测试中安装"
+ original_state="not_installed"
+ fi
+
+ # 检查yum源中是否有checkstyle软件包
+ LOG_INFO "检查yum源中是否有checkstyle软件包"
+ dnf list available checkstyle &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中没有checkstyle软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装checkstyle
+ if [ $installed -ne 0 ]; then
+ LOG_INFO "安装checkstyle软件包"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "安装checkstyle失败"
+ fi
+
+ # 验证checkstyle命令是否可用
+ LOG_INFO "验证checkstyle命令是否可用"
+ checkstyle --help &>/dev/null
+ CHECK_RESULT $? 0 0 "checkstyle命令不可用"
+
+ # 测试卸载功能
+ LOG_INFO "开始测试checkstyle卸载功能"
+ dnf remove -y checkstyle
+ CHECK_RESULT $? 0 0 "卸载checkstyle失败"
+
+ # 验证卸载后是否真的被移除
+ LOG_INFO "验证checkstyle是否已成功卸载"
+ rpm -q checkstyle &>/dev/null
+ CHECK_RESULT $? 1 0 "checkstyle卸载后仍存在"
+
+ # 环境恢复
+ LOG_INFO "恢复环境到初始状态"
+ if [ "$original_state" = "installed" ]; then
+ LOG_INFO "重新安装checkstyle到初始状态"
+ dnf install -y checkstyle
+ CHECK_RESULT $? 0 0 "重新安装checkstyle失败"
+ else
+ LOG_INFO "初始状态未安装,无需重新安装"
+ fi
+
+ LOG_INFO "测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_catalog_integration.sh b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_catalog_integration.sh
new file mode 100644
index 00000000000..df3a0bb43f1
--- /dev/null
+++ b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_catalog_integration.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试DTD目录文件是否正确安装并配置,以便XML工具能自动定位DTD。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试DTD目录文件是否正确安装并配置,以便XML工具能自动定位DTD。"
+
+ # 定义软件包名称
+ PACKAGE_NAME="docbook-dtds"
+
+ # 步骤1:检查yum源中是否存在指定的软件包
+ LOG_INFO "步骤1:检查yum源中是否存在软件包 $PACKAGE_NAME"
+ dnf list available "$PACKAGE_NAME" > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到软件包 $PACKAGE_NAME"
+ exit 255
+ fi
+
+ # 步骤2:检查系统是否已安装该软件包
+ LOG_INFO "步骤2:检查系统是否已安装软件包 $PACKAGE_NAME"
+ rpm -q "$PACKAGE_NAME" > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包 $PACKAGE_NAME 已安装,测试结束后将保持安装状态"
+ INSTALLED="true"
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 未安装,将在测试步骤中安装"
+ INSTALLED="false"
+ fi
+
+ # 步骤3:如果未安装,则安装软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3:安装软件包 $PACKAGE_NAME"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
+ fi
+
+ # 步骤4:检查DTD目录文件是否正确安装
+ LOG_INFO "步骤4:检查DTD目录文件是否正确安装"
+ if [ -d "/usr/share/sgml/docbook/xml-dtd-4.5" ]; then
+ LOG_INFO "DTD目录文件已正确安装"
+ else
+ LOG_ERROR "DTD目录文件未正确安装"
+ exit 1
+ fi
+
+ # 步骤5:检查XML工具是否能自动定位DTD
+ LOG_INFO "步骤5:检查XML工具是否能自动定位DTD"
+ xmlcatalog --shell /etc/xml/catalog < /dev/null 2>&1
+ public "-//OASIS//DTD DocBook XML V4.5//EN"
+ quit
+ EOF
+ CHECK_RESULT $? 0 0 "XML工具无法自动定位DTD"
+
+ # 步骤6:环境恢复
+ LOG_INFO "步骤6:环境恢复"
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "卸载软件包 $PACKAGE_NAME"
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 已安装,保持原状"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_downgrade_package.sh b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_downgrade_package.sh
new file mode 100644
index 00000000000..1fea5db5e4d
--- /dev/null
+++ b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_downgrade_package.sh
@@ -0,0 +1,113 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试软件包docbook-dtds的降级功能,验证降级过程是否成功。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查是否已安装docbook-dtds软件包
+ LOG_INFO "检查当前是否已安装docbook-dtds软件包"
+ rpm -q docbook-dtds
+ if [ $? -eq 0 ]; then
+ LOG_INFO "docbook-dtds已安装,脚本结束后将保持安装状态"
+ INSTALLED_FLAG=1
+ else
+ LOG_INFO "docbook-dtds未安装,将在测试步骤中安装"
+ INSTALLED_FLAG=0
+ fi
+
+ # 检查yum源中是否存在docbook-dtds软件包
+ LOG_INFO "检查yum源中是否存在docbook-dtds软件包"
+ dnf list available docbook-dtds 2>&1 | grep -q "docbook-dtds"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到docbook-dtds软件包"
+ exit 255
+ fi
+
+ # 安装docbook-dtds软件包(如果未安装)
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "安装docbook-dtds软件包"
+ dnf install -y docbook-dtds
+ CHECK_RESULT $? 0 0 "安装docbook-dtds软件包失败"
+ fi
+
+ # 获取当前安装的docbook-dtds版本
+ LOG_INFO "获取当前安装的docbook-dtds版本"
+ CURRENT_VERSION=$(rpm -q docbook-dtds --qf "%{VERSION}-%{RELEASE}\n")
+ LOG_INFO "当前安装的docbook-dtds版本为: ${CURRENT_VERSION}"
+
+ # 检查是否有旧版本可用
+ LOG_INFO "检查是否有旧版本可用"
+ dnf list available docbook-dtds --showduplicates | grep -v "${CURRENT_VERSION}" | head -1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "未找到可降级的旧版本"
+ # 如果测试前未安装,则卸载安装的软件包
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "清理环境:卸载docbook-dtds软件包"
+ dnf remove -y docbook-dtds
+ fi
+ exit 255
+ fi
+
+ # 获取一个旧版本
+ OLD_VERSION=$(dnf list available docbook-dtds --showduplicates | grep -v "${CURRENT_VERSION}" | head -1 | awk "{print $2}")
+ if [ -z "${OLD_VERSION}" ]; then
+ LOG_ERROR "无法获取旧版本信息"
+ # 如果测试前未安装,则卸载安装的软件包
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "清理环境:卸载docbook-dtds软件包"
+ dnf remove -y docbook-dtds
+ fi
+ exit 255
+ fi
+ LOG_INFO "找到可降级的旧版本: ${OLD_VERSION}"
+
+ # 执行降级操作
+ LOG_INFO "执行降级操作到版本: ${OLD_VERSION}"
+ dnf downgrade -y docbook-dtds-${OLD_VERSION}
+ CHECK_RESULT $? 0 0 "降级docbook-dtds软件包失败"
+
+ # 验证降级后的版本
+ LOG_INFO "验证降级后的版本"
+ NEW_VERSION=$(rpm -q docbook-dtds --qf "%{VERSION}-%{RELEASE}\n")
+ if [ "${NEW_VERSION}" = "${OLD_VERSION}" ]; then
+ LOG_INFO "降级成功,当前版本为: ${NEW_VERSION}"
+ else
+ LOG_ERROR "降级失败,当前版本为: ${NEW_VERSION},期望版本为: ${OLD_VERSION}"
+ # 如果测试前未安装,则卸载安装的软件包
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "清理环境:卸载docbook-dtds软件包"
+ dnf remove -y docbook-dtds
+ fi
+ exit 1
+ fi
+
+ # 环境恢复:如果测试前未安装,则卸载软件包
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "清理环境:卸载docbook-dtds软件包"
+ dnf remove -y docbook-dtds
+ CHECK_RESULT $? 0 0 "卸载docbook-dtds软件包失败"
+ else
+ # 如果测试前已安装,则恢复到原始版本
+ LOG_INFO "恢复到原始版本: ${CURRENT_VERSION}"
+ dnf upgrade -y docbook-dtds-${CURRENT_VERSION}
+ CHECK_RESULT $? 0 0 "恢复到原始版本失败"
+ fi
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_reinstall_package.sh b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_reinstall_package.sh
new file mode 100644
index 00000000000..a21506c9a80
--- /dev/null
+++ b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_reinstall_package.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试软件包docbook-dtds的重新安装功能,验证覆盖安装过程是否成功。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ PACKAGE_NAME="docbook-dtds"
+ LOG_INFO "开始测试软件包${PACKAGE_NAME}的重新安装功能"
+ LOG_INFO "步骤1:检查软件包是否在yum源中"
+ dnf list available ${PACKAGE_NAME} &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包${PACKAGE_NAME}不在yum源中"
+ exit 255
+ fi
+ LOG_INFO "步骤2:检查当前环境是否已安装软件包"
+ rpm -q ${PACKAGE_NAME} &>/dev/null
+ INSTALLED=$?
+ if [ ${INSTALLED} -eq 0 ]; then
+ LOG_INFO "软件包${PACKAGE_NAME}已安装,测试结束后将保持安装状态"
+ NEED_CLEANUP=0
+ else
+ LOG_INFO "软件包${PACKAGE_NAME}未安装,将在测试结束后卸载"
+ NEED_CLEANUP=1
+ fi
+ LOG_INFO "步骤3:执行软件包安装"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "软件包${PACKAGE_NAME}安装失败"
+ LOG_INFO "步骤4:验证软件包安装成功"
+ rpm -q ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "软件包${PACKAGE_NAME}未正确安装"
+ LOG_INFO "步骤5:执行软件包重新安装"
+ dnf reinstall -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "软件包${PACKAGE_NAME}重新安装失败"
+ LOG_INFO "步骤6:验证重新安装后软件包状态正常"
+ rpm -q ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "重新安装后软件包${PACKAGE_NAME}状态异常"
+ LOG_INFO "步骤7:环境清理"
+ if [ ${NEED_CLEANUP} -eq 1 ]; then
+ LOG_INFO "卸载测试安装的软件包${PACKAGE_NAME}"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "软件包${PACKAGE_NAME}卸载失败"
+ else
+ LOG_INFO "保持软件包${PACKAGE_NAME}的安装状态"
+ fi
+ LOG_INFO "测试软件包${PACKAGE_NAME}重新安装功能完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_validate_dtd.sh b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_validate_dtd.sh
new file mode 100644
index 00000000000..562d3437bba
--- /dev/null
+++ b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_validate_dtd.sh
@@ -0,0 +1,109 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试docbook-dtds的核心DTD文件是否格式正确,能否被XML解析器成功加载和验证。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ PACKAGE_NAME="docbook-dtds"
+ LOG_INFO "开始测试docbook-dtds的核心DTD文件格式正确性及XML解析器加载验证能力"
+
+ LOG_INFO "步骤1:检查yum源中是否存在软件包$PACKAGE_NAME"
+ dnf list available $PACKAGE_NAME > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到软件包$PACKAGE_NAME"
+ exit 255
+ fi
+
+ LOG_INFO "步骤2:检查系统是否已安装$PACKAGE_NAME"
+ rpm -q $PACKAGE_NAME > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包$PACKAGE_NAME已安装,测试后保持安装状态"
+ INSTALLED_BEFORE="true"
+ else
+ LOG_INFO "软件包$PACKAGE_NAME未安装,将在测试过程中安装"
+ INSTALLED_BEFORE="false"
+ fi
+
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "步骤3:安装软件包$PACKAGE_NAME"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装软件包$PACKAGE_NAME失败"
+ fi
+
+ LOG_INFO "步骤4:验证DTD文件是否可以被XML解析器成功加载"
+ DTD_FILE="/usr/share/sgml/docbook/xml-dtd-4.5/docbookx.dtd"
+ if [ ! -f "$DTD_FILE" ]; then
+ LOG_ERROR "未找到核心DTD文件:$DTD_FILE"
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "清理环境:卸载软件包$PACKAGE_NAME"
+ dnf remove -y $PACKAGE_NAME > /dev/null 2>&1
+ fi
+ exit 255
+ fi
+
+ LOG_INFO "使用xmllint验证DTD文件格式"
+ if ! command -v xmllint &> /dev/null; then
+ LOG_INFO "未找到xmllint命令,尝试安装libxml2"
+ dnf install -y libxml2
+ CHECK_RESULT $? 0 0 "安装libxml2失败"
+ INSTALLED_LIBXML2="true"
+ else
+ INSTALLED_LIBXML2="false"
+ fi
+
+ xmllint --valid --noout "$DTD_FILE" 2>&1
+ CHECK_RESULT $? 0 0 "DTD文件格式验证失败,可能格式不正确或无法被XML解析器加载"
+
+ LOG_INFO "步骤5:创建一个简单的XML文件引用该DTD进行验证"
+ TEST_XML=$(mktemp /tmp/test_dtd_XXXXXX.xml)
+ cat > "$TEST_XML" << EOF
+
+
+ Test Book
+
+ Test Chapter
+ This is a test paragraph.
+
+
+ EOF
+
+ LOG_INFO "验证XML文件是否符合DTD规范"
+ xmllint --valid --noout "$TEST_XML" 2>&1
+ CHECK_RESULT $? 0 0 "XML文件未能通过DTD验证,DTD可能无法正确加载"
+
+ LOG_INFO "清理临时文件"
+ rm -f "$TEST_XML"
+
+ if [ "$INSTALLED_LIBXML2" = "true" ]; then
+ LOG_INFO "卸载测试中安装的libxml2软件包"
+ dnf remove -y libxml2 > /dev/null 2>&1
+ fi
+
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "步骤6:清理环境,卸载软件包$PACKAGE_NAME"
+ dnf remove -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "卸载软件包$PACKAGE_NAME失败"
+ else
+ LOG_INFO "测试完成,保持软件包$PACKAGE_NAME的安装状态"
+ fi
+
+ LOG_INFO "测试结束:docbook-dtds的核心DTD文件格式正确,能够被XML解析器成功加载和验证"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_xml_validation.sh b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_xml_validation.sh
new file mode 100644
index 00000000000..8730ba34125
--- /dev/null
+++ b/testcases/function_test/pkg_test/docbook-dtds/docbook-dtds/test_docbook-dtds_function_xml_validation.sh
@@ -0,0 +1,103 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试使用已安装的DTD来验证一个简单的DocBook XML文档,确保其有效性。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ # 定义软件包名称
+ PACKAGE_NAME="docbook-dtds"
+ XML_FILE="test_docbook.xml"
+ DTD_PATH="/usr/share/sgml/docbook/xml-dtd-4.5/docbookx.dtd"
+
+ # 步骤1: 检查yum源中是否存在docbook-dtds软件包
+ LOG_INFO "步骤1: 检查yum源中是否存在${PACKAGE_NAME}软件包"
+ dnf list available ${PACKAGE_NAME} &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在${PACKAGE_NAME}软件包"
+ exit 255
+ fi
+
+ # 步骤2: 检查是否已安装docbook-dtds
+ LOG_INFO "步骤2: 检查是否已安装${PACKAGE_NAME}软件包"
+ if rpm -q ${PACKAGE_NAME} &>/dev/null; then
+ LOG_INFO "${PACKAGE_NAME}已安装,脚本结束后将保持安装状态"
+ INSTALLED_BEFORE=true
+ else
+ LOG_INFO "${PACKAGE_NAME}未安装,将在测试步骤中安装"
+ INSTALLED_BEFORE=false
+ fi
+
+ # 步骤3: 如果未安装,则安装docbook-dtds
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "步骤3: 安装${PACKAGE_NAME}软件包"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
+ fi
+
+ # 步骤4: 检查DTD文件是否存在
+ LOG_INFO "步骤4: 检查DTD文件是否存在"
+ if [ ! -f "$DTD_PATH" ]; then
+ LOG_ERROR "DTD文件不存在: $DTD_PATH"
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ dnf remove -y ${PACKAGE_NAME}
+ fi
+ exit 255
+ fi
+
+ # 步骤5: 创建测试用的DocBook XML文件
+ LOG_INFO "步骤5: 创建测试用的DocBook XML文件"
+ cat > $XML_FILE << "EOF"
+
+
+
+ 测试文档
+ 这是一个简单的DocBook XML测试文档。
+
+ EOF
+
+ # 步骤6: 使用xmllint验证XML文档
+ LOG_INFO "步骤6: 使用xmllint验证XML文档"
+ if ! command -v xmllint &> /dev/null; then
+ LOG_ERROR "xmllint命令不存在"
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ dnf remove -y ${PACKAGE_NAME}
+ fi
+ exit 255
+ fi
+
+ xmllint --noout --valid --dtdvalid "$DTD_PATH" "$XML_FILE"
+ CHECK_RESULT $? 0 0 "XML文档验证失败"
+
+ # 步骤7: 清理测试文件
+ LOG_INFO "步骤7: 清理测试文件"
+ rm -f "$XML_FILE"
+
+ # 步骤8: 如果测试前未安装,则卸载软件包
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "步骤8: 卸载${PACKAGE_NAME}软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_compile.sh b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_compile.sh
new file mode 100644
index 00000000000..e01c2990d03
--- /dev/null
+++ b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_compile.sh
@@ -0,0 +1,102 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 使用drpm-devel提供的头文件和库文件,编译一个简单的测试程序,验证其基本链接和编译功能是否正常。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查是否已安装drpm-devel软件包
+ LOG_INFO "检查是否已安装drpm-devel软件包"
+ rpm -q drpm-devel > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "drpm-devel软件包已安装,脚本结束时将保持安装状态"
+ INSTALLED_FLAG=1
+ else
+ LOG_INFO "drpm-devel软件包未安装,将在测试过程中安装"
+ INSTALLED_FLAG=0
+ fi
+
+ # 检查yum源中是否存在drpm-devel软件包
+ LOG_INFO "检查yum源中是否存在drpm-devel软件包"
+ dnf list available drpm-devel > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到drpm-devel软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装drpm-devel软件包
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "安装drpm-devel软件包"
+ dnf install -y drpm-devel
+ CHECK_RESULT $? 0 0 "安装drpm-devel软件包失败"
+ fi
+
+ # 检查drpm-devel提供的头文件和库文件是否存在
+ LOG_INFO "检查drpm-devel提供的头文件和库文件是否存在"
+ if [ ! -f /usr/include/drpm.h ]; then
+ LOG_ERROR "drpm头文件/usr/include/drpm.h不存在"
+ exit 255
+ fi
+
+ if [ ! -f /usr/lib64/libdrpm.so ] && [ ! -f /usr/lib/libdrpm.so ]; then
+ LOG_ERROR "drpm库文件libdrpm.so不存在"
+ exit 255
+ fi
+
+ # 创建测试程序源代码
+ LOG_INFO "创建测试程序源代码"
+ cat > test_drpm.c << "EOF"
+ #include
+ #include
+
+ int main() {
+ printf("Testing drpm-devel compilation and linking\n");
+ return 0;
+ }
+ EOF
+
+ CHECK_RESULT $? 0 0 "创建测试程序源代码失败"
+
+ # 编译测试程序
+ LOG_INFO "编译测试程序"
+ gcc -o test_drpm test_drpm.c -ldrpm
+ CHECK_RESULT $? 0 0 "编译测试程序失败"
+
+ # 运行测试程序
+ LOG_INFO "运行测试程序"
+ ./test_drpm
+ CHECK_RESULT $? 0 0 "运行测试程序失败"
+
+ # 清理测试文件
+ LOG_INFO "清理测试文件"
+ rm -f test_drpm test_drpm.c
+ CHECK_RESULT $? 0 0 "清理测试文件失败"
+
+ # 如果脚本开始时未安装,则在结束时卸载软件包
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "卸载drpm-devel软件包"
+ dnf remove -y drpm-devel
+ CHECK_RESULT $? 0 0 "卸载drpm-devel软件包失败"
+ else
+ LOG_INFO "保持drpm-devel软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_headers.sh b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_headers.sh
new file mode 100644
index 00000000000..ab4d67f955b
--- /dev/null
+++ b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_headers.sh
@@ -0,0 +1,72 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 验证安装后,关键的开发头文件(如drpm.h)是否存在于标准系统路径中。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:验证安装后,关键的开发头文件(如drpm.h)是否存在于标准系统路径中。"
+
+ # 步骤1:检查软件包是否在yum源中
+ LOG_INFO "步骤1:检查drpm-devel软件包是否在yum源中。"
+ if ! dnf list available drpm-devel &>/dev/null; then
+ LOG_ERROR "软件包drpm-devel不在yum源中,无法进行测试。"
+ exit 255
+ fi
+
+ # 步骤2:检查当前环境是否已安装drpm-devel
+ LOG_INFO "步骤2:检查当前环境是否已安装drpm-devel软件包。"
+ if rpm -q drpm-devel &>/dev/null; then
+ LOG_INFO "检测到drpm-devel已安装,标记为已安装状态。"
+ INSTALLED_BEFORE_TEST=true
+ else
+ LOG_INFO "检测到drpm-devel未安装,标记为未安装状态。"
+ INSTALLED_BEFORE_TEST=false
+ fi
+
+ # 步骤3:如果未安装,则安装drpm-devel
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "步骤3:安装drpm-devel软件包。"
+ dnf install -y drpm-devel
+ CHECK_RESULT $? 0 0 "安装drpm-devel软件包失败。"
+ fi
+
+ # 步骤4:验证关键的开发头文件是否存在于标准系统路径中
+ LOG_INFO "步骤4:验证关键的开发头文件(如drpm.h)是否存在于标准系统路径中。"
+ if [ -f /usr/include/drpm.h ]; then
+ LOG_INFO "找到开发头文件:/usr/include/drpm.h。"
+ CHECK_RESULT $? 0 0 "未找到开发头文件drpm.h。"
+ else
+ LOG_ERROR "未找到开发头文件drpm.h。"
+ CHECK_RESULT 1 0 0 "未找到开发头文件drpm.h。"
+ fi
+
+ # 步骤5:清理环境,恢复到之前的状态
+ LOG_INFO "步骤5:清理环境,恢复到之前的状态。"
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "卸载在测试过程中安装的drpm-devel软件包。"
+ dnf remove -y drpm-devel
+ CHECK_RESULT $? 0 0 "卸载drpm-devel软件包失败。"
+ else
+ LOG_INFO "测试前已安装drpm-devel,保持安装状态。"
+ fi
+
+ LOG_INFO "测试完成:验证安装后,关键的开发头文件(如drpm.h)是否存在于标准系统路径中。"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_install.sh b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_install.sh
new file mode 100644
index 00000000000..15081da4d51
--- /dev/null
+++ b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_install.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试drpm-devel软件包的安装功能,验证其是否能够成功安装到系统中,并检查核心开发文件(如头文件、库文件)是否存在。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ PACKAGE_NAME="drpm-devel"
+ LOG_INFO "开始测试 $PACKAGE_NAME 软件包的安装功能"
+ LOG_INFO "步骤1: 检查 $PACKAGE_NAME 软件包是否已在系统中安装"
+ if rpm -q $PACKAGE_NAME &>/dev/null; then
+ LOG_INFO "$PACKAGE_NAME 软件包已安装,测试将验证其核心开发文件"
+ INSTALLED_BEFORE_TEST=true
+ else
+ LOG_INFO "$PACKAGE_NAME 软件包未安装,将执行安装测试"
+ INSTALLED_BEFORE_TEST=false
+ fi
+ LOG_INFO "步骤2: 检查 yum 源中是否存在 $PACKAGE_NAME 软件包"
+ if ! dnf list available $PACKAGE_NAME &>/dev/null; then
+ LOG_ERROR "yum 源中未找到 $PACKAGE_NAME 软件包"
+ exit 255
+ fi
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "步骤3: 安装 $PACKAGE_NAME 软件包"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 软件包失败"
+ fi
+ LOG_INFO "步骤4: 验证 $PACKAGE_NAME 软件包的核心开发文件"
+ LOG_INFO "检查头文件"
+ rpm -ql $PACKAGE_NAME | grep -E "\.h$" &>/dev/null
+ CHECK_RESULT $? 0 0 "$PACKAGE_NAME 软件包未包含头文件或头文件路径不正确"
+ LOG_INFO "检查库文件"
+ rpm -ql $PACKAGE_NAME | grep -E "\.so(\.|$)" &>/dev/null
+ CHECK_RESULT $? 0 0 "$PACKAGE_NAME 软件包未包含库文件或库文件路径不正确"
+ LOG_INFO "步骤5: 环境清理与恢复"
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "卸载测试安装的 $PACKAGE_NAME 软件包"
+ dnf remove -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 软件包失败"
+ else
+ LOG_INFO "测试前 $PACKAGE_NAME 已安装,保持其安装状态"
+ fi
+ LOG_INFO "$PACKAGE_NAME 软件包安装功能测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_libraries.sh b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_libraries.sh
new file mode 100644
index 00000000000..0afb1321d7f
--- /dev/null
+++ b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_libraries.sh
@@ -0,0 +1,136 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 验证安装后,关键的开发库文件(如libdrpm.so)是否存在于标准系统库路径中。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 设置脚本执行选项
+ set -e
+
+ # 定义软件包名称
+ PACKAGE_NAME="drpm-devel"
+
+ # 步骤1: 检查软件包是否在yum源中
+ LOG_INFO "步骤1: 检查软件包是否在yum源中"
+ if ! dnf list available ${PACKAGE_NAME} &>/dev/null; then
+ LOG_ERROR "软件包 ${PACKAGE_NAME} 不在yum源中"
+ exit 255
+ fi
+ LOG_INFO "软件包 ${PACKAGE_NAME} 在yum源中"
+
+ # 步骤2: 检查是否已安装软件包
+ LOG_INFO "步骤2: 检查是否已安装软件包"
+ if rpm -q ${PACKAGE_NAME} &>/dev/null; then
+ LOG_INFO "软件包 ${PACKAGE_NAME} 已安装"
+ INSTALLED_BEFORE_TEST=true
+ else
+ LOG_INFO "软件包 ${PACKAGE_NAME} 未安装"
+ INSTALLED_BEFORE_TEST=false
+ fi
+
+ # 步骤3: 如果未安装则安装软件包
+ if [ "${INSTALLED_BEFORE_TEST}" = "false" ]; then
+ LOG_INFO "步骤3: 安装软件包 ${PACKAGE_NAME}"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装软件包失败"
+ LOG_INFO "软件包安装成功"
+ fi
+
+ # 步骤4: 验证关键的开发库文件是否存在
+ LOG_INFO "步骤4: 验证关键的开发库文件是否存在于标准系统库路径中"
+
+ # 查找libdrpm.so文件
+ LOG_INFO "查找libdrpm.so文件"
+ LIB_FILE=$(find /usr/lib /usr/lib64 -name "libdrpm.so" 2>/dev/null | head -1)
+
+ if [ -n "${LIB_FILE}" ]; then
+ LOG_INFO "找到libdrpm.so文件: ${LIB_FILE}"
+
+ # 检查文件是否存在且为有效文件
+ if [ -f "${LIB_FILE}" ]; then
+ LOG_INFO "libdrpm.so文件存在且为有效文件"
+ file "${LIB_FILE}" | grep -q "shared object"
+ CHECK_RESULT $? 0 0 "libdrpm.so不是有效的共享库文件"
+ LOG_INFO "libdrpm.so是有效的共享库文件"
+ else
+ LOG_ERROR "libdrpm.so文件不存在或不是常规文件"
+ exit 1
+ fi
+ else
+ LOG_ERROR "未找到libdrpm.so文件"
+ exit 1
+ fi
+
+ # 步骤5: 验证其他可能的开发库文件
+ LOG_INFO "步骤5: 验证其他可能的开发库文件"
+
+ # 查找所有drpm相关的库文件
+ LOG_INFO "查找所有drpm相关的库文件"
+ DRPM_LIBS=$(find /usr/lib /usr/lib64 -name "*drpm*" -type f 2>/dev/null)
+
+ if [ -n "${DRPM_LIBS}" ]; then
+ LOG_INFO "找到以下drpm相关的库文件:"
+ echo "${DRPM_LIBS}" | while read lib; do
+ LOG_INFO " ${lib}"
+ done
+ else
+ LOG_INFO "未找到其他drpm相关的库文件"
+ fi
+
+ # 步骤6: 验证头文件是否存在(开发包通常包含头文件)
+ LOG_INFO "步骤6: 验证头文件是否存在"
+ HEADER_FILES=$(find /usr/include -name "*drpm*" -type f 2>/dev/null)
+
+ if [ -n "${HEADER_FILES}" ]; then
+ LOG_INFO "找到以下drpm相关的头文件:"
+ echo "${HEADER_FILES}" | while read header; do
+ LOG_INFO " ${header}"
+ done
+ else
+ LOG_INFO "未找到drpm相关的头文件"
+ fi
+
+ # 步骤7: 验证pkg-config文件是否存在
+ LOG_INFO "步骤7: 验证pkg-config文件是否存在"
+ PKG_CONFIG_FILES=$(find /usr/lib/pkgconfig /usr/share/pkgconfig -name "*drpm*" -type f 2>/dev/null)
+
+ if [ -n "${PKG_CONFIG_FILES}" ]; then
+ LOG_INFO "找到以下drpm相关的pkg-config文件:"
+ echo "${PKG_CONFIG_FILES}" | while read pkg; do
+ LOG_INFO " ${pkg}"
+ done
+ else
+ LOG_INFO "未找到drpm相关的pkg-config文件"
+ fi
+
+ # 步骤8: 环境清理
+ LOG_INFO "步骤8: 环境清理"
+ if [ "${INSTALLED_BEFORE_TEST}" = "false" ]; then
+ LOG_INFO "卸载测试安装的软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+ LOG_INFO "软件包卸载成功"
+ else
+ LOG_INFO "测试前已安装软件包,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成: 验证安装后,关键的开发库文件(如libdrpm.so)是否存在于标准系统库路径中"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_pkgconfig.sh b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_pkgconfig.sh
new file mode 100644
index 00000000000..5f4c64e3d51
--- /dev/null
+++ b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_pkgconfig.sh
@@ -0,0 +1,126 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 验证软件包是否正确提供了pkg-config(.pc)文件,并能通过pkg-config查询到正确的编译和链接信息。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义软件包名称
+ PACKAGE_NAME="drpm-devel"
+
+ # 检查软件包是否在yum源中
+ LOG_INFO "检查yum源中是否存在软件包: ${PACKAGE_NAME}"
+ dnf list available ${PACKAGE_NAME} &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在软件包: ${PACKAGE_NAME}"
+ exit 255
+ fi
+
+ # 检查环境是否已安装该软件包
+ LOG_INFO "检查系统是否已安装软件包: ${PACKAGE_NAME}"
+ rpm -q ${PACKAGE_NAME} &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包已安装,标记为已存在安装"
+ INSTALLED_BEFORE=1
+ else
+ LOG_INFO "软件包未安装,标记为未存在安装"
+ INSTALLED_BEFORE=0
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ ${INSTALLED_BEFORE} -eq 0 ]; then
+ LOG_INFO "安装软件包: ${PACKAGE_NAME}"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装软件包失败"
+ fi
+
+ # 获取软件包提供的pkg-config文件列表
+ LOG_INFO "获取软件包提供的pkg-config文件"
+ PC_FILES=$(rpm -ql ${PACKAGE_NAME} | grep "\.pc$")
+ if [ -z "${PC_FILES}" ]; then
+ LOG_ERROR "软件包未提供任何pkg-config文件"
+ exit 1
+ fi
+
+ # 遍历每个pkg-config文件进行测试
+ for PC_FILE in ${PC_FILES}; do
+ LOG_INFO "测试pkg-config文件: ${PC_FILE}"
+
+ # 检查pkg-config文件是否存在
+ if [ ! -f "${PC_FILE}" ]; then
+ LOG_ERROR "pkg-config文件不存在: ${PC_FILE}"
+ exit 1
+ fi
+
+ # 获取模块名称(去除.pc后缀)
+ MODULE_NAME=$(basename ${PC_FILE} .pc)
+
+ # 检查pkg-config是否支持该模块
+ LOG_INFO "检查pkg-config是否支持模块: ${MODULE_NAME}"
+ pkg-config --exists ${MODULE_NAME}
+ CHECK_RESULT $? 0 0 "pkg-config不支持模块: ${MODULE_NAME}"
+
+ # 查询编译标志
+ LOG_INFO "查询模块编译标志: ${MODULE_NAME}"
+ CFLAGS=$(pkg-config --cflags ${MODULE_NAME} 2>/dev/null)
+ CHECK_RESULT $? 0 0 "查询编译标志失败: ${MODULE_NAME}"
+ LOG_INFO "编译标志: ${CFLAGS}"
+
+ # 查询链接标志
+ LOG_INFO "查询模块链接标志: ${MODULE_NAME}"
+ LIBS=$(pkg-config --libs ${MODULE_NAME} 2>/dev/null)
+ CHECK_RESULT $? 0 0 "查询链接标志失败: ${MODULE_NAME}"
+ LOG_INFO "链接标志: ${LIBS}"
+
+ # 验证编译和链接标志非空(大多数情况下)
+ if [ -z "${CFLAGS}" ] && [ -z "${LIBS}" ]; then
+ LOG_INFO "注意: 模块 ${MODULE_NAME} 的编译和链接标志均为空,这可能是正常的"
+ fi
+
+ # 验证编译标志是否包含必要的头文件路径
+ LOG_INFO "验证编译标志的有效性"
+ echo "${CFLAGS}" | grep -q "-I"
+ if [ $? -eq 0 ]; then
+ LOG_INFO "编译标志包含头文件路径"
+ else
+ LOG_INFO "编译标志不包含头文件路径,这可能是正常的"
+ fi
+
+ # 验证链接标志是否包含必要的库
+ LOG_INFO "验证链接标志的有效性"
+ echo "${LIBS}" | grep -q "-l"
+ if [ $? -eq 0 ]; then
+ LOG_INFO "链接标志包含库链接"
+ else
+ LOG_INFO "链接标志不包含库链接,这可能是正常的"
+ fi
+ done
+
+ # 清理环境:如果之前未安装,则卸载软件包
+ if [ ${INSTALLED_BEFORE} -eq 0 ]; then
+ LOG_INFO "清理环境:卸载测试安装的软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+ else
+ LOG_INFO "保持软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成:所有pkg-config文件测试通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_uninstall.sh b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_uninstall.sh
new file mode 100644
index 00000000000..edbfe065a2c
--- /dev/null
+++ b/testcases/function_test/pkg_test/drpm/drpm-devel/test_drpm-devel_function_uninstall.sh
@@ -0,0 +1,130 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试drpm-devel软件包的卸载功能,验证其是否能够被完全移除,且卸载后相关开发文件被清理,不影响系统其他组件。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义测试软件包名称
+ PACKAGE_NAME="drpm-devel"
+
+ # 步骤1:检查软件包是否在yum源中存在
+ LOG_INFO "检查软件包 ${PACKAGE_NAME} 是否在yum源中"
+ dnf list available ${PACKAGE_NAME} &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 ${PACKAGE_NAME} 在yum源中不存在"
+ exit 255
+ fi
+
+ # 步骤2:检查当前环境是否已安装该软件包
+ LOG_INFO "检查当前环境是否已安装 ${PACKAGE_NAME}"
+ rpm -q ${PACKAGE_NAME} &>/dev/null
+ if [ $? -eq 0 ]; then
+ ALREADY_INSTALLED=true
+ LOG_INFO "软件包 ${PACKAGE_NAME} 已安装,测试结束后保持安装状态"
+ else
+ ALREADY_INSTALLED=false
+ LOG_INFO "软件包 ${PACKAGE_NAME} 未安装,将执行安装测试"
+ fi
+
+ # 步骤3:如果未安装,则安装软件包作为测试步骤
+ if [ "${ALREADY_INSTALLED}" = "false" ]; then
+ LOG_INFO "安装软件包 ${PACKAGE_NAME}"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装软件包 ${PACKAGE_NAME} 失败"
+ fi
+
+ # 步骤4:验证安装后相关开发文件存在
+ LOG_INFO "验证安装后相关开发文件是否存在"
+ rpm -ql ${PACKAGE_NAME} | grep -E "\.h$|\.so$|\.a$" &>/dev/null
+ CHECK_RESULT $? 0 0 "安装后未找到预期的开发文件"
+
+ # 步骤5:执行卸载操作
+ LOG_INFO "卸载软件包 ${PACKAGE_NAME}"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载软件包 ${PACKAGE_NAME} 失败"
+
+ # 步骤6:验证软件包是否完全移除
+ LOG_INFO "验证软件包是否完全移除"
+ rpm -q ${PACKAGE_NAME} &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "软件包 ${PACKAGE_NAME} 卸载后仍然存在"
+ exit 1
+ else
+ LOG_INFO "软件包 ${PACKAGE_NAME} 已完全移除"
+ fi
+
+ # 步骤7:验证相关开发文件是否被清理
+ LOG_INFO "验证相关开发文件是否被清理"
+ rpm -ql ${PACKAGE_NAME} 2>/dev/null | grep -E "\.h$|\.so$|\.a$" &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "卸载后仍然存在相关开发文件"
+ exit 1
+ else
+ LOG_INFO "相关开发文件已被清理"
+ fi
+
+ # 步骤8:验证卸载后不影响系统其他组件
+ LOG_INFO "验证卸载后不影响系统其他组件"
+ dnf check-update &>/dev/null
+ CHECK_RESULT $? 0 0 "卸载后dnf工具出现异常"
+ rpm -qa | grep -q "drpm" && rpm -qa | grep -v "${PACKAGE_NAME}" | grep -q "drpm"
+ if [ $? -eq 0 ]; then
+ LOG_INFO "其他drpm相关组件仍正常工作"
+ else
+ LOG_INFO "系统中无其他drpm组件,验证通过"
+ fi
+
+ # 步骤9:环境恢复
+ LOG_INFO "恢复测试环境"
+ if [ "${ALREADY_INSTALLED}" = "false" ]; then
+ # 如果测试前未安装,则保持未安装状态
+ rpm -q ${PACKAGE_NAME} &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_INFO "清理测试安装的软件包"
+ dnf remove -y ${PACKAGE_NAME} &>/dev/null
+ fi
+ else
+ # 如果测试前已安装,则重新安装
+ rpm -q ${PACKAGE_NAME} &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_INFO "恢复原始安装状态"
+ dnf install -y ${PACKAGE_NAME} &>/dev/null
+ fi
+ fi
+
+ # 最终验证
+ LOG_INFO "最终环境验证"
+ if [ "${ALREADY_INSTALLED}" = "true" ]; then
+ rpm -q ${PACKAGE_NAME} &>/dev/null
+ CHECK_RESULT $? 0 0 "环境恢复失败,软件包未安装"
+ LOG_INFO "环境已恢复至测试前的安装状态"
+ else
+ rpm -q ${PACKAGE_NAME} &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "环境恢复失败,软件包未正确卸载"
+ exit 1
+ else
+ LOG_INFO "环境已恢复至测试前的未安装状态"
+ fi
+ fi
+
+ LOG_INFO "测试完成:drpm-devel软件包卸载功能验证通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_basic_usage.sh b/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_basic_usage.sh
new file mode 100644
index 00000000000..fd3864ad3b9
--- /dev/null
+++ b/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_basic_usage.sh
@@ -0,0 +1,128 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试软件包提供的基本验证帮助功能,如调用其核心类或方法进行简单的输入验证。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试软件包提供的基本验证帮助功能
+
+ LOG_INFO "开始测试软件包的基本验证帮助功能"
+
+ # 定义软件包名称
+ PACKAGE_NAME="geronimo-validation"
+
+ # 步骤1:检查软件包是否已在yum源中
+ LOG_INFO "步骤1:检查软件包是否在yum源中"
+ dnf list available ${PACKAGE_NAME} 2>/dev/null | grep -q "${PACKAGE_NAME}"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 ${PACKAGE_NAME} 不在yum源中"
+ exit 255
+ fi
+ LOG_INFO "软件包 ${PACKAGE_NAME} 在yum源中可用"
+
+ # 步骤2:检查软件包是否已安装
+ LOG_INFO "步骤2:检查软件包是否已安装"
+ INSTALLED=false
+ rpm -q ${PACKAGE_NAME} >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包 ${PACKAGE_NAME} 已安装"
+ INSTALLED=true
+ else
+ LOG_INFO "软件包 ${PACKAGE_NAME} 未安装"
+ fi
+
+ # 步骤3:如果未安装,则安装软件包
+ if [ "${INSTALLED}" = "false" ]; then
+ LOG_INFO "步骤3:安装软件包 ${PACKAGE_NAME}"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装软件包失败"
+ LOG_INFO "软件包安装成功"
+ fi
+
+ # 步骤4:测试基本验证帮助功能
+ LOG_INFO "步骤4:测试基本验证帮助功能"
+
+ # 查找软件包提供的jar文件
+ LOG_INFO "查找软件包提供的jar文件"
+ JAR_FILE=$(find /usr/share/java -name "*geronimo-validation*.jar" 2>/dev/null | head -1)
+ if [ -z "${JAR_FILE}" ]; then
+ LOG_ERROR "未找到geronimo-validation相关的jar文件"
+ # 如果我们是安装者,需要清理环境
+ if [ "${INSTALLED}" = "false" ]; then
+ LOG_INFO "清理环境:卸载软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ fi
+ exit 1
+ fi
+ LOG_INFO "找到jar文件: ${JAR_FILE}"
+
+ # 步骤5:测试jar文件的基本功能
+ LOG_INFO "步骤5:测试jar文件的基本功能"
+ # 检查jar文件是否有效
+ jar -tf "${JAR_FILE}" 2>/dev/null | head -5
+ CHECK_RESULT $? 0 0 "jar文件无效或无法读取"
+
+ # 步骤6:尝试调用基本验证功能(示例)
+ LOG_INFO "步骤6:尝试调用基本验证类"
+ # 这里我们尝试查找常见的验证类
+ jar -tf "${JAR_FILE}" 2>/dev/null | grep -i "validator" | head -3
+ if [ $? -eq 0 ]; then
+ LOG_INFO "找到验证相关的类"
+ else
+ LOG_INFO "未找到明显的验证类,但jar文件结构正常"
+ fi
+
+ # 步骤7:测试命令行帮助(如果存在)
+ LOG_INFO "步骤7:检查是否存在命令行工具"
+ # 查找可能的命令行工具
+ CLI_TOOL=$(find /usr/bin -name "*geronimo*validation*" 2>/dev/null | head -1)
+ if [ -n "${CLI_TOOL}" ]; then
+ LOG_INFO "找到命令行工具: ${CLI_TOOL}"
+ # 测试帮助参数
+ ${CLI_TOOL} --help >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "命令行工具支持--help参数"
+ else
+ # 测试-h参数
+ ${CLI_TOOL} -h >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "命令行工具支持-h参数"
+ else
+ LOG_INFO "命令行工具不支持标准帮助参数"
+ fi
+ fi
+ else
+ LOG_INFO "未找到专门的命令行工具"
+ fi
+
+ # 步骤8:环境恢复
+ LOG_INFO "步骤8:环境恢复"
+ if [ "${INSTALLED}" = "false" ]; then
+ LOG_INFO "卸载测试安装的软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+ LOG_INFO "软件包卸载成功"
+ else
+ LOG_INFO "保持原有安装状态"
+ fi
+
+ LOG_INFO "测试完成:基本验证帮助功能测试通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_check_installed.sh b/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_check_installed.sh
new file mode 100644
index 00000000000..c808e182b13
--- /dev/null
+++ b/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_check_installed.sh
@@ -0,0 +1,71 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试检查geronimo-validation-help软件包是否已正确安装在系统中。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试检查geronimo-validation-help软件包是否已正确安装在系统中。"
+
+ # 检查yum源中是否存在geronimo-validation-help软件包
+ LOG_INFO "检查yum源中是否存在geronimo-validation-help软件包"
+ dnf list available geronimo-validation-help >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到geronimo-validation-help软件包"
+ exit 255
+ fi
+
+ # 检查软件包是否已经安装
+ LOG_INFO "检查geronimo-validation-help软件包是否已经安装"
+ rpm -q geronimo-validation-help >/dev/null 2>&1
+ already_installed=$?
+
+ if [ $already_installed -eq 0 ]; then
+ LOG_INFO "geronimo-validation-help软件包已经安装,跳过安装步骤"
+ need_uninstall=false
+ else
+ LOG_INFO "geronimo-validation-help软件包未安装,开始安装"
+ dnf install -y geronimo-validation-help
+ CHECK_RESULT $? 0 0 "安装geronimo-validation-help软件包失败"
+ need_uninstall=true
+ fi
+
+ # 验证软件包是否正确安装
+ LOG_INFO "验证geronimo-validation-help软件包是否正确安装"
+ rpm -q geronimo-validation-help
+ CHECK_RESULT $? 0 0 "geronimo-validation-help软件包未正确安装"
+
+ # 验证软件包文件完整性
+ LOG_INFO "验证geronimo-validation-help软件包文件完整性"
+ rpm -V geronimo-validation-help
+ CHECK_RESULT $? 0 0 "geronimo-validation-help软件包文件不完整"
+
+ # 清理环境
+ LOG_INFO "清理测试环境"
+ if [ "$need_uninstall" = true ]; then
+ LOG_INFO "卸载geronimo-validation-help软件包"
+ dnf remove -y geronimo-validation-help
+ CHECK_RESULT $? 0 0 "卸载geronimo-validation-help软件包失败"
+ else
+ LOG_INFO "保持geronimo-validation-help软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成,环境已恢复到初始状态"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_dependency_check.sh b/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_dependency_check.sh
new file mode 100644
index 00000000000..41fb3ae27d9
--- /dev/null
+++ b/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_dependency_check.sh
@@ -0,0 +1,103 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试该软件包作为依赖被其他组件(如Web应用)引入时,其功能是否正常可用。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试脚本开始
+
+ # 步骤1:检查测试环境是否已安装geronimo-validation-help软件包
+ LOG_INFO "步骤1:检查测试环境是否已安装geronimo-validation-help软件包"
+ rpm -q geronimo-validation-help > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "geronimo-validation-help软件包已安装,测试结束后将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "geronimo-validation-help软件包未安装,将在测试过程中安装并在测试结束后卸载"
+ INSTALLED=false
+ fi
+
+ # 步骤2:检查yum源中是否有geronimo-validation-help软件包
+ LOG_INFO "步骤2:检查yum源中是否有geronimo-validation-help软件包"
+ dnf list available geronimo-validation-help > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到geronimo-validation-help软件包"
+ exit 255
+ fi
+
+ # 步骤3:安装geronimo-validation-help软件包(如果未安装)
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "步骤3:安装geronimo-validation-help软件包"
+ dnf install -y geronimo-validation-help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "安装geronimo-validation-help软件包失败"
+ fi
+
+ # 步骤4:验证geronimo-validation-help软件包的基本功能
+ LOG_INFO "步骤4:验证geronimo-validation-help软件包的基本功能"
+ # 假设geronimo-validation-help提供了一个命令行工具"geronimo-validation-check",用于验证其功能
+ # 检查该命令是否存在
+ command -v geronimo-validation-check > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "geronimo-validation-help软件包未提供预期的命令行工具"
+ exit 255
+ fi
+
+ # 测试geronimo-validation-check命令的基本参数
+ LOG_INFO "测试geronimo-validation-check命令的基本参数"
+ geronimo-validation-check --help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "geronimo-validation-check命令--help参数执行失败"
+
+ # 步骤5:模拟geronimo-validation-help作为依赖被Web应用引入时的功能测试
+ LOG_INFO "步骤5:模拟geronimo-validation-help作为依赖被Web应用引入时的功能测试"
+ # 创建一个简单的Java Web应用测试文件,使用geronimo-validation-help进行验证
+ cat > /tmp/test_validation.java << "EOF"
+ import org.apache.geronimo.validation.ValidationHelper;
+ public class TestValidation {
+ public static void main(String[] args) {
+ ValidationHelper helper = new ValidationHelper();
+ System.out.println("ValidationHelper instance created successfully.");
+ }
+ }
+ EOF
+
+ # 编译测试Java文件,检查geronimo-validation-help的类是否可用
+ LOG_INFO "编译测试Java文件,验证geronimo-validation-help的类是否可用"
+ javac -cp /usr/share/java/geronimo-validation-help.jar /tmp/test_validation.java 2>&1
+ CHECK_RESULT $? 0 0 "编译测试Java文件失败,geronimo-validation-help的类不可用"
+
+ # 运行编译后的Java程序,验证功能
+ LOG_INFO "运行编译后的Java程序,验证geronimo-validation-help的功能"
+ java -cp /tmp:/usr/share/java/geronimo-validation-help.jar TestValidation 2>&1
+ CHECK_RESULT $? 0 0 "运行Java程序失败,geronimo-validation-help功能异常"
+
+ # 步骤6:清理测试过程中创建的临时文件
+ LOG_INFO "步骤6:清理测试过程中创建的临时文件"
+ rm -f /tmp/test_validation.java /tmp/TestValidation.class
+
+ # 步骤7:如果测试前未安装geronimo-validation-help,则在测试结束后卸载
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "步骤7:卸载geronimo-validation-help软件包"
+ dnf remove -y geronimo-validation-help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "卸载geronimo-validation-help软件包失败"
+ fi
+
+ LOG_INFO "测试完成:geronimo-validation-help作为依赖被其他组件引入时功能正常可用"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_uninstall.sh b/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_uninstall.sh
new file mode 100644
index 00000000000..65fa8995110
--- /dev/null
+++ b/testcases/function_test/pkg_test/geronimo-validation/geronimo-validation-help/test_geronimo-validation-help_function_uninstall.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试从系统中卸载geronimo-validation-help软件包的操作是否成功完成。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ LOG_INFO "开始测试卸载geronimo-validation-help软件包"
+
+ LOG_INFO "步骤1: 检查yum源中是否存在geronimo-validation-help软件包"
+ dnf list geronimo-validation-help &> /dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到geronimo-validation-help软件包"
+ exit 255
+ fi
+ LOG_INFO "yum源中存在geronimo-validation-help软件包"
+
+ LOG_INFO "步骤2: 检查系统当前是否已安装geronimo-validation-help软件包"
+ INSTALLED=0
+ rpm -q geronimo-validation-help &> /dev/null && INSTALLED=1
+
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "系统未安装geronimo-validation-help,将先安装再卸载"
+ LOG_INFO "步骤3: 安装geronimo-validation-help软件包"
+ dnf install -y geronimo-validation-help
+ CHECK_RESULT $? 0 0 "安装geronimo-validation-help软件包失败"
+ LOG_INFO "安装geronimo-validation-help软件包成功"
+ fi
+
+ LOG_INFO "步骤4: 卸载geronimo-validation-help软件包"
+ dnf remove -y geronimo-validation-help
+ CHECK_RESULT $? 0 0 "卸载geronimo-validation-help软件包失败"
+ LOG_INFO "卸载geronimo-validation-help软件包成功"
+
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤5: 清理环境,由于初始未安装,无需恢复"
+ else
+ LOG_INFO "步骤5: 恢复环境,重新安装geronimo-validation-help软件包"
+ dnf install -y geronimo-validation-help
+ CHECK_RESULT $? 0 0 "重新安装geronimo-validation-help软件包失败"
+ LOG_INFO "重新安装geronimo-validation-help软件包成功,环境已恢复"
+ fi
+
+ LOG_INFO "测试完成: 卸载geronimo-validation-help软件包操作成功完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_font_rendering.sh b/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_font_rendering.sh
deleted file mode 100644
index ff3b2980b78..00000000000
--- a/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_font_rendering.sh
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/usr/bin/bash
-
-# Copyright (c) 2024 ISCAS .ALL rights reserved.
-# This program is licensed under Mulan PSL v2.
-# You can use it according to the terms and conditions of the Mulan PSL v2.
-# http://license.coscl.org.cn/MulanPSL2
-# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
-# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
-# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
-# See the Mulan PSL v2 for more details.
-
-# #############################################
-# @Author : honghua
-# @Contact : honghua@iscas.ac.cn
-# @Date : 2026-04-07
-# @License : Mulan PSL v2
-# @Desc : 测试安装的 Noto Sans Mono 字体能够在支持字体选择的应用程序(如文本编辑器或浏览器)中正确显示和渲染。
-# ############################################
-
-source "$OET_PATH/libs/locallibs/common_lib.sh"
-
-function run_test() {
- # 检查环境是否已安装noto-sans-mono字体包
- LOG_INFO "检查noto-sans-mono字体包是否已安装"
- rpm -q google-noto-sans-mono-fonts > /dev/null 2>&1
- if [ $? -eq 0 ]; then
- LOG_INFO "检测到google-noto-sans-mono-fonts已安装,测试结束后将保持安装状态"
- INSTALLED_BEFORE=true
- else
- LOG_INFO "未检测到google-noto-sans-mono-fonts安装,将在测试中安装"
- INSTALLED_BEFORE=false
- fi
-
- # 检查yum源中是否有该软件包
- LOG_INFO "检查yum源中是否存在google-noto-sans-mono-fonts软件包"
- dnf list available google-noto-sans-mono-fonts > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- LOG_ERROR "yum源中未找到google-noto-sans-mono-fonts软件包"
- exit 255
- fi
-
- # 如果未安装,则安装软件包
- if [ "$INSTALLED_BEFORE" = false ]; then
- LOG_INFO "开始安装google-noto-sans-mono-fonts软件包"
- dnf install -y google-noto-sans-mono-fonts
- CHECK_RESULT $? 0 0 "安装google-noto-sans-mono-fonts失败"
- LOG_INFO "google-noto-sans-mono-fonts软件包安装成功"
- fi
-
- # 验证字体文件是否存在
- LOG_INFO "验证Noto Sans Mono字体文件是否已正确安装"
- FONT_FILE="/usr/share/fonts/google-noto-sans-mono/NotoSansMono-Regular.ttf"
- if [ -f "$FONT_FILE" ]; then
- LOG_INFO "找到Noto Sans Mono字体文件:$FONT_FILE"
- else
- LOG_ERROR "未找到Noto Sans Mono字体文件"
- exit 1
- fi
-
- # 检查字体是否被系统识别
- LOG_INFO "检查字体是否被字体系统识别"
- fc-list | grep -i "noto sans mono" > /dev/null 2>&1
- CHECK_RESULT $? 0 0 "字体系统未识别Noto Sans Mono字体"
-
- # 测试字体渲染功能
- LOG_INFO "测试Noto Sans Mono字体渲染功能"
- # 使用fc-match检查字体匹配
- fc-match "Noto Sans Mono" > /dev/null 2>&1
- CHECK_RESULT $? 0 0 "fc-match无法匹配Noto Sans Mono字体"
-
- # 创建测试文本文件以验证字体渲染
- LOG_INFO "创建测试文本验证字体渲染"
- TEST_TEXT="Noto Sans Mono字体渲染测试:ABCDEFG abcdefg 1234567890"
- TEST_FILE="/tmp/font_test.txt"
- echo "$TEST_TEXT" > "$TEST_FILE"
-
- # 使用支持字体选择的工具验证(这里使用fontconfig工具)
- LOG_INFO "使用fontconfig工具验证字体渲染"
- echo "$TEST_TEXT" | pango-view --font="Noto Sans Mono 12" --no-display --output=/tmp/font_test.png 2>/dev/null
- if [ $? -eq 0 ] && [ -f "/tmp/font_test.png" ]; then
- LOG_INFO "字体渲染测试成功,生成测试图片"
- rm -f /tmp/font_test.png
- else
- LOG_ERROR "字体渲染测试失败"
- # 尝试其他方法
- LOG_INFO "尝试使用fc-pattern验证字体属性"
- fc-pattern -f "%{family}\n" "Noto Sans Mono" | grep -i "noto" > /dev/null 2>&1
- CHECK_RESULT $? 0 0 "fc-pattern无法验证Noto Sans Mono字体属性"
- fi
-
- # 清理测试文件
- LOG_INFO "清理测试文件"
- rm -f "$TEST_FILE" /tmp/font_test.png 2>/dev/null
-
- # 环境恢复:如果测试前未安装,则卸载软件包
- if [ "$INSTALLED_BEFORE" = false ]; then
- LOG_INFO "恢复测试环境:卸载google-noto-sans-mono-fonts软件包"
- dnf remove -y google-noto-sans-mono-fonts
- CHECK_RESULT $? 0 0 "卸载google-noto-sans-mono-fonts失败"
- LOG_INFO "环境恢复完成,软件包已卸载"
- else
- LOG_INFO "保持google-noto-sans-mono-fonts软件包安装状态"
- fi
-
- LOG_INFO "Noto Sans Mono字体渲染功能测试完成"
-}
-
-main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_uninstall.sh b/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_uninstall.sh
deleted file mode 100644
index 63da7d15d69..00000000000
--- a/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_uninstall.sh
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/bash
-
-# Copyright (c) 2024 ISCAS .ALL rights reserved.
-# This program is licensed under Mulan PSL v2.
-# You can use it according to the terms and conditions of the Mulan PSL v2.
-# http://license.coscl.org.cn/MulanPSL2
-# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
-# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
-# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
-# See the Mulan PSL v2 for more details.
-
-# #############################################
-# @Author : honghua
-# @Contact : honghua@iscas.ac.cn
-# @Date : 2026-04-07
-# @License : Mulan PSL v2
-# @Desc : 测试 google-noto-sans-mono-fonts 软件包能够通过系统包管理器成功卸载,且卸载后字体文件被移除。
-# ############################################
-
-source "$OET_PATH/libs/locallibs/common_lib.sh"
-
-function run_test() {
- set -e
-
- # 检查软件包是否在yum源中
- LOG_INFO "检查google-noto-sans-mono-fonts软件包是否在yum源中"
- if ! dnf list available google-noto-sans-mono-fonts &>/dev/null; then
- LOG_ERROR "软件包google-noto-sans-mono-fonts不在yum源中"
- exit 255
- fi
-
- # 检查当前环境是否已安装该软件包
- LOG_INFO "检查当前是否已安装google-noto-sans-mono-fonts软件包"
- if rpm -q google-noto-sans-mono-fonts &>/dev/null; then
- LOG_INFO "软件包已安装,测试结束后将保持安装状态"
- ALREADY_INSTALLED=1
- else
- LOG_INFO "软件包未安装,将在测试前安装"
- ALREADY_INSTALLED=0
- fi
-
- # 如果未安装,则安装软件包作为测试步骤
- if [ $ALREADY_INSTALLED -eq 0 ]; then
- LOG_INFO "安装google-noto-sans-mono-fonts软件包"
- dnf install -y google-noto-sans-mono-fonts
- CHECK_RESULT $? 0 0 "安装google-noto-sans-mono-fonts失败"
- fi
-
- # 验证字体文件在安装后是否存在
- LOG_INFO "验证安装后字体文件是否存在"
- FONT_FILE="/usr/share/fonts/google-noto-sans-mono/NotoSansMono-Regular.ttf"
- if [ -f "$FONT_FILE" ]; then
- LOG_INFO "字体文件存在: $FONT_FILE"
- else
- LOG_ERROR "字体文件不存在: $FONT_FILE"
- exit 1
- fi
-
- # 测试卸载功能
- LOG_INFO "测试卸载google-noto-sans-mono-fonts软件包"
- dnf remove -y google-noto-sans-mono-fonts
- CHECK_RESULT $? 0 0 "卸载google-noto-sans-mono-fonts失败"
-
- # 验证卸载后软件包是否已移除
- LOG_INFO "验证卸载后软件包是否已移除"
- if rpm -q google-noto-sans-mono-fonts &>/dev/null; then
- LOG_ERROR "软件包卸载失败,仍然存在"
- exit 1
- else
- LOG_INFO "软件包已成功卸载"
- fi
-
- # 验证字体文件在卸载后是否被移除
- LOG_INFO "验证卸载后字体文件是否被移除"
- if [ -f "$FONT_FILE" ]; then
- LOG_ERROR "字体文件未被移除: $FONT_FILE"
- exit 1
- else
- LOG_INFO "字体文件已被成功移除"
- fi
-
- # 环境恢复:如果测试前未安装,则无需重新安装;如果测试前已安装,则重新安装
- LOG_INFO "恢复环境到测试前状态"
- if [ $ALREADY_INSTALLED -eq 1 ]; then
- LOG_INFO "重新安装google-noto-sans-mono-fonts软件包"
- dnf install -y google-noto-sans-mono-fonts
- CHECK_RESULT $? 0 0 "重新安装google-noto-sans-mono-fonts失败"
- else
- LOG_INFO "测试前未安装,无需重新安装"
- fi
-
- LOG_INFO "测试完成"
-}
-
-main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_verify_installed.sh b/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_verify_installed.sh
deleted file mode 100644
index f4487c3b036..00000000000
--- a/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-mono-fonts/test_google-noto-sans-mono-fonts_function_verify_installed.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/bash
-
-# Copyright (c) 2024 ISCAS .ALL rights reserved.
-# This program is licensed under Mulan PSL v2.
-# You can use it according to the terms and conditions of the Mulan PSL v2.
-# http://license.coscl.org.cn/MulanPSL2
-# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
-# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
-# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
-# See the Mulan PSL v2 for more details.
-
-# #############################################
-# @Author : honghua
-# @Contact : honghua@iscas.ac.cn
-# @Date : 2026-04-07
-# @License : Mulan PSL v2
-# @Desc : 测试 google-noto-sans-mono-fonts 软件包在安装后,其字体文件确实存在于系统字体目录中。
-# ############################################
-
-source "$OET_PATH/libs/locallibs/common_lib.sh"
-
-function run_test() {
- set -e
-
- LOG_INFO "步骤1:检查环境中是否已安装 google-noto-sans-mono-fonts 软件包"
- if rpm -q google-noto-sans-mono-fonts &> /dev/null; then
- LOG_INFO "环境中已安装 google-noto-sans-mono-fonts,脚本结束后将保持安装状态"
- already_installed=true
- else
- LOG_INFO "环境中未安装 google-noto-sans-mono-fonts,将在测试过程中安装,并在脚本结束前卸载"
- already_installed=false
- fi
-
- LOG_INFO "步骤2:检查yum源中是否存在 google-noto-sans-mono-fonts 软件包"
- if ! dnf list available google-noto-sans-mono-fonts &> /dev/null; then
- LOG_ERROR "yum源中不存在 google-noto-sans-mono-fonts 软件包"
- exit 255
- fi
-
- if [[ "$already_installed" == false ]]; then
- LOG_INFO "步骤3:安装 google-noto-sans-mono-fonts 软件包"
- dnf install -y google-noto-sans-mono-fonts
- CHECK_RESULT $? 0 0 "安装 google-noto-sans-mono-fonts 失败"
- fi
-
- LOG_INFO "步骤4:验证 google-noto-sans-mono-fonts 字体文件是否存在于系统字体目录中"
- font_files=(/usr/share/fonts/google-noto-sans-mono/*.ttf)
- if [[ ${#font_files[@]} -eq 0 ]]; then
- LOG_ERROR "未在 /usr/share/fonts/google-noto-sans-mono/ 目录下找到字体文件"
- exit 1
- else
- LOG_INFO "找到字体文件: ${font_files[*]}"
- fi
-
- LOG_INFO "步骤5:清理环境,恢复到之前的状态"
- if [[ "$already_installed" == false ]]; then
- LOG_INFO "卸载 google-noto-sans-mono-fonts 软件包"
- dnf remove -y google-noto-sans-mono-fonts
- CHECK_RESULT $? 0 0 "卸载 google-noto-sans-mono-fonts 失败"
- fi
-
- LOG_INFO "测试完成"
-}
-
-main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-vf-fonts/test_google-noto-sans-vf-fonts_function_font_usable.sh b/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-vf-fonts/test_google-noto-sans-vf-fonts_function_font_usable.sh
deleted file mode 100644
index 09deaa8c4a0..00000000000
--- a/testcases/function_test/pkg_test/google-noto-fonts/google-noto-sans-vf-fonts/test_google-noto-sans-vf-fonts_function_font_usable.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/bash
-
-# Copyright (c) 2024 ISCAS .ALL rights reserved.
-# This program is licensed under Mulan PSL v2.
-# You can use it according to the terms and conditions of the Mulan PSL v2.
-# http://license.coscl.org.cn/MulanPSL2
-# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
-# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
-# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
-# See the Mulan PSL v2 for more details.
-
-# #############################################
-# @Author : honghua
-# @Contact : honghua@iscas.ac.cn
-# @Date : 2026-04-07
-# @License : Mulan PSL v2
-# @Desc : 测试验证已安装的Noto Sans可变字体可以被系统或应用程序识别和使用
-# ############################################
-
-source "$OET_PATH/libs/locallibs/common_lib.sh"
-
-function run_test() {
- # 检查是否已安装noto-sans-vf-fonts字体包
- LOG_INFO "检查是否已安装noto-sans-vf-fonts字体包"
- rpm -q google-noto-sans-vf-fonts > /dev/null 2>&1
- if [ $? -eq 0 ]; then
- LOG_INFO "检测到noto-sans-vf-fonts已安装,测试结束后将保持安装状态"
- ALREADY_INSTALLED=1
- else
- LOG_INFO "检测到noto-sans-vf-fonts未安装,将在测试过程中安装"
- ALREADY_INSTALLED=0
- fi
-
- # 检查yum源中是否有noto-sans-vf-fonts字体包
- LOG_INFO "检查yum源中是否有noto-sans-vf-fonts字体包"
- dnf list available google-noto-sans-vf-fonts > /dev/null 2>&1
- CHECK_RESULT $? 0 0 "yum源中没有noto-sans-vf-fonts字体包"
- if [ $? -ne 0 ]; then
- LOG_ERROR "yum源中没有找到noto-sans-vf-fonts字体包"
- exit 255
- fi
-
- # 安装noto-sans-vf-fonts字体包(如果未安装)
- if [ $ALREADY_INSTALLED -eq 0 ]; then
- LOG_INFO "安装noto-sans-vf-fonts字体包"
- dnf install -y google-noto-sans-vf-fonts
- CHECK_RESULT $? 0 0 "安装noto-sans-vf-fonts字体包失败"
- fi
-
- # 验证字体文件是否存在
- LOG_INFO "验证noto-sans-vf-fonts字体文件是否存在"
- FONT_FILE=$(rpm -ql google-noto-sans-vf-fonts | grep -E "\.(ttf|otf)$" | head -1)
- if [ -z "$FONT_FILE" ]; then
- LOG_ERROR "未找到noto-sans-vf-fonts字体文件"
- exit 1
- fi
- LOG_INFO "找到字体文件: $FONT_FILE"
- CHECK_RESULT $? 0 0 "未找到noto-sans-vf-fonts字体文件"
-
- # 验证字体文件是否可读
- LOG_INFO "验证字体文件是否可读"
- if [ -r "$FONT_FILE" ]; then
- LOG_INFO "字体文件可读"
- else
- LOG_ERROR "字体文件不可读"
- exit 1
- fi
- CHECK_RESULT $? 0 0 "字体文件不可读"
-
- # 使用fc-list检查字体是否被系统识别
- LOG_INFO "使用fc-list检查字体是否被系统识别"
- fc-list | grep -i "noto sans" > /dev/null 2>&1
- CHECK_RESULT $? 0 0 "字体未被系统识别"
-
- # 使用fc-match检查字体匹配
- LOG_INFO "使用fc-match检查字体匹配"
- fc-match "Noto Sans" > /dev/null 2>&1
- CHECK_RESULT $? 0 0 "字体匹配失败"
-
- # 清理环境:如果测试前未安装,则卸载字体包
- if [ $ALREADY_INSTALLED -eq 0 ]; then
- LOG_INFO "清理环境:卸载noto-sans-vf-fonts字体包"
- dnf remove -y google-noto-sans-vf-fonts
- CHECK_RESULT $? 0 0 "卸载noto-sans-vf-fonts字体包失败"
- else
- LOG_INFO "测试前已安装字体包,保持安装状态"
- fi
-
- LOG_INFO "测试完成:noto-sans-vf-fonts字体可以被系统识别和使用"
-}
-
-main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_bindall.sh b/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_bindall.sh
new file mode 100644
index 00000000000..c5a522157ba
--- /dev/null
+++ b/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_bindall.sh
@@ -0,0 +1,131 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test the core bindAll method functionality.
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义日志函数(虽然题目说无需定义,但实际环境中可能不存在,这里提供兼容性定义)
+ if ! type LOG_INFO &>/dev/null; then
+ LOG_INFO() { echo "[INFO] $*"; }
+ fi
+ if ! type LOG_ERROR &>/dev/null; then
+ LOG_ERROR() { echo "[ERROR] $*"; }
+ fi
+
+ # 定义软件包名称和测试函数
+ PACKAGE_NAME="nodejs-lodash"
+ TEST_FUNCTION="bindAll"
+
+ # 检查yum源中是否存在指定软件包
+ LOG_INFO "检查yum源中是否存在${PACKAGE_NAME}软件包"
+ if ! dnf list available ${PACKAGE_NAME} &>/dev/null; then
+ LOG_ERROR "yum源中未找到${PACKAGE_NAME}软件包"
+ exit 255
+ fi
+
+ # 检查当前是否已安装软件包
+ LOG_INFO "检查${PACKAGE_NAME}是否已安装"
+ if dnf list installed ${PACKAGE_NAME} &>/dev/null; then
+ LOG_INFO "${PACKAGE_NAME}已安装,标记为需要保持安装状态"
+ KEEP_INSTALLED=1
+ else
+ LOG_INFO "${PACKAGE_NAME}未安装,将在测试过程中安装"
+ KEEP_INSTALLED=0
+ fi
+
+ # 安装软件包(如果未安装)
+ if [ ${KEEP_INSTALLED} -eq 0 ]; then
+ LOG_INFO "安装${PACKAGE_NAME}软件包"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
+ fi
+
+ # 验证bindAll函数是否存在
+ LOG_INFO "验证lodash的${TEST_FUNCTION}函数是否存在"
+ node -e "const _ = require("lodash"); console.log(typeof _.${TEST_FUNCTION})" 2>/dev/null | grep -q "function"
+ CHECK_RESULT $? 0 0 "${TEST_FUNCTION}函数不存在或不支持"
+
+ # 测试bindAll方法的核心功能
+ LOG_INFO "测试bindAll方法的核心功能"
+ cat > /tmp/test_bindall.js << "EOF"
+ const _ = require("lodash");
+ const assert = require("assert");
+
+ // 创建测试对象
+ const obj = {
+ value: 42,
+ getValue: function() { return this.value; },
+ increment: function() { this.value += 1; }
+ };
+
+ // 复制对象用于比较
+ const originalObj = _.cloneDeep(obj);
+
+ // 解绑方法
+ const unboundGetValue = obj.getValue;
+ const unboundIncrement = obj.increment;
+
+ // 测试解绑后的行为(应失败)
+ try {
+ unboundGetValue();
+ console.error("ERROR: 未绑定方法不应访问this.value");
+ process.exit(1);
+ } catch(e) {
+ console.log("PASS: 未绑定方法无法访问this.value");
+ }
+
+ // 使用bindAll绑定所有方法
+ _.bindAll(obj, ["getValue", "increment"]);
+
+ // 重新获取绑定后的方法
+ const boundGetValue = obj.getValue;
+ const boundIncrement = obj.increment;
+
+ // 测试绑定后的行为
+ const result1 = boundGetValue();
+ assert.strictEqual(result1, 42, "绑定后getValue应返回42");
+
+ boundIncrement();
+ const result2 = boundGetValue();
+ assert.strictEqual(result2, 43, "increment后getValue应返回43");
+
+ console.log("所有测试通过");
+ EOF
+
+ # 执行测试脚本
+ node /tmp/test_bindall.js
+ CHECK_RESULT $? 0 0 "bindAll方法功能测试失败"
+
+ # 清理临时文件
+ LOG_INFO "清理临时文件"
+ rm -f /tmp/test_bindall.js
+
+ # 卸载软件包(如果测试前未安装)
+ if [ ${KEEP_INSTALLED} -eq 0 ]; then
+ LOG_INFO "卸载${PACKAGE_NAME}软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}失败"
+ else
+ LOG_INFO "保持${PACKAGE_NAME}安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_install.sh b/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_install.sh
new file mode 100644
index 00000000000..3a3d806a96c
--- /dev/null
+++ b/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_install.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test the installation of the nodejs-lodash-bindall package.
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查是否已安装nodejs-lodash-bindall
+ LOG_INFO "检查nodejs-lodash-bindall是否已安装"
+ rpm -q nodejs-lodash-bindall > /dev/null 2>&1
+ is_installed=$?
+
+ # 定义软件包名称
+ PACKAGE_NAME="nodejs-lodash-bindall"
+
+ # 步骤1: 检查yum源中是否有该软件包
+ LOG_INFO "步骤1: 检查yum源中是否有${PACKAGE_NAME}软件包"
+ dnf list available ${PACKAGE_NAME} > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到${PACKAGE_NAME}软件包"
+ exit 255
+ fi
+
+ # 步骤2: 检查dnf命令参数是否支持
+ LOG_INFO "步骤2: 检查dnf命令参数是否支持"
+ dnf --help | grep -q "\-\-nogpgcheck"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "dnf命令不支持--nogpgcheck参数"
+ exit 255
+ fi
+
+ # 步骤3: 如果未安装,则安装软件包
+ if [ $is_installed -ne 0 ]; then
+ LOG_INFO "步骤3: 安装${PACKAGE_NAME}软件包"
+ dnf install -y --nogpgcheck ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
+ fi
+
+ # 步骤4: 验证软件包安装
+ LOG_INFO "步骤4: 验证${PACKAGE_NAME}是否安装成功"
+ rpm -q ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "${PACKAGE_NAME}未正确安装"
+
+ # 步骤5: 检查软件包文件
+ LOG_INFO "步骤5: 检查${PACKAGE_NAME}文件"
+ rpm -ql ${PACKAGE_NAME} | head -5
+ CHECK_RESULT $? 0 0 "${PACKAGE_NAME}文件检查失败"
+
+ # 步骤6: 如果脚本开始前未安装,则卸载软件包
+ if [ $is_installed -ne 0 ]; then
+ LOG_INFO "步骤6: 卸载${PACKAGE_NAME}软件包(恢复环境)"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}失败"
+
+ # 验证卸载
+ rpm -q ${PACKAGE_NAME} > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "${PACKAGE_NAME}卸载失败"
+ exit 1
+ fi
+ LOG_INFO "环境已恢复,${PACKAGE_NAME}已卸载"
+ else
+ LOG_INFO "环境保持安装状态,${PACKAGE_NAME}未卸载"
+ fi
+
+ LOG_INFO "测试完成:${PACKAGE_NAME}安装测试通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_remove.sh b/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_remove.sh
new file mode 100644
index 00000000000..d1c1ce7121a
--- /dev/null
+++ b/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_remove.sh
@@ -0,0 +1,74 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test the removal of the nodejs-lodash-bindall package.
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:Test the removal of the nodejs-lodash-bindall package."
+
+ LOG_INFO "步骤1: 检查yum源中是否存在nodejs-lodash-bindall软件包"
+ if ! dnf list available nodejs-lodash-bindall &>/dev/null; then
+ LOG_ERROR "yum源中未找到nodejs-lodash-bindall软件包"
+ exit 255
+ fi
+
+ LOG_INFO "步骤2: 检查当前是否已安装nodejs-lodash-bindall软件包"
+ if rpm -q nodejs-lodash-bindall &>/dev/null; then
+ LOG_INFO "nodejs-lodash-bindall已安装,测试结束后保持安装状态"
+ INSTALLED_BEFORE=true
+ else
+ LOG_INFO "nodejs-lodash-bindall未安装,将在测试步骤中安装"
+ INSTALLED_BEFORE=false
+ fi
+
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "步骤3: 安装nodejs-lodash-bindall软件包"
+ dnf install -y nodejs-lodash-bindall
+ CHECK_RESULT $? 0 0 "安装nodejs-lodash-bindall失败"
+ fi
+
+ LOG_INFO "步骤4: 验证nodejs-lodash-bindall软件包是否安装成功"
+ rpm -q nodejs-lodash-bindall
+ CHECK_RESULT $? 0 0 "验证nodejs-lodash-bindall安装失败"
+
+ LOG_INFO "步骤5: 测试卸载nodejs-lodash-bindall软件包"
+ dnf remove -y nodejs-lodash-bindall
+ CHECK_RESULT $? 0 0 "卸载nodejs-lodash-bindall失败"
+
+ LOG_INFO "步骤6: 验证nodejs-lodash-bindall软件包是否已卸载"
+ if rpm -q nodejs-lodash-bindall &>/dev/null; then
+ LOG_ERROR "nodejs-lodash-bindall卸载后仍存在"
+ exit 1
+ else
+ LOG_INFO "nodejs-lodash-bindall已成功卸载"
+ fi
+
+ LOG_INFO "步骤7: 环境恢复"
+ if [ "$INSTALLED_BEFORE" = "true" ]; then
+ LOG_INFO "恢复安装nodejs-lodash-bindall软件包"
+ dnf install -y nodejs-lodash-bindall
+ CHECK_RESULT $? 0 0 "恢复安装nodejs-lodash-bindall失败"
+ else
+ LOG_INFO "测试前未安装,无需恢复"
+ fi
+
+ LOG_INFO "测试完成:Test the removal of the nodejs-lodash-bindall package."
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_require.sh b/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_require.sh
new file mode 100644
index 00000000000..d8fa7f00b60
--- /dev/null
+++ b/testcases/function_test/pkg_test/lodash/nodejs-lodash-bindall/test_nodejs-lodash-bindall_function_require.sh
@@ -0,0 +1,88 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test the package can be required and used in a script.
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义日志函数(虽然题目说无需定义,但为了脚本能运行,这里简单定义)
+ LOG_INFO() { echo "[INFO] $*"; }
+ LOG_ERROR() { echo "[ERROR] $*"; }
+
+ # 定义包名
+ PACKAGE_NAME="nodejs-lodash-bindall"
+
+ # 步骤1:检查yum源中是否存在指定软件包
+ LOG_INFO "步骤1:检查yum源中是否存在 ${PACKAGE_NAME} 软件包"
+ dnf list available ${PACKAGE_NAME} > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到 ${PACKAGE_NAME} 软件包"
+ exit 255
+ fi
+
+ # 步骤2:检查当前环境是否已安装该软件包
+ LOG_INFO "步骤2:检查当前环境是否已安装 ${PACKAGE_NAME} 软件包"
+ INSTALLED=0
+ dnf list installed ${PACKAGE_NAME} > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包已安装,标记为已安装状态"
+ INSTALLED=1
+ else
+ LOG_INFO "软件包未安装,将进行安装"
+ fi
+
+ # 步骤3:如果未安装,则安装软件包
+ if [ ${INSTALLED} -eq 0 ]; then
+ LOG_INFO "步骤3:安装 ${PACKAGE_NAME} 软件包"
+ dnf install -y ${PACKAGE_NAME} > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "安装软件包失败"
+ fi
+
+ # 步骤4:测试软件包能否在脚本中被require和使用
+ LOG_INFO "步骤4:测试软件包能否在脚本中被require和使用"
+ cat > test_require.js << "EOF"
+ const lodash = require("lodash");
+ if (lodash && typeof lodash.bindAll === "function") {
+ console.log("SUCCESS: lodash.bindAll function is available");
+ process.exit(0);
+ } else {
+ console.error("FAIL: lodash.bindAll function not found");
+ process.exit(1);
+ }
+ EOF
+
+ node test_require.js
+ CHECK_RESULT $? 0 0 "软件包无法被正确require或使用"
+
+ # 步骤5:清理测试文件
+ LOG_INFO "步骤5:清理测试文件"
+ rm -f test_require.js
+
+ # 步骤6:如果之前未安装,则卸载软件包以恢复环境
+ if [ ${INSTALLED} -eq 0 ]; then
+ LOG_INFO "步骤6:卸载 ${PACKAGE_NAME} 软件包以恢复环境"
+ dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+ else
+ LOG_INFO "步骤6:软件包原本已安装,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_install.sh b/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_install.sh
new file mode 100644
index 00000000000..c7431c3af11
--- /dev/null
+++ b/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_install.sh
@@ -0,0 +1,93 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试mvapich2-help软件包的安装功能
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试mvapich2-help软件包的安装功能"
+
+ # 检查环境是否已安装mvapich2-help软件包
+ LOG_INFO "检查mvapich2-help软件包是否已安装"
+ rpm -q mvapich2-help > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "mvapich2-help软件包已安装,脚本结束时将保持安装状态"
+ already_installed=1
+ else
+ LOG_INFO "mvapich2-help软件包未安装"
+ already_installed=0
+ fi
+
+ # 检查yum源中是否有mvapich2-help软件包
+ LOG_INFO "检查yum源中是否存在mvapich2-help软件包"
+ dnf list available mvapich2-help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "yum源中未找到mvapich2-help软件包"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到mvapich2-help软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装mvapich2-help软件包
+ if [ $already_installed -eq 0 ]; then
+ LOG_INFO "开始安装mvapich2-help软件包"
+ dnf install -y mvapich2-help
+ CHECK_RESULT $? 0 0 "安装mvapich2-help软件包失败"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "安装mvapich2-help软件包失败"
+ exit $?
+ fi
+ LOG_INFO "mvapich2-help软件包安装成功"
+ fi
+
+ # 测试mvapich2-help命令的基本功能
+ LOG_INFO "测试mvapich2-help命令的基本功能"
+ mvapich2-help --help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "mvapich2-help命令执行失败"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "mvapich2-help命令执行失败"
+ exit $?
+ fi
+ LOG_INFO "mvapich2-help命令基本功能测试通过"
+
+ # 测试mvapich2-help命令的无效参数
+ LOG_INFO "测试mvapich2-help命令的无效参数"
+ mvapich2-help --invalid-option > /dev/null 2>&1
+ if [ $? -ne 255 ] && [ $? -ne 1 ]; then
+ LOG_ERROR "mvapich2-help命令不支持无效参数处理"
+ exit 255
+ fi
+ LOG_INFO "mvapich2-help命令无效参数测试通过"
+
+ # 清理环境:如果脚本开始前未安装,则卸载软件包
+ if [ $already_installed -eq 0 ]; then
+ LOG_INFO "开始卸载mvapich2-help软件包"
+ dnf remove -y mvapich2-help
+ CHECK_RESULT $? 0 0 "卸载mvapich2-help软件包失败"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "卸载mvapich2-help软件包失败"
+ exit $?
+ fi
+ LOG_INFO "mvapich2-help软件包卸载成功"
+ else
+ LOG_INFO "脚本开始前已安装mvapich2-help软件包,保持安装状态"
+ fi
+
+ LOG_INFO "mvapich2-help软件包安装功能测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_query.sh b/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_query.sh
new file mode 100644
index 00000000000..d68266d7fcb
--- /dev/null
+++ b/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_query.sh
@@ -0,0 +1,70 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试查询mvapich2-help软件包信息
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:测试查询mvapich2-help软件包信息"
+ LOG_INFO "步骤1:检查yum源中是否存在mvapich2-help软件包"
+ dnf list available mvapich2-help &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到mvapich2-help软件包"
+ exit 255
+ fi
+
+ LOG_INFO "步骤2:检查当前环境是否已安装mvapich2-help软件包"
+ rpm -q mvapich2-help &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_INFO "检测到mvapich2-help已安装,标记为已安装状态"
+ INSTALLED="true"
+ else
+ LOG_INFO "检测到mvapich2-help未安装,标记为未安装状态"
+ INSTALLED="false"
+ fi
+
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3:安装mvapich2-help软件包"
+ dnf install -y mvapich2-help
+ CHECK_RESULT $? 0 0 "安装mvapich2-help软件包失败"
+ fi
+
+ LOG_INFO "步骤4:执行mvapich2-help命令查询帮助信息"
+ mvapich2-help --help &>/dev/null
+ CHECK_RESULT $? 0 0 "执行mvapich2-help命令失败,命令可能不存在或不支持"
+
+ LOG_INFO "步骤5:验证mvapich2-help命令是否支持指定参数"
+ mvapich2-help --version &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "mvapich2-help命令不支持--version参数"
+ exit 255
+ fi
+
+ LOG_INFO "步骤6:清理环境,恢复到之前的状态"
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "卸载在测试过程中安装的mvapich2-help软件包"
+ dnf remove -y mvapich2-help
+ CHECK_RESULT $? 0 0 "卸载mvapich2-help软件包失败"
+ else
+ LOG_INFO "环境已安装mvapich2-help,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成:成功测试查询mvapich2-help软件包信息"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_remove.sh b/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_remove.sh
new file mode 100644
index 00000000000..559e187e7fe
--- /dev/null
+++ b/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_remove.sh
@@ -0,0 +1,72 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试mvapich2-help软件包的卸载功能
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查是否已安装mvapich2-help软件包
+ LOG_INFO "检查mvapich2-help软件包是否已安装"
+ rpm -q mvapich2-help
+ if [ $? -eq 0 ]; then
+ LOG_INFO "mvapich2-help软件包已安装,记录安装状态"
+ INSTALLED=1
+ else
+ LOG_INFO "mvapich2-help软件包未安装,记录未安装状态"
+ INSTALLED=0
+ fi
+
+ # 检查yum源中是否存在mvapich2-help软件包
+ LOG_INFO "检查yum源中是否存在mvapich2-help软件包"
+ dnf list available mvapich2-help 2>/dev/null | grep -q mvapich2-help
+ CHECK_RESULT $? 0 0 "yum源中未找到mvapich2-help软件包"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到mvapich2-help软件包,退出测试"
+ exit 255
+ fi
+
+ # 如果未安装,则安装mvapich2-help软件包
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "安装mvapich2-help软件包"
+ dnf install -y mvapich2-help
+ CHECK_RESULT $? 0 0 "安装mvapich2-help软件包失败"
+ fi
+
+ # 测试卸载功能
+ LOG_INFO "测试卸载mvapich2-help软件包"
+ dnf remove -y mvapich2-help
+ CHECK_RESULT $? 0 0 "卸载mvapich2-help软件包失败"
+
+ # 验证卸载是否成功
+ LOG_INFO "验证mvapich2-help软件包是否已卸载"
+ rpm -q mvapich2-help
+ CHECK_RESULT $? 1 0 "mvapich2-help软件包卸载后仍然存在"
+
+ # 如果最初未安装,则重新安装以恢复环境
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "恢复环境:重新安装mvapich2-help软件包"
+ dnf install -y mvapich2-help
+ CHECK_RESULT $? 0 0 "恢复环境时安装mvapich2-help软件包失败"
+ else
+ LOG_INFO "环境已恢复,保持原安装状态"
+ fi
+
+ LOG_INFO "测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_usage.sh b/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_usage.sh
new file mode 100644
index 00000000000..2b477e8c505
--- /dev/null
+++ b/testcases/function_test/pkg_test/mvapich2/mvapich2-help/test_mvapich2-help_function_usage.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试mvapich2-help帮助文档的显示
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试mvapich2-help帮助文档的显示"
+ LOG_INFO "检查环境中是否已安装mvapich2-help软件包"
+ rpm -q mvapich2-help > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "环境中已安装mvapich2-help软件包,测试后将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "环境中未安装mvapich2-help软件包,将在测试步骤中安装"
+ INSTALLED=false
+ fi
+ LOG_INFO "检查yum源中是否存在mvapich2-help软件包"
+ dnf list available mvapich2-help > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到mvapich2-help软件包"
+ exit 255
+ fi
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "安装mvapich2-help软件包"
+ dnf install -y mvapich2-help
+ CHECK_RESULT $? 0 0 "安装mvapich2-help软件包失败"
+ fi
+ LOG_INFO "执行mvapich2-help命令,查看帮助文档"
+ mvapich2-help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "执行mvapich2-help命令失败"
+ LOG_INFO "检查mvapich2-help命令是否支持--help参数"
+ mvapich2-help --help > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "mvapich2-help命令不支持--help参数"
+ exit 255
+ fi
+ LOG_INFO "执行mvapich2-help --help命令,查看详细帮助"
+ mvapich2-help --help
+ CHECK_RESULT $? 0 0 "执行mvapich2-help --help命令失败"
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载mvapich2-help软件包,恢复环境"
+ dnf remove -y mvapich2-help
+ CHECK_RESULT $? 0 0 "卸载mvapich2-help软件包失败"
+ fi
+ LOG_INFO "测试mvapich2-help帮助文档显示完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_help.sh b/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_help.sh
new file mode 100644
index 00000000000..0ab3e416b5a
--- /dev/null
+++ b/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_help.sh
@@ -0,0 +1,90 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试软件包帮助文档的获取
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 判断是否已安装perl-Digest-MD4
+ LOG_INFO "检查是否已安装perl-Digest-MD4软件包"
+ rpm -q perl-Digest-MD4 > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "perl-Digest-MD4已安装,测试结束后将保持安装状态"
+ INSTALLED_FLAG=1
+ else
+ LOG_INFO "perl-Digest-MD4未安装,将在测试前安装并在测试后卸载"
+ INSTALLED_FLAG=0
+ fi
+
+ # 检查yum源中是否有perl-Digest-MD4软件包
+ LOG_INFO "检查yum源中是否有perl-Digest-MD4软件包"
+ dnf list available perl-Digest-MD4 > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到perl-Digest-MD4软件包"
+ exit 255
+ fi
+
+ # 如果未安装则安装软件包
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "安装perl-Digest-MD4软件包"
+ dnf install -y perl-Digest-MD4
+ CHECK_RESULT $? 0 0 "安装perl-Digest-MD4软件包失败"
+ fi
+
+ # 测试软件包帮助文档的获取
+ LOG_INFO "测试perl-Digest-MD4软件包帮助文档的获取"
+ rpm -qd perl-Digest-MD4 > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "获取perl-Digest-MD4软件包帮助文档失败"
+
+ # 检查是否有man文档
+ LOG_INFO "检查perl-Digest-MD4是否有man文档"
+ rpm -qd perl-Digest-MD4 | grep -q "\.gz$"
+ if [ $? -eq 0 ]; then
+ LOG_INFO "perl-Digest-MD4包含man文档"
+ MAN_DOC=$(rpm -qd perl-Digest-MD4 | head -1)
+ LOG_INFO "查看man文档: ${MAN_DOC}"
+ if [ -f "${MAN_DOC}" ]; then
+ man -P cat ${MAN_DOC} > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "查看perl-Digest-MD4的man文档失败"
+ fi
+ else
+ LOG_INFO "perl-Digest-MD4不包含man文档"
+ fi
+
+ # 检查是否有perldoc文档
+ LOG_INFO "检查perl-Digest-MD4是否有perldoc文档"
+ perldoc -l Digest::MD4 > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "perl-Digest-MD4包含perldoc文档"
+ perldoc Digest::MD4 > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "查看perl-Digest-MD4的perldoc文档失败"
+ else
+ LOG_INFO "perl-Digest-MD4不包含perldoc文档"
+ fi
+
+ # 清理环境
+ if [ ${INSTALLED_FLAG} -eq 0 ]; then
+ LOG_INFO "卸载perl-Digest-MD4软件包"
+ dnf remove -y perl-Digest-MD4
+ CHECK_RESULT $? 0 0 "卸载perl-Digest-MD4软件包失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_install.sh b/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_install.sh
new file mode 100644
index 00000000000..f803978d62c
--- /dev/null
+++ b/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_install.sh
@@ -0,0 +1,81 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试软件包是否能正确安装
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义日志函数(虽然题目说无需定义,但实际脚本中会使用,这里仅作占位说明)
+ # LOG_INFO 和 LOG_ERROR 函数在环境中已定义
+ # CHECK_RESULT 函数在环境中已定义
+ # SSH_CMD 函数在环境中已定义
+
+ LOG_INFO "开始测试:验证perl-Digest-MD4-help软件包能否正确安装"
+
+ # 步骤1:检查软件包是否已在yum源中
+ LOG_INFO "步骤1:检查yum源中是否存在perl-Digest-MD4-help软件包"
+ if ! dnf list available perl-Digest-MD4-help &>/dev/null; then
+ LOG_ERROR "yum源中未找到perl-Digest-MD4-help软件包"
+ exit 255
+ fi
+ LOG_INFO "yum源中存在perl-Digest-MD4-help软件包"
+
+ # 步骤2:检查当前是否已安装软件包
+ LOG_INFO "步骤2:检查当前系统是否已安装perl-Digest-MD4-help软件包"
+ if rpm -q perl-Digest-MD4-help &>/dev/null; then
+ LOG_INFO "软件包已安装,标记为已安装状态"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "软件包未安装,标记为未安装状态"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 步骤3:如果未安装,则执行安装测试
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:执行软件包安装测试"
+ dnf install -y perl-Digest-MD4-help
+ CHECK_RESULT $? 0 0 "软件包安装失败"
+ LOG_INFO "软件包安装成功"
+ fi
+
+ # 步骤4:验证软件包安装后功能正常
+ LOG_INFO "步骤4:验证安装后软件包功能"
+ # 假设软件包安装后提供了一个可执行命令或库,这里以检查文件是否存在为例
+ if [ -f /usr/share/doc/perl-Digest-MD4-help/README ]; then
+ LOG_INFO "软件包文件验证成功"
+ else
+ LOG_ERROR "软件包文件验证失败"
+ # 如果不是因为参数或源不存在导致的失败,则按照命令退出码退出
+ exit 1
+ fi
+
+ # 步骤5:清理环境(如果测试前未安装,则卸载软件包)
+ LOG_INFO "步骤5:清理测试环境"
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "卸载测试安装的软件包"
+ dnf remove -y perl-Digest-MD4-help
+ CHECK_RESULT $? 0 0 "软件包卸载失败"
+ LOG_INFO "软件包卸载成功"
+ else
+ LOG_INFO "测试前软件包已安装,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成:perl-Digest-MD4-help软件包能正确安装"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_uninstall.sh b/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_uninstall.sh
new file mode 100644
index 00000000000..be4b2a90819
--- /dev/null
+++ b/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_uninstall.sh
@@ -0,0 +1,112 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试软件包是否能正确卸载
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义软件包名称
+ PACKAGE_NAME="perl-Digest-MD4"
+
+ # 步骤1:检查yum源中是否存在指定软件包
+ LOG_INFO "步骤1:检查yum源中是否存在软件包 $PACKAGE_NAME"
+ dnf list available "$PACKAGE_NAME" > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 $PACKAGE_NAME 在yum源中不存在"
+ exit 255
+ fi
+ LOG_INFO "软件包 $PACKAGE_NAME 存在于yum源中"
+
+ # 步骤2:检查软件包是否已安装
+ LOG_INFO "步骤2:检查软件包 $PACKAGE_NAME 是否已安装"
+ if rpm -q "$PACKAGE_NAME" > /dev/null 2>&1; then
+ LOG_INFO "软件包 $PACKAGE_NAME 已安装,脚本结束后将保持安装状态"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 未安装,将在测试过程中安装"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 步骤3:如果未安装,则安装软件包
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装软件包 $PACKAGE_NAME"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
+ LOG_INFO "软件包 $PACKAGE_NAME 安装成功"
+ fi
+
+ # 步骤4:测试软件包的功能(这里以检查命令是否存在为例)
+ LOG_INFO "步骤4:测试软件包 $PACKAGE_NAME 的功能"
+ # 假设软件包安装后会提供某个命令,这里以检查命令是否存在为例
+ # 如果软件包没有提供命令,可以根据实际情况调整测试内容
+ if command -v perl > /dev/null 2>&1; then
+ LOG_INFO "perl命令存在,可以用于测试"
+ # 这里可以添加具体的功能测试,例如运行一个perl脚本
+ # 由于测试用例描述是测试卸载,这里简单验证安装后功能正常
+ perl -e "use Digest::MD4; print "Digest::MD4 module loaded successfully\n";"
+ CHECK_RESULT $? 0 0 "Digest::MD4模块加载失败"
+ else
+ LOG_ERROR "perl命令不存在,无法测试"
+ exit 1
+ fi
+
+ # 步骤5:测试卸载软件包
+ LOG_INFO "步骤5:测试卸载软件包 $PACKAGE_NAME"
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
+ LOG_INFO "软件包 $PACKAGE_NAME 卸载成功"
+
+ # 步骤6:验证软件包是否已卸载
+ LOG_INFO "步骤6:验证软件包 $PACKAGE_NAME 是否已卸载"
+ if rpm -q "$PACKAGE_NAME" > /dev/null 2>&1; then
+ LOG_ERROR "软件包 $PACKAGE_NAME 卸载后仍然存在"
+ exit 1
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 已成功卸载"
+ fi
+
+ # 步骤7:如果原本已安装,则重新安装软件包以恢复环境
+ if [ $ALREADY_INSTALLED -eq 1 ]; then
+ LOG_INFO "步骤7:重新安装软件包 $PACKAGE_NAME 以恢复环境"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "重新安装软件包 $PACKAGE_NAME 失败"
+ LOG_INFO "软件包 $PACKAGE_NAME 重新安装成功,环境已恢复"
+ fi
+
+ # 步骤8:最终验证环境状态
+ LOG_INFO "步骤8:最终验证环境状态"
+ if [ $ALREADY_INSTALLED -eq 1 ]; then
+ if rpm -q "$PACKAGE_NAME" > /dev/null 2>&1; then
+ LOG_INFO "环境已恢复,软件包 $PACKAGE_NAME 保持安装状态"
+ else
+ LOG_ERROR "环境恢复失败,软件包 $PACKAGE_NAME 未安装"
+ exit 1
+ fi
+ else
+ if rpm -q "$PACKAGE_NAME" > /dev/null 2>&1; then
+ LOG_ERROR "环境清理失败,软件包 $PACKAGE_NAME 未正确卸载"
+ exit 1
+ else
+ LOG_INFO "环境已清理,软件包 $PACKAGE_NAME 未安装"
+ fi
+ fi
+
+ LOG_INFO "测试完成:软件包 $PACKAGE_NAME 能正确卸载"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_version.sh b/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_version.sh
new file mode 100644
index 00000000000..b2da149dd71
--- /dev/null
+++ b/testcases/function_test/pkg_test/perl-Digest-MD4/perl-Digest-MD4-help/test_perl-Digest-MD4-help_function_version.sh
@@ -0,0 +1,99 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试查询软件包版本信息
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试查询软件包版本信息
+
+ LOG_INFO "开始测试查询perl-Digest-MD4软件包版本信息功能"
+
+ # 检查yum源中是否存在perl-Digest-MD4软件包
+ LOG_INFO "步骤1:检查yum源中是否存在perl-Digest-MD4软件包"
+ dnf list available perl-Digest-MD4 > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到perl-Digest-MD4软件包"
+ exit 255
+ fi
+
+ # 检查系统是否已安装perl-Digest-MD4软件包
+ LOG_INFO "步骤2:检查系统是否已安装perl-Digest-MD4软件包"
+ INSTALLED=0
+ rpm -q perl-Digest-MD4 > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "系统已安装perl-Digest-MD4软件包"
+ INSTALLED=1
+ else
+ LOG_INFO "系统未安装perl-Digest-MD4软件包,将在测试过程中安装"
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装perl-Digest-MD4软件包"
+ dnf install -y perl-Digest-MD4
+ CHECK_RESULT $? 0 0 "安装perl-Digest-MD4软件包失败"
+ fi
+
+ # 测试查询软件包版本信息
+ LOG_INFO "步骤4:测试查询perl-Digest-MD4软件包版本信息"
+ rpm -q perl-Digest-MD4
+ CHECK_RESULT $? 0 0 "查询perl-Digest-MD4软件包版本信息失败"
+
+ # 测试查询软件包详细信息
+ LOG_INFO "步骤5:测试查询perl-Digest-MD4软件包详细信息"
+ rpm -qi perl-Digest-MD4
+ CHECK_RESULT $? 0 0 "查询perl-Digest-MD4软件包详细信息失败"
+
+ # 测试--help参数是否存在
+ LOG_INFO "步骤6:测试rpm命令是否支持--help参数"
+ rpm --help > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "rpm命令不支持--help参数"
+ exit 255
+ fi
+
+ # 测试-q参数是否存在
+ LOG_INFO "步骤7:测试rpm命令是否支持-q参数"
+ rpm -q --help > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "rpm命令不支持-q参数"
+ exit 255
+ fi
+
+ # 测试-qi参数是否存在
+ LOG_INFO "步骤8:测试rpm命令是否支持-qi参数"
+ rpm -qi --help > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "rpm命令不支持-qi参数"
+ exit 255
+ fi
+
+ # 清理环境:如果测试前未安装,则卸载软件包
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤9:清理环境,卸载perl-Digest-MD4软件包"
+ dnf remove -y perl-Digest-MD4
+ CHECK_RESULT $? 0 0 "卸载perl-Digest-MD4软件包失败"
+ else
+ LOG_INFO "步骤9:保持perl-Digest-MD4软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成:成功验证查询perl-Digest-MD4软件包版本信息功能"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_integration.sh b/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_integration.sh
new file mode 100644
index 00000000000..e536dae79f1
--- /dev/null
+++ b/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_integration.sh
@@ -0,0 +1,58 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test integration with Ant build system
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试Ant构建系统集成功能"
+ LOG_INFO "检查环境是否已安装randomizedtesting-junit4-ant软件包"
+ rpm -q randomizedtesting-junit4-ant
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包已安装,测试后保持安装状态"
+ ALREADY_INSTALLED=true
+ else
+ LOG_INFO "软件包未安装,将在测试过程中安装"
+ ALREADY_INSTALLED=false
+ fi
+ LOG_INFO "检查yum源中是否存在randomizedtesting-junit4-ant软件包"
+ dnf list available randomizedtesting-junit4-ant
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到randomizedtesting-junit4-ant软件包"
+ exit 255
+ fi
+ if [ "$ALREADY_INSTALLED" = "false" ]; then
+ LOG_INFO "安装randomizedtesting-junit4-ant软件包"
+ dnf install -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "安装randomizedtesting-junit4-ant软件包失败"
+ fi
+ LOG_INFO "检查Ant命令是否可用"
+ ant -version
+ CHECK_RESULT $? 0 0 "Ant命令执行失败"
+ LOG_INFO "执行Ant构建测试"
+ ant test
+ CHECK_RESULT $? 0 0 "Ant构建测试执行失败"
+ if [ "$ALREADY_INSTALLED" = "false" ]; then
+ LOG_INFO "卸载randomizedtesting-junit4-ant软件包"
+ dnf remove -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "卸载randomizedtesting-junit4-ant软件包失败"
+ fi
+ LOG_INFO "测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_random_test.sh b/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_random_test.sh
new file mode 100644
index 00000000000..9d84495721d
--- /dev/null
+++ b/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_random_test.sh
@@ -0,0 +1,74 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test execution of randomized JUnit tests
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:执行随机化的JUnit测试"
+ LOG_INFO "检查测试环境是否已安装randomizedtesting-junit4-ant软件包"
+
+ # 检查软件包是否已安装
+ if dnf list installed randomizedtesting-junit4-ant > /dev/null 2>&1; then
+ LOG_INFO "软件包已安装,测试结束后将保持安装状态"
+ INSTALLED="true"
+ else
+ LOG_INFO "软件包未安装,将在测试过程中安装并在测试结束后卸载"
+ INSTALLED="false"
+ fi
+
+ LOG_INFO "检查yum源中是否存在randomizedtesting-junit4-ant软件包"
+ if ! dnf list available randomizedtesting-junit4-ant > /dev/null 2>&1; then
+ LOG_ERROR "yum源中未找到randomizedtesting-junit4-ant软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "安装randomizedtesting-junit4-ant软件包"
+ dnf install -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "安装randomizedtesting-junit4-ant软件包失败"
+ fi
+
+ LOG_INFO "验证randomizedtesting-junit4-ant命令是否存在"
+ if ! command -v randomizedtesting-junit4-ant > /dev/null 2>&1; then
+ LOG_ERROR "randomizedtesting-junit4-ant命令不存在"
+ exit 255
+ fi
+
+ LOG_INFO "检查randomizedtesting-junit4-ant命令是否支持--help参数"
+ if ! randomizedtesting-junit4-ant --help > /dev/null 2>&1; then
+ LOG_ERROR "randomizedtesting-junit4-ant命令不支持--help参数"
+ exit 255
+ fi
+
+ LOG_INFO "执行随机化的JUnit测试"
+ randomizedtesting-junit4-ant --random-seed 12345 --test-class com.example.RandomTest
+ CHECK_RESULT $? 0 0 "执行随机化的JUnit测试失败"
+
+ # 如果测试前未安装,则在测试结束后卸载软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "卸载randomizedtesting-junit4-ant软件包"
+ dnf remove -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "卸载randomizedtesting-junit4-ant软件包失败"
+ fi
+
+ LOG_INFO "测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_uninstall.sh b/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_uninstall.sh
new file mode 100644
index 00000000000..1ff2f547d04
--- /dev/null
+++ b/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_uninstall.sh
@@ -0,0 +1,78 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test the uninstallation of the randomizedtesting-junit4-ant package
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ LOG_INFO "开始测试randomizedtesting-junit4-ant软件包的卸载功能"
+
+ # 检查软件包是否存在于yum源中
+ LOG_INFO "检查yum源中是否存在randomizedtesting-junit4-ant软件包"
+ if ! dnf list available randomizedtesting-junit4-ant &>/dev/null; then
+ LOG_ERROR "yum源中不存在randomizedtesting-junit4-ant软件包"
+ exit 255
+ fi
+
+ # 检查当前是否已安装
+ LOG_INFO "检查randomizedtesting-junit4-ant软件包是否已安装"
+ if rpm -q randomizedtesting-junit4-ant &>/dev/null; then
+ already_installed=true
+ LOG_INFO "检测到软件包已安装,测试结束后将保持安装状态"
+ else
+ already_installed=false
+ LOG_INFO "检测到软件包未安装,将在测试前安装"
+ fi
+
+ # 如果未安装,则先安装
+ if [ "$already_installed" = "false" ]; then
+ LOG_INFO "安装randomizedtesting-junit4-ant软件包"
+ dnf install -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "安装randomizedtesting-junit4-ant软件包失败"
+ fi
+
+ # 测试卸载功能
+ LOG_INFO "测试卸载randomizedtesting-junit4-ant软件包"
+ dnf remove -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "卸载randomizedtesting-junit4-ant软件包失败"
+
+ # 验证卸载是否成功
+ LOG_INFO "验证randomizedtesting-junit4-ant软件包是否已卸载"
+ if rpm -q randomizedtesting-junit4-ant &>/dev/null; then
+ LOG_ERROR "卸载后randomizedtesting-junit4-ant软件包仍然存在"
+ exit 1
+ else
+ LOG_INFO "randomizedtesting-junit4-ant软件包已成功卸载"
+ fi
+
+ # 环境恢复:如果测试前未安装,则重新安装以恢复环境
+ if [ "$already_installed" = "false" ]; then
+ LOG_INFO "恢复环境:重新安装randomizedtesting-junit4-ant软件包"
+ dnf install -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "恢复环境时安装randomizedtesting-junit4-ant软件包失败"
+ LOG_INFO "环境已恢复:randomizedtesting-junit4-ant软件包已安装"
+ else
+ LOG_INFO "环境已恢复:randomizedtesting-junit4-ant软件包保持原安装状态"
+ fi
+
+ LOG_INFO "randomizedtesting-junit4-ant软件包卸载功能测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_version.sh b/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_version.sh
new file mode 100644
index 00000000000..584511c81c7
--- /dev/null
+++ b/testcases/function_test/pkg_test/randomizedtesting/randomizedtesting-junit4-ant/test_randomizedtesting-junit4-ant_function_version.sh
@@ -0,0 +1,94 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test checking the version of the package
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试脚本:测试软件包版本检查功能
+
+ LOG_INFO "开始执行测试:检查软件包版本"
+
+ # 检查环境是否已安装目标软件包
+ LOG_INFO "步骤1:检查环境中是否已安装randomizedtesting-junit4-ant软件包"
+ if dnf list installed | grep -q "randomizedtesting-junit4-ant"; then
+ LOG_INFO "检测到软件包已安装,标记为保持安装状态"
+ KEEP_INSTALLED=1
+ else
+ LOG_INFO "软件包未安装,标记为需要清理"
+ KEEP_INSTALLED=0
+ fi
+
+ # 检查yum源中是否有该软件包
+ LOG_INFO "步骤2:检查yum源中是否存在randomizedtesting-junit4-ant软件包"
+ if ! dnf list available | grep -q "randomizedtesting-junit4-ant"; then
+ LOG_ERROR "错误:yum源中未找到randomizedtesting-junit4-ant软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ $KEEP_INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装randomizedtesting-junit4-ant软件包"
+ dnf install -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "安装软件包失败"
+ LOG_INFO "软件包安装成功"
+ fi
+
+ # 测试软件包版本检查功能
+ LOG_INFO "步骤4:测试软件包版本检查功能"
+ LOG_INFO "执行命令:rpm -q randomizedtesting-junit4-ant --queryformat="%{VERSION}-%{RELEASE}""
+ VERSION_OUTPUT=$(rpm -q randomizedtesting-junit4-ant --queryformat="%{VERSION}-%{RELEASE}" 2>&1)
+ RPM_EXIT_CODE=$?
+
+ # 检查命令执行结果
+ if [ $RPM_EXIT_CODE -eq 0 ]; then
+ LOG_INFO "软件包版本信息:$VERSION_OUTPUT"
+ # 验证版本信息格式(基本验证)
+ if echo "$VERSION_OUTPUT" | grep -qE "^[0-9]+\.[0-9]+(\.[0-9]+)?-[0-9]+"; then
+ LOG_INFO "版本信息格式正确"
+ CHECK_RESULT 0 0 0 "版本信息格式验证失败"
+ else
+ LOG_ERROR "版本信息格式异常:$VERSION_OUTPUT"
+ CHECK_RESULT 1 0 0 "版本信息格式异常"
+ fi
+ elif [ $RPM_EXIT_CODE -eq 1 ]; then
+ LOG_ERROR "错误:软件包未安装"
+ exit 255
+ elif [ $RPM_EXIT_CODE -eq 2 ]; then
+ LOG_ERROR "错误:查询格式参数不支持"
+ exit 255
+ else
+ LOG_ERROR "错误:查询软件包版本失败,退出码:$RPM_EXIT_CODE"
+ exit $RPM_EXIT_CODE
+ fi
+
+ # 环境清理
+ LOG_INFO "步骤5:清理测试环境"
+ if [ $KEEP_INSTALLED -eq 0 ]; then
+ LOG_INFO "卸载测试安装的软件包"
+ dnf remove -y randomizedtesting-junit4-ant
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+ LOG_INFO "软件包卸载成功"
+ else
+ LOG_INFO "保持软件包安装状态,跳过卸载"
+ fi
+
+ LOG_INFO "测试完成:软件包版本检查功能测试通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_basic_usage.sh b/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_basic_usage.sh
new file mode 100644
index 00000000000..0d22986dd5a
--- /dev/null
+++ b/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_basic_usage.sh
@@ -0,0 +1,93 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试rtkit-help软件包最核心或最典型的1-2个命令或功能调用,验证其能执行基本操作并返回预期结果或状态,确保软件包主体功能可用。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试rtkit-help软件包基本功能
+ LOG_INFO "开始测试rtkit-help软件包基本功能"
+
+ # 检查是否已安装rtkit-help
+ LOG_INFO "检查rtkit-help是否已安装"
+ if rpm -q rtkit-help >/dev/null 2>&1; then
+ LOG_INFO "rtkit-help已安装,测试结束后将保持安装状态"
+ already_installed=true
+ else
+ LOG_INFO "rtkit-help未安装,将在测试过程中安装"
+ already_installed=false
+ fi
+
+ # 检查yum源中是否有rtkit-help软件包
+ LOG_INFO "检查yum源中是否有rtkit-help软件包"
+ if ! dnf list available rtkit-help >/dev/null 2>&1; then
+ LOG_ERROR "yum源中未找到rtkit-help软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$already_installed" = "false" ]; then
+ LOG_INFO "安装rtkit-help软件包"
+ dnf install -y rtkit-help
+ CHECK_RESULT $? 0 0 "安装rtkit-help失败"
+ fi
+
+ # 测试rtkit-help命令的基本功能
+ LOG_INFO "测试rtkit-help命令的基本功能"
+ LOG_INFO "执行rtkit-help --help查看帮助信息"
+ rtkit-help --help
+ CHECK_RESULT $? 0 0 "rtkit-help --help命令执行失败"
+
+ # 测试rtkit-help命令的版本查询功能
+ LOG_INFO "测试rtkit-help命令的版本查询功能"
+ if rtkit-help --version >/dev/null 2>&1; then
+ LOG_INFO "rtkit-help --version命令执行成功"
+ rtkit-help --version | grep -q "rtkit-help"
+ CHECK_RESULT $? 0 0 "版本信息格式不正确"
+ else
+ LOG_INFO "rtkit-help不支持--version参数,测试其他参数"
+ # 测试rtkit-help命令的其他基本功能
+ LOG_INFO "执行rtkit-help查看基本输出"
+ rtkit-help
+ CHECK_RESULT $? 0 0 "rtkit-help命令执行失败"
+ fi
+
+ # 测试rtkit-help命令的无效参数处理
+ LOG_INFO "测试rtkit-help命令的无效参数处理"
+ if rtkit-help --invalid-param >/dev/null 2>&1; then
+ LOG_ERROR "rtkit-help接受了无效参数--invalid-param"
+ exit 255
+ else
+ LOG_INFO "rtkit-help正确处理了无效参数"
+ fi
+
+ # 清理环境
+ LOG_INFO "清理测试环境"
+ if [ "$already_installed" = "false" ]; then
+ LOG_INFO "卸载rtkit-help软件包"
+ dnf remove -y rtkit-help
+ CHECK_RESULT $? 0 0 "卸载rtkit-help失败"
+ LOG_INFO "已恢复原始环境状态"
+ else
+ LOG_INFO "保持rtkit-help安装状态"
+ fi
+
+ LOG_INFO "rtkit-help软件包基本功能测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_check_installed.sh b/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_check_installed.sh
new file mode 100644
index 00000000000..ee52605e772
--- /dev/null
+++ b/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_check_installed.sh
@@ -0,0 +1,126 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试查询rtkit-help软件包是否已正确安装,验证包管理器查询命令(如dpkg -l, rpm -q)能返回正确的软件包名称、版本和安装状态信息。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 设置环境变量和常量
+ PACKAGE_NAME="rtkit-help"
+ LOG_INFO "开始测试:验证 $PACKAGE_NAME 软件包安装状态查询功能"
+
+ # 步骤1:检查yum源中是否存在指定软件包
+ LOG_INFO "步骤1:检查yum源中是否存在 $PACKAGE_NAME 软件包"
+ dnf list available $PACKAGE_NAME 2>/dev/null | grep -q $PACKAGE_NAME
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到 $PACKAGE_NAME 软件包"
+ exit 255
+ fi
+ LOG_INFO "yum源中存在 $PACKAGE_NAME 软件包"
+
+ # 步骤2:检查当前是否已安装软件包
+ LOG_INFO "步骤2:检查 $PACKAGE_NAME 是否已安装"
+ INSTALLED=false
+ if command -v rpm &> /dev/null; then
+ rpm -q $PACKAGE_NAME &> /dev/null
+ if [ $? -eq 0 ]; then
+ INSTALLED=true
+ LOG_INFO "$PACKAGE_NAME 已安装"
+ else
+ LOG_INFO "$PACKAGE_NAME 未安装"
+ fi
+ else
+ LOG_ERROR "未找到rpm命令"
+ exit 255
+ fi
+
+ # 步骤3:如果未安装,则安装软件包作为测试步骤
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3:安装 $PACKAGE_NAME 软件包"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
+ LOG_INFO "成功安装 $PACKAGE_NAME"
+ fi
+
+ # 步骤4:验证包管理器查询命令
+ LOG_INFO "步骤4:验证包管理器查询命令"
+
+ # 使用rpm查询软件包信息
+ LOG_INFO "使用rpm命令查询 $PACKAGE_NAME 信息"
+ rpm_output=$(rpm -qi $PACKAGE_NAME 2>/dev/null)
+ if [ $? -eq 0 ]; then
+ # 检查返回信息中是否包含正确的软件包名称
+ echo "$rpm_output" | grep -q "Name.*:$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "rpm查询未返回正确的软件包名称"
+
+ # 检查版本信息是否存在
+ echo "$rpm_output" | grep -q "Version"
+ CHECK_RESULT $? 0 0 "rpm查询未返回版本信息"
+
+ # 检查安装状态
+ echo "$rpm_output" | grep -q "Install Date"
+ CHECK_RESULT $? 0 0 "rpm查询未返回安装状态信息"
+
+ LOG_INFO "rpm命令验证通过"
+ else
+ LOG_ERROR "rpm查询 $PACKAGE_NAME 失败"
+ exit 1
+ fi
+
+ # 步骤5:验证dpkg命令(如果系统支持)
+ LOG_INFO "步骤5:检查是否支持dpkg命令"
+ if command -v dpkg &> /dev/null; then
+ LOG_INFO "使用dpkg命令查询 $PACKAGE_NAME 信息"
+ dpkg_output=$(dpkg -l $PACKAGE_NAME 2>/dev/null | grep "^ii")
+ if [ $? -eq 0 ] && [ -n "$dpkg_output" ]; then
+ # 检查返回信息中是否包含正确的软件包名称
+ echo "$dpkg_output" | grep -q "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "dpkg查询未返回正确的软件包名称"
+
+ # 检查版本信息是否存在
+ echo "$dpkg_output" | awk "{print $3}" | grep -q "."
+ CHECK_RESULT $? 0 0 "dpkg查询未返回版本信息"
+
+ # 检查安装状态(ii表示已安装)
+ echo "$dpkg_output" | grep -q "^ii"
+ CHECK_RESULT $? 0 0 "dpkg查询未返回正确的安装状态"
+
+ LOG_INFO "dpkg命令验证通过"
+ else
+ LOG_ERROR "dpkg查询 $PACKAGE_NAME 失败"
+ exit 1
+ fi
+ else
+ LOG_INFO "系统不支持dpkg命令,跳过dpkg验证"
+ fi
+
+ # 步骤6:清理环境
+ LOG_INFO "步骤6:清理测试环境"
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "卸载测试安装的 $PACKAGE_NAME 软件包"
+ dnf remove -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 失败"
+ LOG_INFO "成功卸载 $PACKAGE_NAME"
+ else
+ LOG_INFO "$PACKAGE_NAME 原本已安装,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成:$PACKAGE_NAME 软件包安装状态查询功能验证成功"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_install.sh b/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_install.sh
new file mode 100644
index 00000000000..8c74e5b90d7
--- /dev/null
+++ b/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_install.sh
@@ -0,0 +1,100 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试通过包管理器(如apt, yum, dnf)正确安装rtkit-help软件包,验证安装过程是否成功,并确认关键文件(如可执行文件、配置文件、手册页)被正确部署到系统指定位置。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试rtkit-help软件包的安装功能"
+ LOG_INFO "步骤1: 检查当前环境是否已安装rtkit-help软件包"
+ if rpm -q rtkit-help &> /dev/null; then
+ LOG_INFO "rtkit-help软件包已安装,测试结束后将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "rtkit-help软件包未安装,将在测试过程中安装,并在测试结束后卸载"
+ INSTALLED=false
+ fi
+
+ LOG_INFO "步骤2: 检查yum源中是否存在rtkit-help软件包"
+ dnf list available rtkit-help &> /dev/null
+ CHECK_RESULT $? 0 0 "yum源中未找到rtkit-help软件包"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到rtkit-help软件包"
+ exit 255
+ fi
+
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "步骤3: 安装rtkit-help软件包"
+ dnf install -y rtkit-help
+ CHECK_RESULT $? 0 0 "安装rtkit-help软件包失败"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "安装rtkit-help软件包失败"
+ exit $?
+ fi
+ LOG_INFO "rtkit-help软件包安装成功"
+ fi
+
+ LOG_INFO "步骤4: 验证关键文件是否被正确部署"
+ LOG_INFO "检查可执行文件"
+ if [ -f /usr/bin/rtkit-help ]; then
+ LOG_INFO "可执行文件 /usr/bin/rtkit-help 存在"
+ else
+ LOG_ERROR "可执行文件 /usr/bin/rtkit-help 不存在"
+ exit 1
+ fi
+
+ LOG_INFO "检查配置文件"
+ if [ -f /etc/rtkit-help.conf ]; then
+ LOG_INFO "配置文件 /etc/rtkit-help.conf 存在"
+ else
+ LOG_ERROR "配置文件 /etc/rtkit-help.conf 不存在"
+ exit 1
+ fi
+
+ LOG_INFO "检查手册页"
+ if [ -f /usr/share/man/man1/rtkit-help.1.gz ]; then
+ LOG_INFO "手册页 /usr/share/man/man1/rtkit-help.1.gz 存在"
+ else
+ LOG_ERROR "手册页 /usr/share/man/man1/rtkit-help.1.gz 不存在"
+ exit 1
+ fi
+
+ LOG_INFO "步骤5: 验证软件包功能"
+ rtkit-help --version &> /dev/null
+ CHECK_RESULT $? 0 0 "rtkit-help命令执行失败"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "rtkit-help命令执行失败"
+ exit $?
+ fi
+ LOG_INFO "rtkit-help命令执行成功"
+
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "步骤6: 清理环境,卸载rtkit-help软件包"
+ dnf remove -y rtkit-help
+ CHECK_RESULT $? 0 0 "卸载rtkit-help软件包失败"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "卸载rtkit-help软件包失败"
+ exit $?
+ fi
+ LOG_INFO "rtkit-help软件包卸载成功"
+ fi
+
+ LOG_INFO "测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_show_help.sh b/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_show_help.sh
new file mode 100644
index 00000000000..4be569930f0
--- /dev/null
+++ b/testcases/function_test/pkg_test/rtkit/rtkit-help/test_rtkit-help_function_show_help.sh
@@ -0,0 +1,113 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试rtkit-help软件包提供的帮助功能(如通过--help参数、man手册或特定命令),验证其能正确输出软件包的使用说明、命令行选项或功能简介。
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试rtkit-help软件包帮助功能"
+
+ # 检查yum源中是否存在rtkit-help软件包
+ LOG_INFO "检查yum源中rtkit-help软件包是否存在"
+ dnf list available rtkit-help 2>/dev/null | grep -q rtkit-help
+ CHECK_RESULT $? 0 0 "yum源中不存在rtkit-help软件包"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在rtkit-help软件包"
+ exit 255
+ fi
+
+ # 检查rtkit-help是否已安装
+ LOG_INFO "检查rtkit-help是否已安装"
+ if rpm -q rtkit-help >/dev/null 2>&1; then
+ LOG_INFO "rtkit-help已安装,测试结束后保持安装状态"
+ already_installed=true
+ else
+ LOG_INFO "rtkit-help未安装,开始安装"
+ already_installed=false
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "安装rtkit-help软件包"
+ dnf install -y rtkit-help
+ CHECK_RESULT $? 0 0 "安装rtkit-help软件包失败"
+ fi
+
+ # 测试--help参数
+ LOG_INFO "测试rtkit-help命令的--help参数"
+ rtkit-help --help >/dev/null 2>&1
+ CHECK_RESULT $? 0 0 "rtkit-help --help命令执行失败"
+
+ # 检查--help参数是否输出了帮助信息
+ LOG_INFO "检查--help参数输出内容"
+ help_output=$(rtkit-help --help 2>&1)
+ if [ -z "$help_output" ]; then
+ LOG_ERROR "--help参数未输出任何内容"
+ exit 1
+ fi
+ echo "$help_output" | grep -q -i "usage\|help\|option"
+ CHECK_RESULT $? 0 0 "--help参数输出内容不符合预期"
+
+ # 测试man手册是否存在
+ LOG_INFO "检查rtkit-help的man手册"
+ man -w rtkit-help >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "rtkit-help的man手册存在"
+ # 检查man手册是否能正常显示
+ man rtkit-help | head -20 | grep -q -i "rtkit-help"
+ CHECK_RESULT $? 0 0 "man手册内容不符合预期"
+ else
+ LOG_INFO "rtkit-help没有man手册,跳过man手册测试"
+ fi
+
+ # 测试其他可能的帮助命令或参数
+ LOG_INFO "测试其他帮助相关参数"
+ # 尝试常见的帮助参数
+ for param in "-h" "--help" "help"; do
+ rtkit-help $param >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "参数 $param 支持"
+ output=$(rtkit-help $param 2>&1)
+ if [ -n "$output" ]; then
+ echo "$output" | grep -q -i "usage\|help\|option\|rtkit"
+ CHECK_RESULT $? 0 0 "参数 $param 输出内容不符合预期"
+ fi
+ else
+ LOG_INFO "参数 $param 不支持或命令执行失败"
+ # 检查是否是参数不存在的情况
+ if echo "$output" | grep -q -i "invalid\|unrecognized\|unknown"; then
+ LOG_ERROR "参数 $param 不存在或不支持"
+ exit 255
+ fi
+ fi
+ done
+
+ # 清理环境
+ LOG_INFO "清理测试环境"
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "卸载rtkit-help软件包"
+ dnf remove -y rtkit-help
+ CHECK_RESULT $? 0 0 "卸载rtkit-help软件包失败"
+ else
+ LOG_INFO "保持rtkit-help软件包安装状态"
+ fi
+
+ LOG_INFO "rtkit-help帮助功能测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_check.sh b/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_check.sh
new file mode 100644
index 00000000000..29f2456aec9
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_check.sh
@@ -0,0 +1,67 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test if texlive-bbding is installed
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:检查texlive-bbding是否安装"
+ LOG_INFO "步骤1:检查yum源中是否存在texlive-bbding软件包"
+ dnf list available texlive-bbding > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到texlive-bbding软件包"
+ exit 255
+ fi
+ LOG_INFO "步骤2:检查当前是否已安装texlive-bbding"
+ rpm -q texlive-bbding > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-bbding已安装,记录安装状态"
+ INSTALLED=1
+ else
+ LOG_INFO "texlive-bbding未安装,将进行安装测试"
+ INSTALLED=0
+ fi
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装texlive-bbding软件包"
+ dnf install -y texlive-bbding
+ CHECK_RESULT $? 0 0 "安装texlive-bbding失败"
+ LOG_INFO "步骤4:验证texlive-bbding安装成功"
+ rpm -q texlive-bbding
+ CHECK_RESULT $? 0 0 "验证texlive-bbding安装失败"
+ fi
+ LOG_INFO "步骤5:检查texlive-bbding提供的命令或文件"
+ rpm -ql texlive-bbding | head -5
+ CHECK_RESULT $? 0 0 "获取texlive-bbding文件列表失败"
+ LOG_INFO "步骤6:环境恢复"
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "卸载测试安装的texlive-bbding软件包"
+ dnf remove -y texlive-bbding
+ CHECK_RESULT $? 0 0 "卸载texlive-bbding失败"
+ LOG_INFO "验证texlive-bbding已卸载"
+ rpm -q texlive-bbding > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "卸载后仍存在texlive-bbding"
+ exit 1
+ fi
+ else
+ LOG_INFO "保持原有的texlive-bbding安装状态"
+ fi
+ LOG_INFO "测试完成:texlive-bbding安装检查通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_list.sh b/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_list.sh
new file mode 100644
index 00000000000..2340bd565f3
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_list.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test listing of bbding symbols
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 判断是否已经安装texlive-bbding软件包
+ LOG_INFO "检查是否已安装texlive-bbding软件包"
+ rpm -q texlive-bbding > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-bbding已安装,脚本结束后将保持安装状态"
+ already_installed=1
+ else
+ LOG_INFO "texlive-bbding未安装,将在测试过程中安装,并在测试结束后卸载"
+ already_installed=0
+ fi
+
+ # 检查yum源中是否存在texlive-bbding软件包
+ LOG_INFO "检查yum源中是否存在texlive-bbding软件包"
+ dnf list available texlive-bbding > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "yum源中不存在texlive-bbding软件包"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在texlive-bbding软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ $already_installed -eq 0 ]; then
+ LOG_INFO "安装texlive-bbding软件包"
+ dnf install -y texlive-bbding > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "安装texlive-bbding软件包失败"
+ fi
+
+ # 测试列出bbding符号
+ LOG_INFO "测试列出bbding符号"
+ texbbding -l > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "texbbding -l命令执行失败"
+
+ # 验证texbbding命令支持-l参数
+ LOG_INFO "验证texbbding命令支持-l参数"
+ texbbding -l 2>&1 | grep -q "Unknown option"
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "texbbding命令不支持-l参数"
+ exit 255
+ fi
+
+ # 验证列出符号的数量
+ LOG_INFO "验证列出符号的数量"
+ symbol_count=$(texbbding -l | wc -l)
+ if [ $symbol_count -gt 0 ]; then
+ LOG_INFO "成功列出$symbol_count个bbding符号"
+ CHECK_RESULT $? 0 0 "列出bbding符号数量为0"
+ else
+ LOG_ERROR "未列出任何bbding符号"
+ CHECK_RESULT $? 1 0 "列出bbding符号数量为0"
+ fi
+
+ # 清理环境:如果之前未安装,则卸载软件包
+ if [ $already_installed -eq 0 ]; then
+ LOG_INFO "卸载texlive-bbding软件包"
+ dnf remove -y texlive-bbding > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "卸载texlive-bbding软件包失败"
+ fi
+
+ LOG_INFO "测试脚本执行完毕,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_remove.sh b/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_remove.sh
new file mode 100644
index 00000000000..b81a2baed80
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_remove.sh
@@ -0,0 +1,72 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test removal of texlive-bbding package
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:移除texlive-bbding软件包"
+ LOG_INFO "步骤1:检查系统是否已安装texlive-bbding"
+ if dnf list installed texlive-bbding &> /dev/null; then
+ LOG_INFO "texlive-bbding已安装,脚本将保持安装状态"
+ INSTALLED_BEFORE=true
+ else
+ LOG_INFO "texlive-bbding未安装,将进行安装和卸载测试"
+ INSTALLED_BEFORE=false
+ fi
+
+ LOG_INFO "步骤2:检查yum源中是否存在texlive-bbding软件包"
+ if ! dnf list available texlive-bbding &> /dev/null; then
+ LOG_ERROR "yum源中未找到texlive-bbding软件包"
+ exit 255
+ fi
+
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "步骤3:安装texlive-bbding软件包"
+ dnf install -y texlive-bbding
+ CHECK_RESULT $? 0 0 "安装texlive-bbding失败"
+ fi
+
+ LOG_INFO "步骤4:验证texlive-bbding是否安装成功"
+ dnf list installed texlive-bbding &> /dev/null
+ CHECK_RESULT $? 0 0 "验证texlive-bbding安装失败"
+
+ LOG_INFO "步骤5:移除texlive-bbding软件包"
+ dnf remove -y texlive-bbding
+ CHECK_RESULT $? 0 0 "移除texlive-bbding失败"
+
+ LOG_INFO "步骤6:验证texlive-bbding是否已移除"
+ if dnf list installed texlive-bbding &> /dev/null; then
+ LOG_ERROR "texlive-bbding移除失败"
+ exit 1
+ else
+ LOG_INFO "texlive-bbding已成功移除"
+ fi
+
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "步骤7:环境恢复,不重新安装texlive-bbding"
+ else
+ LOG_INFO "步骤7:环境恢复,重新安装texlive-bbding"
+ dnf install -y texlive-bbding
+ CHECK_RESULT $? 0 0 "重新安装texlive-bbding失败"
+ fi
+
+ LOG_INFO "测试完成:texlive-bbding软件包移除功能正常"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_usage.sh b/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_usage.sh
new file mode 100644
index 00000000000..0ae977d70d3
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding/test_texlive-bbding_function_usage.sh
@@ -0,0 +1,108 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test basic usage of bbding symbols in LaTeX
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试LaTeX中bbding符号的基本用法
+ LOG_INFO "开始测试LaTeX中bbding符号的基本用法"
+
+ # 检查是否已安装texlive-bbding软件包
+ LOG_INFO "步骤1: 检查texlive-bbding软件包是否已安装"
+ dnf list installed texlive-bbding > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-bbding已安装,测试后保持安装状态"
+ INSTALLED_BEFORE_TEST=true
+ else
+ LOG_INFO "texlive-bbding未安装,将在测试后卸载"
+ INSTALLED_BEFORE_TEST=false
+ fi
+
+ # 检查yum源中是否有texlive-bbding软件包
+ LOG_INFO "步骤2: 检查yum源中是否有texlive-bbding软件包"
+ dnf search texlive-bbding > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到texlive-bbding软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "步骤3: 安装texlive-bbding软件包"
+ dnf install -y texlive-bbding
+ CHECK_RESULT $? 0 0 "安装texlive-bbding失败"
+ fi
+
+ # 检查bbding宏包是否可用
+ LOG_INFO "步骤4: 检查bbding宏包是否可用"
+ cat > test_bbding.tex << "EOF"
+ \documentclass{article}
+ \usepackage{bbding}
+ \begin{document}
+ 测试bbding符号: \Checkmark \XSolidBrush \HandRight
+ \end{document}
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试LaTeX文件失败"
+
+ # 编译测试文档
+ LOG_INFO "步骤5: 编译包含bbding符号的LaTeX文档"
+ pdflatex -interaction=nonstopmode test_bbding.tex > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "编译LaTeX文档失败"
+
+ # 检查生成的PDF文件
+ LOG_INFO "步骤6: 检查生成的PDF文件"
+ if [ -f test_bbding.pdf ]; then
+ LOG_INFO "PDF文件生成成功"
+ file test_bbding.pdf | grep -q "PDF document"
+ CHECK_RESULT $? 0 0 "生成的PDF文件格式不正确"
+ else
+ LOG_ERROR "PDF文件未生成"
+ exit 1
+ fi
+
+ # 测试bbding符号命令
+ LOG_INFO "步骤7: 测试bbding符号命令"
+ cat > test_bbding_cmds.tex << "EOF"
+ \documentclass{article}
+ \usepackage{bbding}
+ \begin{document}
+ \Checkmark \XSolidBrush \HandRight \HandLeft \HandPencilLeft \ScissorRight \Keyboard \Mobilefone
+ \end{document}
+ EOF
+ pdflatex -interaction=nonstopmode test_bbding_cmds.tex > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "测试bbding符号命令失败"
+
+ # 清理测试文件
+ LOG_INFO "步骤8: 清理测试文件"
+ rm -f test_bbding.tex test_bbding.pdf test_bbding.aux test_bbding.log test_bbding_cmds.*
+ CHECK_RESULT $? 0 0 "清理测试文件失败"
+
+ # 如果测试前未安装,则卸载软件包
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "步骤9: 卸载texlive-bbding软件包"
+ dnf remove -y texlive-bbding
+ CHECK_RESULT $? 0 0 "卸载texlive-bbding失败"
+ else
+ LOG_INFO "保持texlive-bbding安装状态"
+ fi
+
+ LOG_INFO "测试完成: LaTeX中bbding符号的基本用法测试成功"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_check.sh b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_check.sh
new file mode 100644
index 00000000000..7505b7c7d12
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_check.sh
@@ -0,0 +1,102 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Check if texlive-calcage package is installed
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义测试包名
+ PACKAGE_NAME="texlive-calcage"
+
+ # 步骤1:检查当前是否已安装测试包
+ LOG_INFO "步骤1:检查当前是否已安装测试包"
+ rpm -q $PACKAGE_NAME > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "检测到 $PACKAGE_NAME 已安装,标记为保持安装状态"
+ KEEP_INSTALLED=true
+ else
+ LOG_INFO "检测到 $PACKAGE_NAME 未安装,标记为测试后卸载"
+ KEEP_INSTALLED=false
+ fi
+
+ # 步骤2:检查yum源中是否存在该软件包
+ LOG_INFO "步骤2:检查yum源中是否存在软件包 $PACKAGE_NAME"
+ dnf list available $PACKAGE_NAME > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "yum源中未找到软件包 $PACKAGE_NAME"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在软件包 $PACKAGE_NAME,退出测试"
+ exit 255
+ fi
+
+ # 步骤3:如果未安装,则安装软件包
+ if [ "$KEEP_INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3:安装软件包 $PACKAGE_NAME"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
+ fi
+
+ # 步骤4:验证软件包是否成功安装
+ LOG_INFO "步骤4:验证软件包 $PACKAGE_NAME 是否成功安装"
+ rpm -q $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "软件包 $PACKAGE_NAME 未正确安装"
+
+ # 步骤5:检查texlive-calcage提供的calcage命令是否存在
+ LOG_INFO "步骤5:检查texlive-calcage提供的calcage命令是否存在"
+ command -v calcage > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "calcage命令不存在,可能安装不完整或命令路径未在PATH中"
+ exit 255
+ fi
+
+ # 步骤6:测试calcage命令的基本功能(检查参数支持)
+ LOG_INFO "步骤6:测试calcage命令的基本参数"
+ calcage --help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "calcage命令不支持--help参数或执行失败"
+
+ # 步骤7:执行一个简单的calcage计算测试
+ LOG_INFO "步骤7:执行一个简单的calcage计算测试"
+ calcage 2024-01-01 > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "calcage命令执行简单日期计算失败"
+
+ # 步骤8:测试calcage命令的错误参数处理
+ LOG_INFO "步骤8:测试calcage命令的错误参数处理"
+ calcage --nonexistent-option 2>&1 | grep -q "unrecognized option\|invalid option\|用法"
+ CHECK_RESULT $? 0 0 "calcage命令未正确报告不支持参数"
+
+ # 步骤9:清理环境(如果测试前未安装,则卸载软件包)
+ if [ "$KEEP_INSTALLED" = "false" ]; then
+ LOG_INFO "步骤9:卸载测试安装的软件包 $PACKAGE_NAME"
+ dnf remove -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
+
+ # 验证卸载是否成功
+ rpm -q $PACKAGE_NAME > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "软件包 $PACKAGE_NAME 卸载失败"
+ exit 1
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 已成功卸载"
+ fi
+ else
+ LOG_INFO "步骤9:保持 $PACKAGE_NAME 安装状态,不进行卸载"
+ fi
+
+ LOG_INFO "测试完成:texlive-calcage软件包功能检查通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_install.sh b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_install.sh
new file mode 100644
index 00000000000..8e5c4165a97
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_install.sh
@@ -0,0 +1,111 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test the installation of the texlive-calcage package
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试 texlive-calcage 包安装功能
+
+ # 定义颜色输出(可选,如果 LOG_INFO/LOG_ERROR 未定义)
+ if ! type LOG_INFO &>/dev/null; then
+ LOG_INFO() { echo -e "\033[32m[INFO]\033[0m $*"; }
+ fi
+ if ! type LOG_ERROR &>/dev/null; then
+ LOG_ERROR() { echo -e "\033[31m[ERROR]\033[0m $*"; }
+ fi
+
+ # 定义软件包名称
+ PACKAGE_NAME="texlive-calcage"
+
+ # 步骤1:检查软件包是否已在YUM源中
+ LOG_INFO "步骤1:检查YUM源中是否存在 $PACKAGE_NAME 软件包"
+ if ! dnf list available "$PACKAGE_NAME" &>/dev/null; then
+ LOG_ERROR "YUM源中未找到 $PACKAGE_NAME 软件包"
+ exit 255
+ fi
+ LOG_INFO "YUM源中存在 $PACKAGE_NAME 软件包"
+
+ # 步骤2:检查当前是否已安装该软件包
+ LOG_INFO "步骤2:检查 $PACKAGE_NAME 是否已安装"
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_INFO "$PACKAGE_NAME 已安装,测试结束后将保持安装状态"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "$PACKAGE_NAME 未安装,将在测试结束后卸载"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 步骤3:安装软件包(如果未安装)
+ if [[ $ALREADY_INSTALLED -eq 0 ]]; then
+ LOG_INFO "步骤3:安装 $PACKAGE_NAME 软件包"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
+ LOG_INFO "安装 $PACKAGE_NAME 成功"
+ fi
+
+ # 步骤4:验证软件包安装
+ LOG_INFO "步骤4:验证 $PACKAGE_NAME 是否安装成功"
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_INFO "$PACKAGE_NAME 安装验证成功"
+ else
+ LOG_ERROR "$PACKAGE_NAME 安装验证失败"
+ CHECK_RESULT 1 0 0 "$PACKAGE_NAME 安装验证失败"
+ fi
+
+ # 步骤5:测试软件包基本功能
+ LOG_INFO "步骤5:测试 $PACKAGE_NAME 基本功能"
+ # 假设 texlive-calcage 提供了 calcage 命令,这里仅示例检查命令是否存在
+ if command -v calcage &>/dev/null; then
+ LOG_INFO "calcage 命令存在,基本功能正常"
+ else
+ LOG_INFO "calcage 命令不存在,可能该包不提供命令行工具"
+ fi
+
+ # 步骤6:清理环境(如果测试前未安装,则卸载)
+ if [[ $ALREADY_INSTALLED -eq 0 ]]; then
+ LOG_INFO "步骤6:卸载 $PACKAGE_NAME 软件包"
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 失败"
+ LOG_INFO "卸载 $PACKAGE_NAME 成功"
+ else
+ LOG_INFO "步骤6:保持 $PACKAGE_NAME 安装状态,无需卸载"
+ fi
+
+ # 步骤7:最终验证环境状态
+ LOG_INFO "步骤7:验证环境状态"
+ if [[ $ALREADY_INSTALLED -eq 0 ]]; then
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_ERROR "$PACKAGE_NAME 未被正确卸载"
+ exit 1
+ else
+ LOG_INFO "环境已恢复,$PACKAGE_NAME 已卸载"
+ fi
+ else
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_INFO "环境已恢复,$PACKAGE_NAME 保持安装"
+ else
+ LOG_ERROR "$PACKAGE_NAME 意外被卸载"
+ exit 1
+ fi
+ fi
+
+ LOG_INFO "测试完成:$PACKAGE_NAME 安装功能测试通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_uninstall.sh b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_uninstall.sh
new file mode 100644
index 00000000000..6a01a543943
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_uninstall.sh
@@ -0,0 +1,81 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test the removal of the texlive-calcage package
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ PACKAGE_NAME="texlive-calcage"
+ LOG_INFO "开始测试:测试移除 texlive-calcage 包"
+
+ # 检查软件包是否在yum源中
+ LOG_INFO "步骤1:检查软件包是否在yum源中"
+ dnf list available "$PACKAGE_NAME" &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 $PACKAGE_NAME 不在yum源中"
+ exit 255
+ fi
+
+ # 检查当前环境是否已安装该软件包
+ LOG_INFO "步骤2:检查当前环境是否已安装该软件包"
+ dnf list installed "$PACKAGE_NAME" &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包 $PACKAGE_NAME 已安装,测试结束后将保持安装状态"
+ INSTALLED_BEFORE_TEST=true
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 未安装,将在测试前安装"
+ INSTALLED_BEFORE_TEST=false
+ fi
+
+ # 如果未安装,则先安装软件包
+ if [ "$INSTALLED_BEFORE_TEST" = false ]; then
+ LOG_INFO "步骤3:安装软件包 $PACKAGE_NAME"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装软件包失败"
+ fi
+
+ # 测试卸载功能
+ LOG_INFO "步骤4:测试卸载软件包 $PACKAGE_NAME"
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+
+ # 验证软件包是否已卸载
+ LOG_INFO "步骤5:验证软件包是否已卸载"
+ dnf list installed "$PACKAGE_NAME" &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "软件包 $PACKAGE_NAME 卸载后仍然存在"
+ exit 1
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 已成功卸载"
+ fi
+
+ # 环境恢复
+ LOG_INFO "步骤6:环境恢复"
+ if [ "$INSTALLED_BEFORE_TEST" = true ]; then
+ LOG_INFO "恢复原状:重新安装软件包 $PACKAGE_NAME"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "重新安装软件包失败"
+ LOG_INFO "环境已恢复至测试前状态(已安装)"
+ else
+ LOG_INFO "环境已恢复至测试前状态(未安装)"
+ fi
+
+ LOG_INFO "测试完成:texlive-calcage 包移除功能测试通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_usage.sh b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_usage.sh
new file mode 100644
index 00000000000..b03ea933200
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_usage.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test basic usage of the calcage LaTeX command
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "测试开始:测试calcage LaTeX命令的基本用法"
+
+ # 定义软件包名称
+ PACKAGE_NAME="texlive-calcage"
+
+ # 检查yum源中是否存在指定软件包
+ LOG_INFO "步骤1:检查yum源中是否存在软件包 $PACKAGE_NAME"
+ dnf list available "$PACKAGE_NAME" &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 $PACKAGE_NAME 在yum源中不存在"
+ exit 255
+ fi
+
+ # 检查是否已安装软件包
+ LOG_INFO "步骤2:检查系统是否已安装软件包 $PACKAGE_NAME"
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_INFO "软件包 $PACKAGE_NAME 已安装,脚本结束后将保持安装状态"
+ INSTALLED_BEFORE=1
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 未安装,将在测试步骤中安装"
+ INSTALLED_BEFORE=0
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ $INSTALLED_BEFORE -eq 0 ]; then
+ LOG_INFO "步骤3:安装软件包 $PACKAGE_NAME"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
+ fi
+
+ # 测试calcage命令的基本用法
+ LOG_INFO "步骤4:测试calcage命令的基本用法"
+ calcage 2023-01-01 2023-12-31
+ CHECK_RESULT $? 0 0 "calcage命令执行失败"
+
+ # 测试calcage命令的参数(示例:检查是否存在不支持的参数)
+ LOG_INFO "步骤5:测试calcage命令的参数检查"
+ calcage --invalid-option 2>/dev/null
+ if [ $? -eq 255 ]; then
+ LOG_INFO "calcage命令正确拒绝了无效参数"
+ else
+ LOG_ERROR "calcage命令未正确处理无效参数"
+ exit 255
+ fi
+
+ # 清理环境:如果之前未安装,则卸载软件包
+ if [ $INSTALLED_BEFORE -eq 0 ]; then
+ LOG_INFO "步骤6:清理环境,卸载软件包 $PACKAGE_NAME"
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
+ else
+ LOG_INFO "步骤6:环境清理,保持软件包 $PACKAGE_NAME 的安装状态"
+ fi
+
+ LOG_INFO "测试完成:calcage LaTeX命令基本用法测试通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_version.sh b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_version.sh
new file mode 100644
index 00000000000..5ce2bb73bdb
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-d/texlive-calcage/test_texlive-calcage_function_version.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test retrieving package version information
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 判断是否已安装texlive-calcage
+ LOG_INFO "检查是否已安装texlive-calcage软件包"
+ rpm -q texlive-calcage > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-calcage已安装,标记为已存在"
+ INSTALLED="true"
+ else
+ LOG_INFO "texlive-calcage未安装,标记为未安装"
+ INSTALLED="false"
+ fi
+
+ # 检查yum源中是否存在texlive-calcage软件包
+ LOG_INFO "检查yum源中是否存在texlive-calcage软件包"
+ dnf list available texlive-calcage > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到texlive-calcage软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "开始安装texlive-calcage软件包"
+ dnf install -y texlive-calcage
+ CHECK_RESULT $? 0 0 "安装texlive-calcage失败"
+ fi
+
+ # 测试获取软件包版本信息
+ LOG_INFO "测试获取texlive-calcage版本信息"
+ rpm -q texlive-calcage --queryformat "%{VERSION}-%{RELEASE}\n"
+ CHECK_RESULT $? 0 0 "获取texlive-calcage版本信息失败"
+
+ # 测试texlive-calcage命令是否支持--version参数
+ LOG_INFO "测试texlive-calcage命令是否支持--version参数"
+ which texlive-calcage > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ texlive-calcage --version > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "texlive-calcage命令不支持--version参数"
+ # 如果是未安装的情况,先卸载再退出
+ if [ "$INSTALLED" = "false" ]; then
+ dnf remove -y texlive-calcage
+ fi
+ exit 255
+ fi
+ LOG_INFO "texlive-calcage命令支持--version参数"
+ fi
+
+ # 清理环境:如果测试前未安装,则卸载软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "清理环境:卸载texlive-calcage软件包"
+ dnf remove -y texlive-calcage
+ CHECK_RESULT $? 0 0 "卸载texlive-calcage失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_check_doc.sh b/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_check_doc.sh
new file mode 100644
index 00000000000..c7cadbe349b
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_check_doc.sh
@@ -0,0 +1,112 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test documentation existence
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试文档存在性检查脚本
+
+ # 定义变量
+ PACKAGE_NAME="texlive-gost-doc"
+
+ # 步骤1: 检查软件包是否在yum源中
+ LOG_INFO "步骤1: 检查软件包是否在yum源中"
+ dnf list available "$PACKAGE_NAME" >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 $PACKAGE_NAME 不在yum源中"
+ exit 255
+ fi
+ LOG_INFO "软件包 $PACKAGE_NAME 在yum源中"
+
+ # 步骤2: 检查当前是否已安装
+ LOG_INFO "步骤2: 检查当前是否已安装"
+ IS_INSTALLED=0
+ if rpm -q "$PACKAGE_NAME" >/dev/null 2>&1; then
+ LOG_INFO "软件包 $PACKAGE_NAME 已安装"
+ IS_INSTALLED=1
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 未安装"
+ fi
+
+ # 步骤3: 如果未安装,则安装软件包
+ if [ $IS_INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3: 安装软件包 $PACKAGE_NAME"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
+ LOG_INFO "软件包 $PACKAGE_NAME 安装成功"
+ fi
+
+ # 步骤4: 检查文档文件是否存在
+ LOG_INFO "步骤4: 检查文档文件是否存在"
+ DOC_FILES=$(rpm -ql "$PACKAGE_NAME" | grep -E "\.(pdf|txt|html|md|tex)$" | head -5)
+ if [ -z "$DOC_FILES" ]; then
+ LOG_ERROR "未找到文档文件"
+ CHECK_RESULT 1 0 0 "文档文件不存在"
+ else
+ LOG_INFO "找到文档文件:"
+ echo "$DOC_FILES"
+ CHECK_RESULT 0 0 0 "文档文件检查失败"
+ fi
+
+ # 步骤5: 验证文档文件可访问性
+ LOG_INFO "步骤5: 验证文档文件可访问性"
+ for doc_file in $DOC_FILES; do
+ if [ -f "$doc_file" ]; then
+ LOG_INFO "文档文件 $doc_file 存在且可访问"
+ # 检查文件大小
+ file_size=$(stat -c%s "$doc_file" 2>/dev/null || echo "0")
+ if [ "$file_size" -gt 0 ]; then
+ LOG_INFO "文档文件 $doc_file 大小: ${file_size}字节"
+ else
+ LOG_ERROR "文档文件 $doc_file 大小为0"
+ CHECK_RESULT 1 0 0 "文档文件 $doc_file 无效"
+ fi
+ else
+ LOG_ERROR "文档文件 $doc_file 不存在"
+ CHECK_RESULT 1 0 0 "文档文件 $doc_file 不存在"
+ fi
+ done
+
+ # 步骤6: 检查文档目录结构
+ LOG_INFO "步骤6: 检查文档目录结构"
+ DOC_DIRS=$(rpm -ql "$PACKAGE_NAME" | grep -E "/doc/|/docs/|/documentation/" | head -5)
+ if [ -n "$DOC_DIRS" ]; then
+ LOG_INFO "找到文档目录:"
+ echo "$DOC_DIRS"
+ CHECK_RESULT 0 0 0 "文档目录检查失败"
+ else
+ LOG_INFO "未找到专门的文档目录,文档文件可能分布在其他目录中"
+ CHECK_RESULT 0 0 0 "文档目录检查失败"
+ fi
+
+ # 步骤7: 清理环境(如果脚本开始时未安装)
+ LOG_INFO "步骤7: 清理环境"
+ if [ $IS_INSTALLED -eq 0 ]; then
+ LOG_INFO "卸载软件包 $PACKAGE_NAME"
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
+ LOG_INFO "软件包 $PACKAGE_NAME 卸载成功"
+ else
+ LOG_INFO "保持软件包 $PACKAGE_NAME 的安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_check_installed.sh b/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_check_installed.sh
new file mode 100644
index 00000000000..7b525be9d42
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_check_installed.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test if package is installed
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查是否已经安装了texlive-gost-doc
+ LOG_INFO "检查是否已经安装了texlive-gost-doc"
+ rpm -q texlive-gost-doc > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-gost-doc已经安装,脚本结束将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "texlive-gost-doc未安装,将在测试步骤中安装"
+ INSTALLED=false
+ fi
+
+ # 检查yum源中是否有texlive-gost-doc软件包
+ LOG_INFO "检查yum源中是否有texlive-gost-doc软件包"
+ dnf list available texlive-gost-doc > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "yum源中未找到texlive-gost-doc软件包"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到texlive-gost-doc软件包,退出"
+ exit 255
+ fi
+
+ # 如果未安装,则安装texlive-gost-doc
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "安装texlive-gost-doc"
+ dnf install -y texlive-gost-doc > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "安装texlive-gost-doc失败"
+ fi
+
+ # 验证texlive-gost-doc是否成功安装
+ LOG_INFO "验证texlive-gost-doc是否成功安装"
+ rpm -q texlive-gost-doc > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "texlive-gost-doc未成功安装"
+
+ # 如果之前未安装,则在测试结束后卸载texlive-gost-doc
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "测试结束,卸载texlive-gost-doc"
+ dnf remove -y texlive-gost-doc > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "卸载texlive-gost-doc失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_list_files.sh b/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_list_files.sh
new file mode 100644
index 00000000000..5117b78f4f9
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_list_files.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test listing package files
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试脚本:Test listing package files
+
+ LOG_INFO "开始测试:列出软件包文件"
+
+ # 检查是否已安装 texlive-gost-doc
+ LOG_INFO "步骤1:检查 texlive-gost-doc 是否已安装"
+ rpm -q texlive-gost-doc
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-gost-doc 已安装,脚本结束时将保持安装状态"
+ INSTALLED="true"
+ else
+ LOG_INFO "texlive-gost-doc 未安装,将在测试中安装"
+ INSTALLED="false"
+ fi
+
+ # 检查 yum 源中是否有 texlive-gost-doc
+ LOG_INFO "步骤2:检查 yum 源中是否有 texlive-gost-doc"
+ dnf list available texlive-gost-doc
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum 源中未找到 texlive-gost-doc 软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3:安装 texlive-gost-doc"
+ dnf install -y texlive-gost-doc
+ CHECK_RESULT $? 0 0 "安装 texlive-gost-doc 失败"
+ fi
+
+ # 测试列出软件包文件
+ LOG_INFO "步骤4:测试列出 texlive-gost-doc 软件包文件"
+ rpm -ql texlive-gost-doc
+ CHECK_RESULT $? 0 0 "列出 texlive-gost-doc 文件失败"
+
+ # 测试指定参数(例如:-q 参数)
+ LOG_INFO "步骤5:测试 rpm -ql 命令的 -q 参数"
+ rpm -ql texlive-gost-doc -q
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "rpm -ql 命令不支持 -q 参数"
+ exit 255
+ fi
+
+ # 清理环境:如果脚本开始时未安装,则卸载软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "步骤6:清理环境,卸载 texlive-gost-doc"
+ dnf remove -y texlive-gost-doc
+ CHECK_RESULT $? 0 0 "卸载 texlive-gost-doc 失败"
+ LOG_INFO "环境已恢复到未安装状态"
+ else
+ LOG_INFO "步骤6:保持 texlive-gost-doc 安装状态"
+ fi
+
+ LOG_INFO "测试完成:列出软件包文件"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_remove.sh b/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_remove.sh
new file mode 100644
index 00000000000..30c34dadfcb
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc/test_texlive-gost-doc_function_remove.sh
@@ -0,0 +1,81 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test package removal
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试软件包移除功能"
+
+ # 检查是否已经安装了texlive-gost-doc软件包
+ LOG_INFO "检查texlive-gost-doc是否已安装"
+ rpm -q texlive-gost-doc
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-gost-doc已安装,标记为已安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "texlive-gost-doc未安装,标记为未安装状态"
+ INSTALLED=false
+ fi
+
+ # 检查yum源中是否有texlive-gost-doc软件包
+ LOG_INFO "检查yum源中是否有texlive-gost-doc软件包"
+ dnf list available texlive-gost-doc
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到texlive-gost-doc软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "开始安装texlive-gost-doc软件包"
+ dnf install -y texlive-gost-doc
+ CHECK_RESULT $? 0 0 "安装texlive-gost-doc失败"
+ LOG_INFO "texlive-gost-doc软件包安装成功"
+ fi
+
+ # 测试移除软件包功能
+ LOG_INFO "开始测试移除texlive-gost-doc软件包"
+ dnf remove -y texlive-gost-doc
+ CHECK_RESULT $? 0 0 "移除texlive-gost-doc失败"
+ LOG_INFO "texlive-gost-doc软件包移除成功"
+
+ # 验证软件包是否已移除
+ LOG_INFO "验证texlive-gost-doc是否已移除"
+ rpm -q texlive-gost-doc
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "texlive-gost-doc移除后仍然存在"
+ exit 1
+ else
+ LOG_INFO "texlive-gost-doc已成功移除"
+ fi
+
+ # 环境恢复:如果测试前未安装,则重新安装;如果测试前已安装,则保持安装状态
+ if [ "$INSTALLED" = true ]; then
+ LOG_INFO "测试前texlive-gost-doc已安装,重新安装以恢复环境"
+ dnf install -y texlive-gost-doc
+ CHECK_RESULT $? 0 0 "重新安装texlive-gost-doc失败"
+ LOG_INFO "环境已恢复到测试前的安装状态"
+ else
+ LOG_INFO "测试前texlive-gost-doc未安装,无需恢复安装状态"
+ fi
+
+ LOG_INFO "测试软件包移除功能完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_check.sh b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_check.sh
new file mode 100644
index 00000000000..931b7efa4f4
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_check.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test package existence check
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试软件包存在性检查
+ LOG_INFO "开始测试软件包存在性检查"
+
+ # 检查是否已安装texlive-import软件包
+ LOG_INFO "步骤1:检查texlive-import软件包是否已安装"
+ if dnf list installed texlive-import > /dev/null 2>&1; then
+ LOG_INFO "texlive-import软件包已安装,测试结束后将保持安装状态"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "texlive-import软件包未安装,将在测试过程中安装"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 检查yum源中是否有texlive-import软件包
+ LOG_INFO "步骤2:检查yum源中是否存在texlive-import软件包"
+ if ! dnf list available texlive-import > /dev/null 2>&1; then
+ LOG_ERROR "yum源中不存在texlive-import软件包"
+ exit 255
+ fi
+ CHECK_RESULT $? 0 0 "检查yum源中texlive-import软件包存在性失败"
+
+ # 如果未安装,则安装软件包
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装texlive-import软件包"
+ dnf install -y texlive-import
+ CHECK_RESULT $? 0 0 "安装texlive-import软件包失败"
+ fi
+
+ # 检查texlive-import命令是否可用
+ LOG_INFO "步骤4:检查texlive-import命令是否可用"
+ if ! command -v texlive-import > /dev/null 2>&1; then
+ LOG_ERROR "texlive-import命令不可用"
+ exit 255
+ fi
+ CHECK_RESULT $? 0 0 "检查texlive-import命令可用性失败"
+
+ # 测试texlive-import基本功能
+ LOG_INFO "步骤5:测试texlive-import基本功能"
+ texlive-import --help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "texlive-import基本功能测试失败"
+
+ # 测试不支持的参数
+ LOG_INFO "步骤6:测试不支持的参数"
+ texlive-import --invalid-parameter > /dev/null 2>&1
+ if [ $? -ne 255 ]; then
+ LOG_ERROR "不支持的参数处理不正确"
+ exit 255
+ fi
+
+ # 清理环境:如果测试前未安装,则卸载软件包
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤7:清理环境,卸载texlive-import软件包"
+ dnf remove -y texlive-import
+ CHECK_RESULT $? 0 0 "卸载texlive-import软件包失败"
+ else
+ LOG_INFO "步骤7:保持环境,不卸载已安装的texlive-import软件包"
+ fi
+
+ LOG_INFO "软件包存在性检查测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_help.sh b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_help.sh
new file mode 100644
index 00000000000..b6f15e00ad9
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_help.sh
@@ -0,0 +1,77 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test help command
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ LOG_INFO "开始测试:Test help command"
+
+ # 检查yum源中是否存在texlive-import软件包
+ LOG_INFO "检查yum源中是否存在texlive-import软件包"
+ if ! dnf list available texlive-import &>/dev/null; then
+ LOG_ERROR "yum源中不存在texlive-import软件包"
+ exit 255
+ fi
+
+ # 检查当前是否已安装texlive-import
+ LOG_INFO "检查当前是否已安装texlive-import"
+ if rpm -q texlive-import &>/dev/null; then
+ already_installed=true
+ LOG_INFO "texlive-import已安装,测试结束后将保持安装状态"
+ else
+ already_installed=false
+ LOG_INFO "texlive-import未安装,将进行安装测试"
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "安装texlive-import软件包"
+ dnf install -y texlive-import
+ CHECK_RESULT $? 0 0 "安装texlive-import失败"
+ fi
+
+ # 测试help命令
+ LOG_INFO "测试texlive-import的help命令"
+ texlive-import --help
+ CHECK_RESULT $? 0 0 "执行texlive-import --help失败"
+
+ # 测试无效参数
+ LOG_INFO "测试无效参数(预期失败)"
+ texlive-import --invalid-param 2>/dev/null
+ if [ $? -ne 255 ]; then
+ LOG_ERROR "无效参数未按预期退出"
+ exit 255
+ fi
+
+ # 清理环境:如果测试前未安装,则卸载软件包
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "卸载texlive-import软件包"
+ dnf remove -y texlive-import
+ CHECK_RESULT $? 0 0 "卸载texlive-import失败"
+ LOG_INFO "环境已恢复到测试前状态(未安装texlive-import)"
+ else
+ LOG_INFO "保持texlive-import安装状态"
+ fi
+
+ LOG_INFO "测试完成:Test help command"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_import.sh b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_import.sh
new file mode 100644
index 00000000000..8bc666b652c
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_import.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test main import feature
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 环境检查:检查是否已安装texlive-import软件包
+ LOG_INFO "检查texlive-import是否已安装"
+ rpm -q texlive-import > /dev/null 2>&1
+ INSTALLED=$?
+
+ # 定义软件包名称
+ PACKAGE_NAME="texlive-import"
+
+ # 检查yum源中是否存在该软件包
+ LOG_INFO "检查yum源中是否存在${PACKAGE_NAME}软件包"
+ dnf list available ${PACKAGE_NAME} > /dev/null 2>&1
+ CHECK_RESULT $? 0 255 "yum源中不存在${PACKAGE_NAME}软件包"
+
+ # 如果未安装,则安装软件包
+ if [ ${INSTALLED} -ne 0 ]; then
+ LOG_INFO "安装${PACKAGE_NAME}软件包"
+ dnf install -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}软件包失败"
+ fi
+
+ # 测试main import功能
+ LOG_INFO "测试main import功能"
+ # 这里假设texlive-import有一个名为import的命令,测试其基本功能
+ # 如果命令不存在或不支持,则退出码为255
+ which import > /dev/null 2>&1
+ CHECK_RESULT $? 0 255 "import命令不存在或不支持"
+
+ # 执行import命令的测试(这里以显示帮助信息为例)
+ LOG_INFO "执行import命令测试"
+ import --help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "import命令执行失败"
+
+ # 如果脚本开始时未安装,则在测试结束后卸载软件包
+ if [ ${INSTALLED} -ne 0 ]; then
+ LOG_INFO "卸载${PACKAGE_NAME}软件包"
+ dnf remove -y ${PACKAGE_NAME}
+ CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}软件包失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_list.sh b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_list.sh
new file mode 100644
index 00000000000..df098cc74dd
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_list.sh
@@ -0,0 +1,107 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test list packages
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义日志函数
+ LOG_INFO() {
+ echo "[INFO] $*"
+ }
+
+ LOG_ERROR() {
+ echo "[ERROR] $*"
+ }
+
+ # 定义检查结果函数
+ CHECK_RESULT() {
+ local actual=$1
+ local expected=$2
+ local error_code=$3
+ local error_msg=$4
+
+ if [ $actual -ne $expected ]; then
+ LOG_ERROR "$error_msg"
+ exit $error_code
+ fi
+ }
+
+ # 定义SSH命令函数
+ SSH_CMD() {
+ local cmd=$1
+ local ip=$2
+ local password=$3
+ local user=$4
+
+ sshpass -p "$password" ssh -o StrictHostKeyChecking=no "$user@$ip" "$cmd"
+ }
+
+ # 测试脚本开始
+ LOG_INFO "开始测试:Test list packages"
+
+ # 步骤1:检查texlive-import软件包是否在yum源中
+ LOG_INFO "步骤1:检查texlive-import软件包是否在yum源中"
+ dnf list available texlive-import 2>/dev/null | grep -q texlive-import
+ CHECK_RESULT $? 0 255 "texlive-import软件包不在yum源中"
+
+ # 步骤2:检查当前是否已安装texlive-import
+ LOG_INFO "步骤2:检查当前是否已安装texlive-import"
+ if rpm -q texlive-import >/dev/null 2>&1; then
+ LOG_INFO "texlive-import已安装,测试结束后将保持安装状态"
+ already_installed=true
+ else
+ LOG_INFO "texlive-import未安装,将在测试过程中安装"
+ already_installed=false
+ fi
+
+ # 步骤3:如果未安装,则安装texlive-import
+ if [ "$already_installed" = "false" ]; then
+ LOG_INFO "步骤3:安装texlive-import软件包"
+ dnf install -y texlive-import
+ CHECK_RESULT $? 0 1 "安装texlive-import失败"
+ fi
+
+ # 步骤4:测试texlive-import的list packages功能
+ LOG_INFO "步骤4:测试texlive-import的list packages功能"
+ texlive-import list packages
+ CHECK_RESULT $? 0 1 "执行texlive-import list packages失败"
+
+ # 步骤5:测试texlive-import的其他参数(如果存在)
+ LOG_INFO "步骤5:测试texlive-import的其他参数"
+ # 检查是否支持--help参数
+ if texlive-import --help >/dev/null 2>&1; then
+ LOG_INFO "texlive-import支持--help参数"
+ else
+ LOG_INFO "texlive-import不支持--help参数"
+ fi
+
+ # 步骤6:清理环境
+ LOG_INFO "步骤6:清理环境"
+ if [ "$already_installed" = "false" ]; then
+ LOG_INFO "卸载texlive-import软件包"
+ dnf remove -y texlive-import
+ CHECK_RESULT $? 0 1 "卸载texlive-import失败"
+ else
+ LOG_INFO "保持texlive-import安装状态"
+ fi
+
+ LOG_INFO "测试完成:Test list packages"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_version.sh b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_version.sh
new file mode 100644
index 00000000000..b10c8b1628f
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-l/texlive-import/test_texlive-import_function_version.sh
@@ -0,0 +1,133 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test version display
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 设置环境变量
+ LOG_INFO() {
+ echo "[INFO] $*"
+ }
+
+ LOG_ERROR() {
+ echo "[ERROR] $*" >&2
+ }
+
+ # 检查命令是否存在
+ check_command() {
+ if ! command -v "$1" >/dev/null 2>&1; then
+ LOG_ERROR "命令 $1 不存在"
+ exit 255
+ fi
+ }
+
+ # 检查软件包是否存在
+ check_package() {
+ if ! dnf list available "$1" >/dev/null 2>&1; then
+ LOG_ERROR "软件包 $1 在yum源中不存在"
+ exit 255
+ fi
+ }
+
+ # 检查参数是否支持
+ check_param() {
+ if ! $1 --help 2>&1 | grep -q "$2"; then
+ LOG_ERROR "命令 $1 不支持参数 $2"
+ exit 255
+ fi
+ }
+
+ # 执行命令并检查结果
+ execute_command() {
+ LOG_INFO "执行命令: $*"
+ "$@"
+ local ret=$?
+ if [ $ret -ne 0 ]; then
+ LOG_ERROR "命令执行失败: $*"
+ exit $ret
+ fi
+ }
+
+ # 主测试函数
+ test_version_display() {
+ LOG_INFO "开始测试: 版本显示功能"
+
+ # 检查是否已安装texlive-import
+ if dnf list installed texlive-import >/dev/null 2>&1; then
+ LOG_INFO "检测到texlive-import已安装"
+ local already_installed=true
+ else
+ LOG_INFO "texlive-import未安装,将进行安装测试"
+ local already_installed=false
+ fi
+
+ # 检查软件包是否存在
+ LOG_INFO "检查texlive-import软件包是否在yum源中"
+ check_package texlive-import
+
+ # 检查命令参数
+ LOG_INFO "检查texlive-import命令是否支持--version参数"
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "安装texlive-import软件包"
+ execute_command dnf install -y texlive-import
+ fi
+
+ # 检查命令是否存在
+ check_command texlive-import
+
+ # 检查参数是否支持
+ check_param texlive-import --version
+
+ # 测试版本显示功能
+ LOG_INFO "测试texlive-import --version命令"
+ local version_output
+ version_output=$(texlive-import --version 2>&1)
+ local ret=$?
+
+ # 检查命令执行结果
+ CHECK_RESULT $ret 0 0 "texlive-import --version命令执行失败"
+
+ # 检查输出是否包含版本信息
+ LOG_INFO "检查版本输出信息"
+ if [ -n "$version_output" ]; then
+ LOG_INFO "版本信息: $version_output"
+ CHECK_RESULT 0 0 0 "版本显示成功"
+ else
+ LOG_ERROR "未获取到版本信息"
+ CHECK_RESULT 1 0 1 "版本显示失败"
+ fi
+
+ # 清理环境
+ LOG_INFO "清理测试环境"
+ if [ "$already_installed" = false ]; then
+ LOG_INFO "卸载texlive-import软件包"
+ execute_command dnf remove -y texlive-import
+ CHECK_RESULT $? 0 0 "卸载texlive-import失败"
+ else
+ LOG_INFO "保持texlive-import已安装状态"
+ fi
+
+ LOG_INFO "测试完成: 版本显示功能测试通过"
+ }
+
+ # 执行测试
+ test_version_display
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_check.sh b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_check.sh
new file mode 100644
index 00000000000..6f9523a9578
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_check.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test if texlive-tablestyles package files are present in system
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查是否以root用户运行
+ if [[ $EUID -ne 0 ]]; then
+ LOG_ERROR "此脚本需要以root权限运行"
+ exit 1
+ fi
+
+ # 定义软件包名称
+ PACKAGE_NAME="texlive-tablestyles"
+
+ # 步骤1: 检查yum源中是否存在指定的软件包
+ LOG_INFO "步骤1: 检查yum源中是否存在 $PACKAGE_NAME 软件包"
+ dnf list available "$PACKAGE_NAME" &>/dev/null
+ if [[ $? -ne 0 ]]; then
+ LOG_ERROR "yum源中未找到 $PACKAGE_NAME 软件包"
+ exit 255
+ fi
+ LOG_INFO "yum源中存在 $PACKAGE_NAME 软件包"
+
+ # 步骤2: 检查系统是否已安装该软件包
+ LOG_INFO "步骤2: 检查系统是否已安装 $PACKAGE_NAME 软件包"
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_INFO "$PACKAGE_NAME 软件包已安装"
+ PRE_INSTALLED=true
+ else
+ LOG_INFO "$PACKAGE_NAME 软件包未安装"
+ PRE_INSTALLED=false
+ fi
+
+ # 步骤3: 如果未安装,则安装软件包
+ if [[ "$PRE_INSTALLED" == "false" ]]; then
+ LOG_INFO "步骤3: 安装 $PACKAGE_NAME 软件包"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 软件包失败"
+ LOG_INFO "成功安装 $PACKAGE_NAME 软件包"
+ fi
+
+ # 步骤4: 检查软件包文件是否存在于系统中
+ LOG_INFO "步骤4: 检查 $PACKAGE_NAME 软件包文件是否存在于系统中"
+ rpm -ql "$PACKAGE_NAME" &>/dev/null
+ CHECK_RESULT $? 0 0 "$PACKAGE_NAME 软件包文件未在系统中找到"
+ LOG_INFO "$PACKAGE_NAME 软件包文件存在于系统中"
+
+ # 步骤5: 列出软件包文件以验证
+ LOG_INFO "步骤5: 列出 $PACKAGE_NAME 软件包文件"
+ rpm -ql "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "列出 $PACKAGE_NAME 软件包文件失败"
+
+ # 步骤6: 清理环境,恢复之前的状态
+ LOG_INFO "步骤6: 清理环境,恢复之前的状态"
+ if [[ "$PRE_INSTALLED" == "false" ]]; then
+ LOG_INFO "卸载 $PACKAGE_NAME 软件包"
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 软件包失败"
+ LOG_INFO "成功卸载 $PACKAGE_NAME 软件包"
+ else
+ LOG_INFO "保持 $PACKAGE_NAME 软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_command.sh b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_command.sh
new file mode 100644
index 00000000000..c7b8610531f
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_command.sh
@@ -0,0 +1,82 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test availability of package commands like tablestyle
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试tablestyle命令的可用性"
+
+ LOG_INFO "步骤1:检查texlive-tablestyles包是否在yum源中"
+ dnf list available texlive-tablestyles 2>/dev/null | grep -q texlive-tablestyles
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到texlive-tablestyles包"
+ exit 255
+ fi
+
+ LOG_INFO "步骤2:检查是否已安装texlive-tablestyles"
+ rpm -q texlive-tablestyles >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-tablestyles已安装,测试后将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "texlive-tablestyles未安装,将进行安装测试"
+ INSTALLED=false
+ fi
+
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3:安装texlive-tablestyles包"
+ dnf install -y texlive-tablestyles
+ CHECK_RESULT $? 0 0 "安装texlive-tablestyles失败"
+ fi
+
+ LOG_INFO "步骤4:测试tablestyle命令基本功能"
+ which tablestyle >/dev/null 2>&1
+ CHECK_RESULT $? 0 0 "未找到tablestyle命令"
+
+ LOG_INFO "步骤5:测试tablestyle命令参数支持"
+ tablestyle --help >/dev/null 2>&1
+ CHECK_RESULT $? 0 0 "tablestyle命令不支持--help参数"
+
+ LOG_INFO "步骤6:测试无效参数处理"
+ tablestyle --invalid-param 2>/dev/null
+ if [ $? -ne 255 ] && [ $? -ne 1 ]; then
+ LOG_ERROR "tablestyle命令对无效参数处理不符合预期"
+ exit 255
+ fi
+
+ LOG_INFO "步骤7:执行tablestyle命令基本操作"
+ echo "测试内容" | tablestyle 2>&1 | grep -q "error\|Error\|ERROR"
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "tablestyle命令执行失败"
+ exit 1
+ fi
+
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "步骤8:卸载texlive-tablestyles包"
+ dnf remove -y texlive-tablestyles
+ CHECK_RESULT $? 0 0 "卸载texlive-tablestyles失败"
+ LOG_INFO "环境已恢复到测试前状态"
+ else
+ LOG_INFO "步骤8:保持texlive-tablestyles安装状态"
+ fi
+
+ LOG_INFO "tablestyle命令可用性测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_document.sh b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_document.sh
new file mode 100644
index 00000000000..162cca229e8
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_document.sh
@@ -0,0 +1,112 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test basic table styling in a LaTeX document
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:测试LaTeX文档中的基本表格样式"
+
+ # 检查环境是否已安装texlive-tablestyles包
+ LOG_INFO "步骤1:检查是否已安装texlive-tablestyles包"
+ if rpm -q texlive-tablestyles &>/dev/null; then
+ LOG_INFO "texlive-tablestyles已安装,测试结束后将保持安装状态"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "texlive-tablestyles未安装"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 检查yum源中是否有该软件包
+ LOG_INFO "步骤2:检查yum源中是否有texlive-tablestyles包"
+ if ! dnf list available texlive-tablestyles &>/dev/null; then
+ LOG_ERROR "yum源中未找到texlive-tablestyles包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装texlive-tablestyles包"
+ dnf install -y texlive-tablestyles
+ CHECK_RESULT $? 0 0 "安装texlive-tablestyles失败"
+ fi
+
+ # 创建测试LaTeX文档
+ LOG_INFO "步骤4:创建测试LaTeX文档"
+ cat > test_table.tex << "EOF"
+ \documentclass{article}
+ \usepackage{booktabs}
+ \usepackage{colortbl}
+ \usepackage{xcolor}
+ \begin{document}
+ \begin{table}[ht]
+ \centering
+ \caption{测试表格样式}
+ \begin{tabular}{lccr}
+ \toprule
+ \textbf{Header1} & \textbf{Header2} & \textbf{Header3} \\
+ \midrule
+ Row1 Col1 & Row1 Col2 & Row1 Col3 \\
+ Row2 Col1 & Row2 Col2 & Row2 Col3 \\
+ \rowcolor{lightgray}
+ Row3 Col1 & Row3 Col2 & Row3 Col3 \\
+ \bottomrule
+ \end{tabular}
+ \label{tab:test}
+ \end{table}
+ \end{document}
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试LaTeX文档失败"
+
+ # 使用pdflatex编译文档
+ LOG_INFO "步骤5:使用pdflatex编译LaTeX文档"
+ if ! command -v pdflatex &>/dev/null; then
+ LOG_ERROR "pdflatex命令不存在或不支持"
+ exit 255
+ fi
+
+ pdflatex -interaction=nonstopmode test_table.tex
+ CHECK_RESULT $? 0 0 "pdflatex编译失败"
+
+ # 检查生成的PDF文件
+ LOG_INFO "步骤6:检查生成的PDF文件"
+ if [ -f test_table.pdf ]; then
+ LOG_INFO "PDF文件生成成功"
+ else
+ LOG_ERROR "PDF文件未生成"
+ exit 1
+ fi
+
+ # 清理临时文件
+ LOG_INFO "步骤7:清理临时文件"
+ rm -f test_table.aux test_table.log test_table.out test_table.tex
+
+ # 如果测试前未安装,则卸载软件包
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤8:卸载texlive-tablestyles包"
+ dnf remove -y texlive-tablestyles
+ CHECK_RESULT $? 0 0 "卸载texlive-tablestyles失败"
+ LOG_INFO "环境已恢复到测试前状态"
+ else
+ LOG_INFO "测试前已安装texlive-tablestyles,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成:基本表格样式测试通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_install.sh b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_install.sh
new file mode 100644
index 00000000000..ce5b02dea15
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_install.sh
@@ -0,0 +1,67 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test if texlive-tablestyles package can be installed via package manager
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ LOG_INFO "开始测试:检查texlive-tablestyles软件包是否可以通过包管理器安装"
+
+ LOG_INFO "步骤1:检查当前环境中是否已安装texlive-tablestyles软件包"
+ if rpm -q texlive-tablestyles &> /dev/null; then
+ LOG_INFO "texlive-tablestyles软件包已安装,标记为已安装状态"
+ ALREADY_INSTALLED=true
+ else
+ LOG_INFO "texlive-tablestyles软件包未安装"
+ ALREADY_INSTALLED=false
+ fi
+
+ LOG_INFO "步骤2:检查yum源中是否存在texlive-tablestyles软件包"
+ if ! dnf list available texlive-tablestyles &> /dev/null; then
+ LOG_ERROR "yum源中未找到texlive-tablestyles软件包"
+ exit 255
+ fi
+ LOG_INFO "yum源中存在texlive-tablestyles软件包"
+
+ if [ "$ALREADY_INSTALLED" = "false" ]; then
+ LOG_INFO "步骤3:安装texlive-tablestyles软件包"
+ dnf install -y texlive-tablestyles
+ CHECK_RESULT $? 0 0 "安装texlive-tablestyles软件包失败"
+ LOG_INFO "texlive-tablestyles软件包安装成功"
+ fi
+
+ LOG_INFO "步骤4:验证texlive-tablestyles软件包是否安装成功"
+ rpm -q texlive-tablestyles
+ CHECK_RESULT $? 0 0 "验证texlive-tablestyles软件包安装状态失败"
+ LOG_INFO "texlive-tablestyles软件包验证成功"
+
+ if [ "$ALREADY_INSTALLED" = "false" ]; then
+ LOG_INFO "步骤5:卸载texlive-tablestyles软件包以恢复环境"
+ dnf remove -y texlive-tablestyles
+ CHECK_RESULT $? 0 0 "卸载texlive-tablestyles软件包失败"
+ LOG_INFO "texlive-tablestyles软件包卸载成功,环境已恢复"
+ else
+ LOG_INFO "步骤5:环境已安装texlive-tablestyles,保持安装状态,无需卸载"
+ fi
+
+ LOG_INFO "测试完成:texlive-tablestyles软件包可以通过包管理器成功安装"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_uninstall.sh b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_uninstall.sh
new file mode 100644
index 00000000000..be0a9d298ad
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-w/texlive-tablestyles/test_texlive-tablestyles_function_uninstall.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test if texlive-tablestyles package can be cleanly uninstalled
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "测试开始:验证texlive-tablestyles包能否被干净卸载"
+
+ # 定义软件包名称
+ PACKAGE_NAME="texlive-tablestyles"
+
+ # 检查软件包是否在yum源中
+ LOG_INFO "步骤1:检查yum源中是否存在$PACKAGE_NAME软件包"
+ dnf list available "$PACKAGE_NAME" &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包$PACKAGE_NAME在yum源中不存在"
+ exit 255
+ fi
+
+ # 检查当前环境是否已安装该软件包
+ LOG_INFO "步骤2:检查当前环境是否已安装$PACKAGE_NAME软件包"
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_INFO "软件包$PACKAGE_NAME已安装,脚本结束后将保持安装状态"
+ INSTALLED_BEFORE=true
+ else
+ LOG_INFO "软件包$PACKAGE_NAME未安装,将在测试前安装"
+ INSTALLED_BEFORE=false
+ fi
+
+ # 如果未安装,则安装软件包作为测试步骤
+ if [ "$INSTALLED_BEFORE" = false ]; then
+ LOG_INFO "步骤3:安装$PACKAGE_NAME软件包"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装$PACKAGE_NAME失败"
+ fi
+
+ # 测试卸载功能
+ LOG_INFO "步骤4:测试卸载$PACKAGE_NAME软件包"
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载$PACKAGE_NAME失败"
+
+ # 验证软件包是否已成功卸载
+ LOG_INFO "步骤5:验证$PACKAGE_NAME软件包是否已卸载"
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_ERROR "软件包$PACKAGE_NAME卸载后仍然存在"
+ exit 1
+ else
+ LOG_INFO "软件包$PACKAGE_NAME已成功卸载"
+ fi
+
+ # 环境恢复:如果之前未安装,则重新安装以恢复环境
+ if [ "$INSTALLED_BEFORE" = false ]; then
+ LOG_INFO "步骤6:恢复环境,重新安装$PACKAGE_NAME软件包"
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "恢复安装$PACKAGE_NAME失败"
+ else
+ LOG_INFO "步骤6:环境已恢复,保持$PACKAGE_NAME软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成:texlive-tablestyles包可以干净卸载"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_basic_usage.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_basic_usage.sh
new file mode 100644
index 00000000000..2b4f5a6c03b
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_basic_usage.sh
@@ -0,0 +1,88 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test basic LaTeX document compilation with circledsteps
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "1. 检查环境中是否已安装texlive-circledsteps软件包"
+ rpm -q texlive-circledsteps > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "环境已安装texlive-circledsteps,脚本结束后将保持安装状态"
+ INSTALLED=1
+ else
+ LOG_INFO "环境未安装texlive-circledsteps,测试将包含安装与卸载步骤"
+ INSTALLED=0
+ fi
+
+ LOG_INFO "2. 检查yum源中是否存在texlive-circledsteps软件包"
+ dnf list available texlive-circledsteps > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "yum源中未找到texlive-circledsteps软件包"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到texlive-circledsteps软件包,测试终止"
+ exit 255
+ fi
+
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "3. 安装texlive-circledsteps软件包"
+ dnf install -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "安装texlive-circledsteps软件包失败"
+ fi
+
+ LOG_INFO "4. 检查circledsteps宏包提供的命令"
+ kpsewhich circledsteps.sty > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "circledsteps.sty宏包文件未找到"
+
+ LOG_INFO "5. 创建测试LaTeX文档"
+ TEST_FILE="test_circledsteps.tex"
+ cat > $TEST_FILE << "EOF"
+ \documentclass{article}
+ \usepackage{circledsteps}
+ \begin{document}
+ Example of circled step: \Circled{1}
+ \end{document}
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试LaTeX文档失败"
+
+ LOG_INFO "6. 使用pdflatex编译测试文档"
+ pdflatex -interaction=nonstopmode $TEST_FILE > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "使用pdflatex编译包含circledsteps的LaTeX文档失败"
+
+ LOG_INFO "7. 检查是否成功生成PDF文件"
+ if [ -f "${TEST_FILE%.tex}.pdf" ]; then
+ LOG_INFO "成功生成PDF文件: ${TEST_FILE%.tex}.pdf"
+ else
+ LOG_ERROR "未找到生成的PDF文件"
+ exit 1
+ fi
+
+ LOG_INFO "8. 清理测试生成的文件"
+ rm -f test_circledsteps.aux test_circledsteps.log test_circledsteps.pdf test_circledsteps.tex
+
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "9. 卸载texlive-circledsteps软件包"
+ dnf remove -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "卸载texlive-circledsteps软件包失败"
+ else
+ LOG_INFO "9. 环境已预先安装,跳过卸载步骤"
+ fi
+
+ LOG_INFO "10. 测试完成,环境已恢复"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_colors.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_colors.sh
new file mode 100644
index 00000000000..07f7bd49adb
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_colors.sh
@@ -0,0 +1,91 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test applying colors to circled steps
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:Test applying colors to circled steps"
+
+ LOG_INFO "步骤1:检查系统是否已安装texlive-circledsteps包"
+ if dnf list installed texlive-circledsteps &>/dev/null; then
+ LOG_INFO "texlive-circledsteps已安装,脚本结束时将保持安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "texlive-circledsteps未安装,将在测试过程中安装,并在结束时卸载"
+ INSTALLED=false
+ fi
+
+ LOG_INFO "步骤2:检查yum源中是否存在texlive-circledsteps包"
+ if ! dnf list available texlive-circledsteps &>/dev/null; then
+ LOG_ERROR "yum源中未找到texlive-circledsteps包"
+ exit 255
+ fi
+
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "步骤3:安装texlive-circledsteps包"
+ dnf install -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "安装texlive-circledsteps包失败"
+ fi
+
+ LOG_INFO "步骤4:验证circledsteps命令是否支持颜色参数"
+ if ! texdoc circledsteps 2>&1 | grep -q "color"; then
+ LOG_ERROR "circledsteps命令不支持颜色参数"
+ if [ "$INSTALLED" = false ]; then
+ dnf remove -y texlive-circledsteps
+ fi
+ exit 255
+ fi
+
+ LOG_INFO "步骤5:测试应用颜色到circledsteps"
+ TEST_FILE="test_circledsteps_color.tex"
+ cat > "$TEST_FILE" << "EOF"
+ \documentclass{article}
+ \usepackage{circledsteps}
+ \usepackage{xcolor}
+ \begin{document}
+ \Circled[fillcolor=red]{1}
+ \Circled[fillcolor=blue]{2}
+ \Circled[fillcolor=green]{3}
+ \end{document}
+ EOF
+
+ pdflatex -interaction=nonstopmode "$TEST_FILE"
+ CHECK_RESULT $? 0 0 "生成带颜色的circledsteps PDF失败"
+
+ LOG_INFO "步骤6:检查生成的PDF文件"
+ if [ -f "${TEST_FILE%.tex}.pdf" ]; then
+ LOG_INFO "成功生成带颜色的circledsteps PDF文件"
+ else
+ LOG_ERROR "未找到生成的PDF文件"
+ CHECK_RESULT 1 0 0 "PDF文件未生成"
+ fi
+
+ LOG_INFO "步骤7:清理测试文件"
+ rm -f "${TEST_FILE%.tex}".* 2>/dev/null
+
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "步骤8:卸载texlive-circledsteps包"
+ dnf remove -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "卸载texlive-circledsteps包失败"
+ fi
+
+ LOG_INFO "测试完成:Test applying colors to circled steps"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_list_usage.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_list_usage.sh
new file mode 100644
index 00000000000..cfaa1587574
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_list_usage.sh
@@ -0,0 +1,83 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test using circled steps in lists and enumerations
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "测试开始:测试在列表和枚举中使用circled steps功能"
+
+ # 步骤1:检查环境是否已安装texlive-circledsteps
+ LOG_INFO "步骤1:检查texlive-circledsteps是否已安装"
+ if dnf list installed texlive-circledsteps &>/dev/null; then
+ LOG_INFO "texlive-circledsteps已安装,保持安装状态"
+ INSTALLED=1
+ else
+ LOG_INFO "texlive-circledsteps未安装,将在测试后卸载"
+ INSTALLED=0
+ fi
+
+ # 步骤2:检查yum源中是否有texlive-circledsteps软件包
+ LOG_INFO "步骤2:检查yum源中是否有texlive-circledsteps软件包"
+ if ! dnf list available texlive-circledsteps &>/dev/null; then
+ LOG_ERROR "yum源中未找到texlive-circledsteps软件包"
+ exit 255
+ fi
+
+ # 步骤3:安装texlive-circledsteps(如果未安装)
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装texlive-circledsteps"
+ dnf install -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "安装texlive-circledsteps失败"
+ fi
+
+ # 步骤4:验证circledsteps命令是否存在
+ LOG_INFO "步骤4:验证circledsteps命令是否存在"
+ if ! command -v circledsteps &>/dev/null; then
+ LOG_ERROR "circledsteps命令不存在或不支持"
+ exit 255
+ fi
+
+ # 步骤5:测试circledsteps命令的基本功能
+ LOG_INFO "步骤5:测试circledsteps命令的基本功能"
+ circledsteps --help
+ CHECK_RESULT $? 0 0 "circledsteps命令执行失败"
+
+ # 步骤6:测试在列表中使用circledsteps
+ LOG_INFO "步骤6:测试在列表中使用circledsteps"
+ echo -e "\\begin{enumerate}\n\\item First item\n\\item Second item\n\\end{enumerate}" | circledsteps
+ CHECK_RESULT $? 0 0 "在列表中使用circledsteps失败"
+
+ # 步骤7:测试在枚举中使用circledsteps
+ LOG_INFO "步骤7:测试在枚举中使用circledsteps"
+ echo -e "\\begin{itemize}\n\\item Item one\n\\item Item two\n\\end{itemize}" | circledsteps
+ CHECK_RESULT $? 0 0 "在枚举中使用circledsteps失败"
+
+ # 步骤8:清理环境(如果之前未安装)
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤8:卸载texlive-circledsteps"
+ dnf remove -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "卸载texlive-circledsteps失败"
+ else
+ LOG_INFO "步骤8:保持texlive-circledsteps安装状态"
+ fi
+
+ LOG_INFO "测试结束:测试在列表和枚举中使用circled steps功能完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_sizes.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_sizes.sh
new file mode 100644
index 00000000000..3c8c1abc72e
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_sizes.sh
@@ -0,0 +1,91 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test different sizes of circled steps
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "测试开始:测试不同大小的 circled steps 功能"
+ LOG_INFO "步骤1:检查系统是否已安装 texlive-circledsteps 软件包"
+ rpm -q texlive-circledsteps > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "texlive-circledsteps 已安装,脚本结束后将保持安装状态"
+ INSTALLED=1
+ else
+ LOG_INFO "texlive-circledsteps 未安装,将在测试中安装,并在脚本结束前卸载"
+ INSTALLED=0
+ fi
+
+ LOG_INFO "步骤2:检查 yum 源中是否存在 texlive-circledsteps 软件包"
+ dnf list available texlive-circledsteps > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum 源中未找到 texlive-circledsteps 软件包"
+ exit 255
+ fi
+
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装 texlive-circledsteps 软件包"
+ dnf install -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "安装 texlive-circledsteps 失败"
+ fi
+
+ LOG_INFO "步骤4:测试不同大小的 circled steps 功能"
+ LOG_INFO "步骤4.1:测试小尺寸 circled steps"
+ echo "\documentclass{article}
+ \usepackage{circledsteps}
+ \begin{document}
+ \Circled{1}
+ \end{document}" > test_small.tex
+ pdflatex -interaction=nonstopmode test_small.tex > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "生成小尺寸 circled steps 失败"
+
+ LOG_INFO "步骤4.2:测试中尺寸 circled steps"
+ echo "\documentclass{article}
+ \usepackage{circledsteps}
+ \begin{document}
+ \Circled[scale=1.5]{2}
+ \end{document}" > test_medium.tex
+ pdflatex -interaction=nonstopmode test_medium.tex > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "生成中尺寸 circled steps 失败"
+
+ LOG_INFO "步骤4.3:测试大尺寸 circled steps"
+ echo "\documentclass{article}
+ \usepackage{circledsteps}
+ \begin{document}
+ \Circled[scale=2]{3}
+ \end{document}" > test_large.tex
+ pdflatex -interaction=nonstopmode test_large.tex > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "生成大尺寸 circled steps 失败"
+
+ LOG_INFO "步骤5:清理生成的测试文件"
+ rm -f test_small.tex test_small.aux test_small.log test_small.pdf
+ rm -f test_medium.tex test_medium.aux test_medium.log test_medium.pdf
+ rm -f test_large.tex test_large.aux test_large.log test_large.pdf
+
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤6:卸载 texlive-circledsteps 软件包"
+ dnf remove -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "卸载 texlive-circledsteps 失败"
+ else
+ LOG_INFO "步骤6:保持 texlive-circledsteps 安装状态,不进行卸载"
+ fi
+
+ LOG_INFO "测试完成:不同大小的 circled steps 功能测试结束"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_step_types.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_step_types.sh
new file mode 100644
index 00000000000..32221f9a660
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_step_types.sh
@@ -0,0 +1,131 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test different circled step types (1, a, A, i, I)
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义颜色输出函数(如果需要的话)
+ LOG_INFO() {
+ echo "[INFO] $1"
+ }
+ LOG_ERROR() {
+ echo "[ERROR] $1"
+ }
+
+ # 定义检查结果函数(如果需要的话)
+ CHECK_RESULT() {
+ local actual=$1
+ local expected=$2
+ local exit_code=$3
+ local error_msg=$4
+ if [ "$actual" -ne "$expected" ]; then
+ LOG_ERROR "$error_msg"
+ exit $exit_code
+ fi
+ }
+
+ # 定义SSH_CMD函数(如果需要的话)
+ SSH_CMD() {
+ local cmd=$1
+ local ip=$2
+ local password=$3
+ local user=$4
+ sshpass -p "$password" ssh -o StrictHostKeyChecking=no "$user@$ip" "$cmd"
+ }
+
+ # 定义软件包名称
+ PACKAGE_NAME="texlive-circledsteps"
+
+ # 检查软件包是否在yum源中
+ LOG_INFO "检查yum源中是否存在 $PACKAGE_NAME 软件包..."
+ dnf list available "$PACKAGE_NAME" &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在 $PACKAGE_NAME 软件包"
+ exit 255
+ fi
+
+ # 检查环境是否已安装
+ LOG_INFO "检查环境是否已安装 $PACKAGE_NAME..."
+ if rpm -q "$PACKAGE_NAME" &>/dev/null; then
+ LOG_INFO "环境已安装 $PACKAGE_NAME,测试结束后保持安装状态"
+ INSTALLED_BEFORE=true
+ else
+ LOG_INFO "环境未安装 $PACKAGE_NAME,将在测试结束后卸载"
+ INSTALLED_BEFORE=false
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$INSTALLED_BEFORE" = false ]; then
+ LOG_INFO "安装 $PACKAGE_NAME 软件包..."
+ dnf install -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
+ fi
+
+ # 测试不同的circled step types (1, a, A, i, I)
+ LOG_INFO "测试不同的circled step types (1, a, A, i, I)..."
+
+ # 测试参数1
+ LOG_INFO "测试参数1..."
+ circledsteps 1 &>/dev/null
+ CHECK_RESULT $? 0 0 "参数1测试失败"
+
+ # 测试参数a
+ LOG_INFO "测试参数a..."
+ circledsteps a &>/dev/null
+ CHECK_RESULT $? 0 0 "参数a测试失败"
+
+ # 测试参数A
+ LOG_INFO "测试参数A..."
+ circledsteps A &>/dev/null
+ CHECK_RESULT $? 0 0 "参数A测试失败"
+
+ # 测试参数i
+ LOG_INFO "测试参数i..."
+ circledsteps i &>/dev/null
+ CHECK_RESULT $? 0 0 "参数i测试失败"
+
+ # 测试参数I
+ LOG_INFO "测试参数I..."
+ circledsteps I &>/dev/null
+ CHECK_RESULT $? 0 0 "参数I测试失败"
+
+ # 测试不支持的参数
+ LOG_INFO "测试不支持的参数..."
+ circledsteps invalid_param &>/dev/null
+ if [ $? -eq 255 ]; then
+ LOG_INFO "不支持的参数测试通过"
+ else
+ LOG_ERROR "不支持的参数测试失败"
+ exit 255
+ fi
+
+ # 清理环境
+ LOG_INFO "清理环境..."
+ if [ "$INSTALLED_BEFORE" = false ]; then
+ LOG_INFO "卸载 $PACKAGE_NAME 软件包..."
+ dnf remove -y "$PACKAGE_NAME"
+ CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 失败"
+ else
+ LOG_INFO "保持 $PACKAGE_NAME 软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_uninstall.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_uninstall.sh
new file mode 100644
index 00000000000..fefef0683d9
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_uninstall.sh
@@ -0,0 +1,99 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test removal of texlive-circledsteps package
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试环境检查
+ LOG_INFO "检查是否已安装texlive-circledsteps软件包"
+ rpm -q texlive-circledsteps
+ if [ $? -eq 0 ]; then
+ LOG_INFO "环境已安装texlive-circledsteps,测试结束后将保持安装状态"
+ INSTALLED_BEFORE_TEST=1
+ else
+ LOG_INFO "环境未安装texlive-circledsteps,将在测试前安装并在测试后卸载"
+ INSTALLED_BEFORE_TEST=0
+ fi
+
+ # 检查yum源中是否存在该软件包
+ LOG_INFO "检查yum源中是否存在texlive-circledsteps软件包"
+ dnf list available texlive-circledsteps > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在texlive-circledsteps软件包"
+ exit 255
+ fi
+
+ # 如果未安装则先安装软件包
+ if [ ${INSTALLED_BEFORE_TEST} -eq 0 ]; then
+ LOG_INFO "开始安装texlive-circledsteps软件包"
+ dnf install -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "安装texlive-circledsteps软件包失败"
+ LOG_INFO "texlive-circledsteps软件包安装成功"
+ fi
+
+ # 验证软件包安装状态
+ LOG_INFO "验证texlive-circledsteps软件包已正确安装"
+ rpm -q texlive-circledsteps
+ CHECK_RESULT $? 0 0 "texlive-circledsteps软件包未正确安装"
+
+ # 执行卸载测试
+ LOG_INFO "开始卸载texlive-circledsteps软件包"
+ dnf remove -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "卸载texlive-circledsteps软件包失败"
+ LOG_INFO "texlive-circledsteps软件包卸载成功"
+
+ # 验证软件包已卸载
+ LOG_INFO "验证texlive-circledsteps软件包已完全卸载"
+ rpm -q texlive-circledsteps
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "texlive-circledsteps软件包卸载后仍然存在"
+ exit 1
+ fi
+ LOG_INFO "texlive-circledsteps软件包已完全卸载"
+
+ # 环境恢复
+ LOG_INFO "开始恢复测试环境"
+ if [ ${INSTALLED_BEFORE_TEST} -eq 1 ]; then
+ LOG_INFO "重新安装texlive-circledsteps软件包以恢复原始状态"
+ dnf install -y texlive-circledsteps
+ CHECK_RESULT $? 0 0 "恢复texlive-circledsteps软件包失败"
+ LOG_INFO "texlive-circledsteps软件包已恢复安装"
+ else
+ LOG_INFO "测试前未安装texlive-circledsteps,无需恢复"
+ fi
+
+ # 最终验证
+ LOG_INFO "最终环境验证"
+ if [ ${INSTALLED_BEFORE_TEST} -eq 1 ]; then
+ rpm -q texlive-circledsteps
+ CHECK_RESULT $? 0 0 "环境恢复后texlive-circledsteps软件包不存在"
+ LOG_INFO "环境已成功恢复到测试前的安装状态"
+ else
+ rpm -q texlive-circledsteps
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "环境恢复后texlive-circledsteps软件包仍然存在"
+ exit 1
+ fi
+ LOG_INFO "环境已成功恢复到测试前的未安装状态"
+ fi
+
+ LOG_INFO "texlive-circledsteps软件包卸载功能测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_version.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_version.sh
new file mode 100644
index 00000000000..f0ae24999be
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps/test_texlive-circledsteps_function_version.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test checking package version information
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 测试软件包版本信息
+ LOG_INFO "开始测试软件包版本信息"
+
+ # 定义软件包名称
+ PACKAGE_NAME="texlive-circledsteps"
+
+ # 检查环境是否已安装
+ LOG_INFO "检查环境是否已安装${PACKAGE_NAME}"
+ if dnf list installed "${PACKAGE_NAME}" >/dev/null 2>&1; then
+ LOG_INFO "${PACKAGE_NAME}已安装"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "${PACKAGE_NAME}未安装"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 检查yum源中是否有该软件包
+ LOG_INFO "检查yum源中是否有${PACKAGE_NAME}软件包"
+ if ! dnf list available "${PACKAGE_NAME}" >/dev/null 2>&1; then
+ LOG_ERROR "yum源中未找到${PACKAGE_NAME}软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "安装${PACKAGE_NAME}软件包"
+ dnf install -y "${PACKAGE_NAME}"
+ CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
+ fi
+
+ # 测试版本信息查询功能
+ LOG_INFO "测试查询${PACKAGE_NAME}版本信息"
+ # 检查软件包是否支持version参数
+ if ! rpm -q "${PACKAGE_NAME}" --queryformat "%{VERSION}-%{RELEASE}" >/dev/null 2>&1; then
+ LOG_ERROR "${PACKAGE_NAME}不支持版本查询参数"
+ exit 255
+ fi
+
+ # 获取版本信息
+ VERSION_INFO=$(rpm -q "${PACKAGE_NAME}" --queryformat "%{VERSION}-%{RELEASE}")
+ CHECK_RESULT $? 0 0 "查询${PACKAGE_NAME}版本信息失败"
+
+ # 验证版本信息格式
+ LOG_INFO "验证版本信息格式"
+ if [[ "${VERSION_INFO}" =~ ^[0-9]+\.[0-9]+.*-[0-9]+.*$ ]]; then
+ LOG_INFO "版本信息格式正确: ${VERSION_INFO}"
+ else
+ LOG_ERROR "版本信息格式不正确: ${VERSION_INFO}"
+ exit 1
+ fi
+
+ # 清理环境:如果测试前未安装,则卸载软件包
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "卸载${PACKAGE_NAME}软件包"
+ dnf remove -y "${PACKAGE_NAME}"
+ CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_content.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_content.sh
new file mode 100644
index 00000000000..43cd437619d
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_content.sh
@@ -0,0 +1,102 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 检查texlive-umoline-doc软件包文档内容,确认其包含umoline宏包的使用说明
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查texlive-umoline-doc软件包文档内容,确认其包含umoline宏包的使用说明
+
+ LOG_INFO "开始测试:检查texlive-umoline-doc软件包文档内容"
+
+ # 步骤1:检查软件包是否已在yum源中
+ LOG_INFO "步骤1:检查texlive-umoline-doc软件包是否在yum源中"
+ dnf list texlive-umoline-doc 2>/dev/null | grep -q "texlive-umoline-doc"
+ CHECK_RESULT $? 0 0 "软件包texlive-umoline-doc不在yum源中"
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包texlive-umoline-doc不在yum源中"
+ exit 255
+ fi
+
+ # 步骤2:检查软件包是否已安装
+ LOG_INFO "步骤2:检查texlive-umoline-doc软件包是否已安装"
+ rpm -q texlive-umoline-doc >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "软件包texlive-umoline-doc已安装"
+ INSTALLED=1
+ else
+ LOG_INFO "软件包texlive-umoline-doc未安装,将进行安装"
+ INSTALLED=0
+ fi
+
+ # 步骤3:如果未安装,则安装软件包
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "步骤3:安装texlive-umoline-doc软件包"
+ dnf install -y texlive-umoline-doc
+ CHECK_RESULT $? 0 0 "安装texlive-umoline-doc软件包失败"
+ fi
+
+ # 步骤4:检查软件包文档路径
+ LOG_INFO "步骤4:检查texlive-umoline-doc软件包文档路径"
+ DOC_PATH=$(rpm -ql texlive-umoline-doc | grep -E "\.pdf$|\.html$|\.txt$" | head -1)
+ if [ -z "$DOC_PATH" ]; then
+ LOG_ERROR "未找到texlive-umoline-doc软件包的文档文件"
+ CHECK_RESULT 1 0 1 "未找到文档文件"
+ fi
+
+ # 步骤5:检查文档内容是否包含umoline宏包使用说明
+ LOG_INFO "步骤5:检查文档内容是否包含umoline宏包使用说明"
+ if [[ "$DOC_PATH" == *.pdf ]]; then
+ # 对于PDF文件,使用pdftotext转换后检查
+ if command -v pdftotext >/dev/null 2>&1; then
+ pdftotext "$DOC_PATH" - 2>/dev/null | grep -i "umoline" | head -5
+ CHECK_RESULT $? 0 0 "文档中未找到umoline宏包使用说明"
+ else
+ LOG_INFO "未安装pdftotext工具,跳过PDF内容检查"
+ CHECK_RESULT 0 0 0 "跳过PDF内容检查"
+ fi
+ elif [[ "$DOC_PATH" == *.html ]] || [[ "$DOC_PATH" == *.htm ]]; then
+ # 对于HTML文件,使用grep检查
+ grep -i "umoline" "$DOC_PATH" | head -5
+ CHECK_RESULT $? 0 0 "文档中未找到umoline宏包使用说明"
+ elif [[ "$DOC_PATH" == *.txt ]]; then
+ # 对于文本文件,直接使用grep检查
+ grep -i "umoline" "$DOC_PATH" | head -5
+ CHECK_RESULT $? 0 0 "文档中未找到umoline宏包使用说明"
+ else
+ # 其他格式文件,尝试使用strings和grep
+ strings "$DOC_PATH" 2>/dev/null | grep -i "umoline" | head -5
+ CHECK_RESULT $? 0 0 "文档中未找到umoline宏包使用说明"
+ fi
+
+ LOG_INFO "步骤6:文档检查完成,umoline宏包使用说明存在"
+
+ # 步骤7:环境清理
+ LOG_INFO "步骤7:清理测试环境"
+ if [ $INSTALLED -eq 0 ]; then
+ LOG_INFO "卸载texlive-umoline-doc软件包"
+ dnf remove -y texlive-umoline-doc
+ CHECK_RESULT $? 0 0 "卸载texlive-umoline-doc软件包失败"
+ else
+ LOG_INFO "测试前已安装texlive-umoline-doc软件包,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成:texlive-umoline-doc软件包文档内容检查通过"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_uninstall.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_uninstall.sh
new file mode 100644
index 00000000000..d0a7fab93db
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_uninstall.sh
@@ -0,0 +1,93 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 测试texlive-umoline-doc软件包的卸载功能,验证卸载过程是否干净彻底
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ LOG_INFO "开始测试texlive-umoline-doc软件包的卸载功能"
+
+ # 检查软件包是否在yum源中
+ LOG_INFO "检查yum源中是否存在texlive-umoline-doc软件包"
+ dnf list texlive-umoline-doc &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到texlive-umoline-doc软件包"
+ exit 255
+ fi
+
+ # 检查当前环境是否已安装该软件包
+ LOG_INFO "检查当前环境是否已安装texlive-umoline-doc"
+ rpm -q texlive-umoline-doc &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_INFO "检测到texlive-umoline-doc已安装,将保持安装状态进行测试"
+ INSTALLED_BEFORE=true
+ else
+ LOG_INFO "检测到texlive-umoline-doc未安装,将执行安装作为测试步骤"
+ INSTALLED_BEFORE=false
+ fi
+
+ # 如果未安装,则先安装软件包
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "开始安装texlive-umoline-doc软件包"
+ dnf install -y texlive-umoline-doc
+ CHECK_RESULT $? 0 0 "安装texlive-umoline-doc失败"
+ LOG_INFO "texlive-umoline-doc安装成功"
+ fi
+
+ # 验证软件包安装状态
+ LOG_INFO "验证texlive-umoline-doc安装状态"
+ rpm -q texlive-umoline-doc
+ CHECK_RESULT $? 0 0 "验证texlive-umoline-doc安装状态失败"
+
+ # 执行卸载测试
+ LOG_INFO "开始卸载texlive-umoline-doc软件包"
+ dnf remove -y texlive-umoline-doc
+ CHECK_RESULT $? 0 0 "卸载texlive-umoline-doc失败"
+ LOG_INFO "texlive-umoline-doc卸载成功"
+
+ # 验证软件包是否完全卸载
+ LOG_INFO "验证texlive-umoline-doc是否完全卸载"
+ rpm -q texlive-umoline-doc &>/dev/null
+ if [ $? -eq 0 ]; then
+ LOG_ERROR "texlive-umoline-doc卸载不彻底,软件包仍存在"
+ exit 1
+ else
+ LOG_INFO "texlive-umoline-doc已完全卸载"
+ fi
+
+ # 检查相关文件是否清理干净
+ LOG_INFO "检查texlive-umoline-doc相关文件是否清理"
+ find /usr -name "*umoline*" 2>/dev/null | head -5
+ CHECK_RESULT $? 0 1 "发现未清理的texlive-umoline-doc相关文件"
+
+ # 环境恢复:如果测试前未安装,则保持未安装状态
+ if [ "$INSTALLED_BEFORE" = "false" ]; then
+ LOG_INFO "测试完成,环境恢复:保持texlive-umoline-doc未安装状态"
+ else
+ LOG_INFO "测试完成,重新安装texlive-umoline-doc以恢复环境"
+ dnf install -y texlive-umoline-doc
+ CHECK_RESULT $? 0 0 "重新安装texlive-umoline-doc失败"
+ LOG_INFO "环境恢复完成,texlive-umoline-doc已重新安装"
+ fi
+
+ LOG_INFO "texlive-umoline-doc卸载功能测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_verify.sh b/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_verify.sh
new file mode 100644
index 00000000000..4a64abed4fb
--- /dev/null
+++ b/testcases/function_test/pkg_test/texlive-split-y/texlive-umoline-doc/test_texlive-umoline-doc_verify.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : 验证texlive-umoline-doc软件包是否正确安装,检查关键文档文件是否存在
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ LOG_INFO "开始测试:验证texlive-umoline-doc软件包是否正确安装,检查关键文档文件是否存在"
+
+ # 步骤1:检查yum源中是否存在texlive-umoline-doc软件包
+ LOG_INFO "步骤1:检查yum源中是否存在texlive-umoline-doc软件包"
+ if ! dnf list available texlive-umoline-doc &>/dev/null; then
+ LOG_ERROR "yum源中未找到texlive-umoline-doc软件包"
+ exit 255
+ fi
+
+ # 步骤2:检查系统是否已安装texlive-umoline-doc
+ LOG_INFO "步骤2:检查系统是否已安装texlive-umoline-doc"
+ if rpm -q texlive-umoline-doc &>/dev/null; then
+ LOG_INFO "texlive-umoline-doc已安装,标记为已存在安装"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "texlive-umoline-doc未安装,将在测试中安装"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 步骤3:如果未安装,则安装软件包
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "步骤3:安装texlive-umoline-doc软件包"
+ dnf install -y texlive-umoline-doc
+ CHECK_RESULT $? 0 0 "安装texlive-umoline-doc失败"
+ fi
+
+ # 步骤4:验证关键文档文件是否存在
+ LOG_INFO "步骤4:验证关键文档文件是否存在"
+ # 假设关键文档文件为 /usr/share/doc/texlive-umoline-doc/README 和 /usr/share/doc/texlive-umoline-doc/umoline.pdf
+ # 实际文件路径可能需要根据软件包具体内容调整
+ CRITICAL_FILES=(
+ "/usr/share/doc/texlive-umoline-doc/README"
+ "/usr/share/doc/texlive-umoline-doc/umoline.pdf"
+ )
+
+ for file in "${CRITICAL_FILES[@]}"; do
+ if [ -f "$file" ]; then
+ LOG_INFO "文件 $file 存在"
+ else
+ LOG_ERROR "关键文档文件 $file 不存在"
+ # 文件不存在,视为测试失败,退出码为1(一般错误)
+ exit 1
+ fi
+ done
+
+ LOG_INFO "所有关键文档文件检查通过"
+
+ # 步骤5:环境恢复
+ LOG_INFO "步骤5:环境恢复"
+ if [ ${ALREADY_INSTALLED} -eq 0 ]; then
+ LOG_INFO "卸载测试安装的texlive-umoline-doc软件包"
+ dnf remove -y texlive-umoline-doc
+ CHECK_RESULT $? 0 0 "卸载texlive-umoline-doc失败"
+ else
+ LOG_INFO "系统原本已安装texlive-umoline-doc,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成:texlive-umoline-doc软件包安装及关键文档验证成功"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_cli_decoder.sh b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_cli_decoder.sh
new file mode 100644
index 00000000000..32cb8eb8660
--- /dev/null
+++ b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_cli_decoder.sh
@@ -0,0 +1,116 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test decoder command line usage
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 初始化变量
+ PACKAGE_NAME="vo-amrwbenc-devel"
+ BINARY_NAME="amrwb-dec"
+ TEST_FILE="test.amrwb"
+ OUTPUT_FILE="output.pcm"
+
+ # 检查软件包是否在yum源中
+ LOG_INFO "检查yum源中是否存在软件包: $PACKAGE_NAME"
+ dnf list available $PACKAGE_NAME > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到软件包: $PACKAGE_NAME"
+ exit 255
+ fi
+
+ # 检查环境是否已安装
+ LOG_INFO "检查环境是否已安装软件包: $PACKAGE_NAME"
+ if rpm -q $PACKAGE_NAME > /dev/null 2>&1; then
+ LOG_INFO "软件包已安装,标记为保持安装状态"
+ KEEP_INSTALLED=true
+ else
+ LOG_INFO "软件包未安装,标记为需要清理"
+ KEEP_INSTALLED=false
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$KEEP_INSTALLED" = "false" ]; then
+ LOG_INFO "安装软件包: $PACKAGE_NAME"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装软件包失败"
+ fi
+
+ # 检查解码器命令是否存在
+ LOG_INFO "检查解码器命令是否存在: $BINARY_NAME"
+ which $BINARY_NAME > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "解码器命令不存在"
+
+ # 检查解码器命令参数支持
+ LOG_INFO "检查解码器命令参数支持"
+ $BINARY_NAME --help > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "解码器命令不支持--help参数"
+ exit 255
+ fi
+
+ # 创建测试用的AMR-WB文件(模拟)
+ LOG_INFO "创建测试用的AMR-WB文件"
+ echo "AMR-WB test data" > $TEST_FILE
+
+ # 测试解码器基本用法
+ LOG_INFO "测试解码器基本用法"
+ $BINARY_NAME $TEST_FILE $OUTPUT_FILE
+ CHECK_RESULT $? 0 0 "解码器执行失败"
+
+ # 检查输出文件是否生成
+ LOG_INFO "检查输出文件是否生成"
+ if [ -f "$OUTPUT_FILE" ]; then
+ LOG_INFO "输出文件生成成功"
+ else
+ LOG_ERROR "输出文件未生成"
+ exit 1
+ fi
+
+ # 测试不支持的参数
+ LOG_INFO "测试不支持的参数"
+ $BINARY_NAME --invalid-param 2>&1 | grep -q "unrecognized option"
+ if [ $? -eq 0 ]; then
+ LOG_INFO "不支持参数检查正常"
+ else
+ LOG_ERROR "解码器命令参数检查异常"
+ exit 255
+ fi
+
+ # 测试无效输入文件
+ LOG_INFO "测试无效输入文件处理"
+ $BINARY_NAME non_existent_file.amrwb invalid_output.pcm 2>&1 | grep -q "Error\|error\|No such file"
+ CHECK_RESULT $? 0 0 "无效文件处理异常"
+
+ # 清理测试文件
+ LOG_INFO "清理测试文件"
+ rm -f $TEST_FILE $OUTPUT_FILE
+
+ # 环境恢复
+ if [ "$KEEP_INSTALLED" = "false" ]; then
+ LOG_INFO "卸载软件包: $PACKAGE_NAME"
+ dnf remove -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "卸载软件包失败"
+ else
+ LOG_INFO "保持软件包安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_cli_encoder.sh b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_cli_encoder.sh
new file mode 100644
index 00000000000..0c4d5c1516f
--- /dev/null
+++ b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_cli_encoder.sh
@@ -0,0 +1,113 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test encoder command line usage
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 判断是否已安装vo-amrwbenc-devel软件包
+ LOG_INFO "检查vo-amrwbenc-devel是否已安装"
+ if rpm -q vo-amrwbenc-devel &>/dev/null; then
+ LOG_INFO "vo-amrwbenc-devel已安装,记录安装状态"
+ INSTALLED="true"
+ else
+ LOG_INFO "vo-amrwbenc-devel未安装"
+ INSTALLED="false"
+ fi
+
+ # 检查yum源中是否有vo-amrwbenc-devel软件包
+ LOG_INFO "检查yum源中是否存在vo-amrwbenc-devel软件包"
+ if ! dnf list available vo-amrwbenc-devel &>/dev/null; then
+ LOG_ERROR "yum源中不存在vo-amrwbenc-devel软件包"
+ exit 255
+ fi
+
+ # 如果未安装,则安装软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "安装vo-amrwbenc-devel软件包"
+ dnf install -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "安装vo-amrwbenc-devel软件包失败"
+ fi
+
+ # 检查encoder命令是否存在
+ LOG_INFO "检查encoder命令是否存在"
+ if ! command -v encoder &>/dev/null; then
+ LOG_ERROR "encoder命令不存在"
+ exit 255
+ fi
+
+ # 测试encoder命令的基本用法
+ LOG_INFO "测试encoder命令的基本用法"
+ encoder --help
+ CHECK_RESULT $? 0 0 "encoder命令--help参数执行失败"
+
+ # 测试encoder命令的版本信息
+ LOG_INFO "测试encoder命令的版本信息"
+ encoder --version
+ CHECK_RESULT $? 0 0 "encoder命令--version参数执行失败"
+
+ # 创建测试用的原始音频文件(模拟一个空的wav文件头)
+ LOG_INFO "创建测试用的原始音频文件"
+ cat > test_input.raw << "EOF"
+ RIFF\x00\x00\x00WAVEfmt \x10\x00\x00\x00\x01\x00\x02\x00\x80\xbb\x00\x00\x00\xee\x02\x00\x04\x00\x10\x00data\x00\x00\x00\x00
+ EOF
+ CHECK_RESULT $? 0 0 "创建测试输入文件失败"
+
+ # 测试encoder命令的编码功能
+ LOG_INFO "测试encoder命令的编码功能"
+ encoder test_input.raw test_output.amr
+ CHECK_RESULT $? 0 0 "encoder命令编码功能执行失败"
+
+ # 检查输出文件是否生成
+ LOG_INFO "检查输出文件是否生成"
+ if [ -f test_output.amr ]; then
+ LOG_INFO "输出文件成功生成"
+ else
+ LOG_ERROR "输出文件未生成"
+ exit 1
+ fi
+
+ # 测试encoder命令的比特率参数
+ LOG_INFO "测试encoder命令的比特率参数"
+ encoder -b 15850 test_input.raw test_output_bitrate.amr
+ CHECK_RESULT $? 0 0 "encoder命令比特率参数执行失败"
+
+ # 测试不支持的参数
+ LOG_INFO "测试不支持的参数"
+ encoder --unsupported-param 2>/dev/null
+ if [ $? -ne 255 ] && [ $? -ne 0 ]; then
+ LOG_ERROR "不支持的参数处理异常"
+ exit 255
+ fi
+
+ # 清理测试文件
+ LOG_INFO "清理测试文件"
+ rm -f test_input.raw test_output.amr test_output_bitrate.amr
+ CHECK_RESULT $? 0 0 "清理测试文件失败"
+
+ # 如果测试前未安装,则卸载软件包
+ if [ "$INSTALLED" = "false" ]; then
+ LOG_INFO "卸载vo-amrwbenc-devel软件包"
+ dnf remove -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "卸载vo-amrwbenc-devel软件包失败"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_headers.sh b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_headers.sh
new file mode 100644
index 00000000000..8a6557f08fb
--- /dev/null
+++ b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_headers.sh
@@ -0,0 +1,124 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test presence of header files
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 定义日志函数(实际环境中可能已定义,这里为完整性添加但保持简单)
+ LOG_INFO() {
+ echo "[INFO] $*"
+ }
+ LOG_ERROR() {
+ echo "[ERROR] $*" >&2
+ }
+
+ # 检查软件包是否在yum源中
+ check_package_in_repo() {
+ local package_name=$1
+ dnf list available "$package_name" &>/dev/null
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "软件包 $package_name 不在yum源中"
+ exit 255
+ fi
+ LOG_INFO "软件包 $package_name 在yum源中存在"
+ }
+
+ # 检查命令参数是否支持
+ check_command_option() {
+ local cmd=$1
+ local option=$2
+ if ! $cmd $option &>/dev/null; then
+ LOG_ERROR "命令 $cmd 不支持参数 $option"
+ exit 255
+ fi
+ LOG_INFO "命令 $cmd 支持参数 $option"
+ }
+
+ # 检查头文件是否存在
+ check_header_files() {
+ local header_file=$1
+ if [ -f "$header_file" ]; then
+ LOG_INFO "头文件 $header_file 存在"
+ return 0
+ else
+ LOG_ERROR "头文件 $header_file 不存在"
+ return 1
+ fi
+ }
+
+ # 主测试函数
+ main() {
+ LOG_INFO "开始测试头文件是否存在"
+
+ # 定义软件包名称
+ PACKAGE_NAME="vo-amrwbenc-devel"
+
+ # 检查软件包是否已在环境中安装
+ if rpm -q $PACKAGE_NAME &>/dev/null; then
+ LOG_INFO "软件包 $PACKAGE_NAME 已安装,测试后保持安装状态"
+ ALREADY_INSTALLED=1
+ else
+ LOG_INFO "软件包 $PACKAGE_NAME 未安装,将在测试中安装"
+ ALREADY_INSTALLED=0
+ fi
+
+ # 检查软件包是否在yum源中
+ check_package_in_repo $PACKAGE_NAME
+
+ # 如果未安装,则安装软件包
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "安装软件包 $PACKAGE_NAME"
+ dnf install -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
+ fi
+
+ # 测试头文件是否存在
+ LOG_INFO "检查头文件是否存在"
+
+ # 常见的头文件路径(根据实际软件包调整)
+ HEADER_FILES=(
+ "/usr/include/vo-amrwbenc/enc_if.h"
+ "/usr/include/vo-amrwbenc/dec_if.h"
+ )
+
+ for header in "${HEADER_FILES[@]}"; do
+ check_header_files "$header"
+ CHECK_RESULT $? 0 0 "头文件 $header 不存在"
+ done
+
+ LOG_INFO "头文件存在测试通过"
+
+ # 清理环境:如果测试前未安装,则卸载软件包
+ if [ $ALREADY_INSTALLED -eq 0 ]; then
+ LOG_INFO "卸载软件包 $PACKAGE_NAME"
+ dnf remove -y $PACKAGE_NAME
+ CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
+ LOG_INFO "环境已恢复到测试前状态"
+ else
+ LOG_INFO "保持软件包 $PACKAGE_NAME 的安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+ }
+
+ # 执行主测试函数
+ main
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_install.sh b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_install.sh
new file mode 100644
index 00000000000..726facd4959
--- /dev/null
+++ b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_install.sh
@@ -0,0 +1,75 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test installation of the package
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试:Test installation of the package"
+ LOG_INFO "步骤1:检查当前环境中是否已安装vo-amrwbenc-devel软件包"
+ if rpm -q vo-amrwbenc-devel > /dev/null 2>&1; then
+ LOG_INFO "vo-amrwbenc-devel已安装,脚本结束时将保持安装状态"
+ INSTALLED_BEFORE=true
+ else
+ LOG_INFO "vo-amrwbenc-devel未安装,将在测试中安装并在结束时卸载"
+ INSTALLED_BEFORE=false
+ fi
+
+ LOG_INFO "步骤2:检查yum源中是否存在vo-amrwbenc-devel软件包"
+ if ! dnf list available vo-amrwbenc-devel > /dev/null 2>&1; then
+ LOG_ERROR "yum源中未找到vo-amrwbenc-devel软件包"
+ exit 255
+ fi
+
+ LOG_INFO "步骤3:安装vo-amrwbenc-devel软件包"
+ dnf install -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "安装vo-amrwbenc-devel失败"
+
+ LOG_INFO "步骤4:验证vo-amrwbenc-devel软件包安装成功"
+ rpm -q vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "验证vo-amrwbenc-devel安装失败"
+
+ LOG_INFO "步骤5:测试vo-amrwbenc-devel提供的命令或功能"
+ if command -v amrwb-encoder > /dev/null 2>&1; then
+ LOG_INFO "测试amrwb-encoder命令是否存在"
+ amrwb-encoder --help > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "amrwb-encoder命令执行失败"
+ else
+ LOG_INFO "未找到amrwb-encoder命令,尝试其他相关命令或库文件"
+ if [ -f /usr/lib64/libvo-amrwbenc.so ]; then
+ LOG_INFO "找到libvo-amrwbenc.so库文件"
+ else
+ LOG_ERROR "未找到vo-amrwbenc-devel提供的命令或库文件"
+ exit 255
+ fi
+ fi
+
+ LOG_INFO "步骤6:清理环境,恢复到之前的状态"
+ if [ "$INSTALLED_BEFORE" = false ]; then
+ LOG_INFO "卸载vo-amrwbenc-devel软件包"
+ dnf remove -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "卸载vo-amrwbenc-devel失败"
+ LOG_INFO "已卸载vo-amrwbenc-devel软件包"
+ else
+ LOG_INFO "测试前已安装vo-amrwbenc-devel,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_lib_presence.sh b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_lib_presence.sh
new file mode 100644
index 00000000000..b9cb18bed62
--- /dev/null
+++ b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_lib_presence.sh
@@ -0,0 +1,60 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test presence of library files
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ LOG_INFO "开始测试库文件是否存在"
+ LOG_INFO "检查vo-amrwbenc-devel软件包是否已安装"
+ rpm -q vo-amrwbenc-devel > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ LOG_INFO "vo-amrwbenc-devel软件包已安装,记录安装状态"
+ INSTALLED=true
+ else
+ LOG_INFO "vo-amrwbenc-devel软件包未安装"
+ INSTALLED=false
+ fi
+ LOG_INFO "检查yum源中是否存在vo-amrwbenc-devel软件包"
+ dnf list available vo-amrwbenc-devel > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中未找到vo-amrwbenc-devel软件包"
+ exit 255
+ fi
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "安装vo-amrwbenc-devel软件包"
+ dnf install -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "安装vo-amrwbenc-devel软件包失败"
+ fi
+ LOG_INFO "测试库文件是否存在"
+ ls /usr/lib*/libvo-amrwbenc.so.* > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "库文件libvo-amrwbenc.so不存在"
+ ls /usr/include/vo-amrwbenc/enc_if.h > /dev/null 2>&1
+ CHECK_RESULT $? 0 0 "头文件enc_if.h不存在"
+ LOG_INFO "清理环境"
+ if [ "$INSTALLED" = false ]; then
+ LOG_INFO "卸载vo-amrwbenc-devel软件包"
+ dnf remove -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "卸载vo-amrwbenc-devel软件包失败"
+ else
+ LOG_INFO "保持vo-amrwbenc-devel软件包安装状态"
+ fi
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_pkgconfig.sh b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_pkgconfig.sh
new file mode 100644
index 00000000000..dcd079e319a
--- /dev/null
+++ b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_pkgconfig.sh
@@ -0,0 +1,74 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test pkg-config file presence
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ # 检查是否已安装vo-amrwbenc-devel包
+ LOG_INFO "检查vo-amrwbenc-devel是否已安装"
+ rpm -q vo-amrwbenc-devel > /dev/null 2>&1
+ is_installed=$?
+
+ # 如果未安装,则安装
+ if [ $is_installed -ne 0 ]; then
+ LOG_INFO "vo-amrwbenc-devel未安装,开始安装"
+
+ # 检查yum源中是否有该软件包
+ LOG_INFO "检查yum源中是否存在vo-amrwbenc-devel包"
+ dnf list available vo-amrwbenc-devel > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ LOG_ERROR "yum源中不存在vo-amrwbenc-devel包"
+ exit 255
+ fi
+
+ # 安装软件包
+ LOG_INFO "安装vo-amrwbenc-devel包"
+ dnf install -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "安装vo-amrwbenc-devel失败"
+ fi
+
+ # 测试pkg-config文件是否存在
+ LOG_INFO "测试pkg-config文件是否存在"
+ pkg-config --exists vo-amrwbenc
+ CHECK_RESULT $? 0 0 "vo-amrwbenc pkg-config文件不存在"
+
+ # 获取pkg-config信息
+ LOG_INFO "获取vo-amrwbenc的pkg-config信息"
+ pkg-config --modversion vo-amrwbenc
+ CHECK_RESULT $? 0 0 "获取vo-amrwbenc版本信息失败"
+
+ pkg-config --cflags vo-amrwbenc
+ CHECK_RESULT $? 0 0 "获取vo-amrwbenc编译标志失败"
+
+ pkg-config --libs vo-amrwbenc
+ CHECK_RESULT $? 0 0 "获取vo-amrwbenc链接标志失败"
+
+ # 环境清理:如果测试前未安装,则卸载软件包
+ if [ $is_installed -ne 0 ]; then
+ LOG_INFO "清理环境:卸载vo-amrwbenc-devel包"
+ dnf remove -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "卸载vo-amrwbenc-devel失败"
+ else
+ LOG_INFO "测试前已安装vo-amrwbenc-devel,保持安装状态"
+ fi
+
+ LOG_INFO "测试完成"
+}
+
+main "$@"
\ No newline at end of file
diff --git a/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_uninstall.sh b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_uninstall.sh
new file mode 100644
index 00000000000..368191440fc
--- /dev/null
+++ b/testcases/function_test/pkg_test/vo-amrwbenc/vo-amrwbenc-devel/test_vo-amrwbenc-devel_uninstall.sh
@@ -0,0 +1,70 @@
+#!/usr/bin/bash
+
+# Copyright (c) 2024 ISCAS .ALL rights reserved.
+# This program is licensed under Mulan PSL v2.
+# You can use it according to the terms and conditions of the Mulan PSL v2.
+# http://license.coscl.org.cn/MulanPSL2
+# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+# See the Mulan PSL v2 for more details.
+
+# #############################################
+# @Author : honghua
+# @Contact : honghua@iscas.ac.cn
+# @Date : 2026-04-07
+# @License : Mulan PSL v2
+# @Desc : Test removal of the package
+# ############################################
+
+source "$OET_PATH/libs/locallibs/common_lib.sh"
+
+function run_test() {
+ set -e
+
+ LOG_INFO "开始测试:Test removal of the package"
+ LOG_INFO "步骤1:检查yum源中是否存在vo-amrwbenc-devel软件包"
+ dnf list available vo-amrwbenc-devel &> /dev/null
+ CHECK_RESULT $? 0 0 "yum源中未找到vo-amrwbenc-devel软件包,退出测试"
+
+ LOG_INFO "步骤2:检查当前环境是否已安装vo-amrwbenc-devel"
+ if rpm -q vo-amrwbenc-devel &> /dev/null; then
+ LOG_INFO "检测到vo-amrwbenc-devel已安装,脚本将保持安装状态"
+ INSTALLED_BEFORE_TEST=true
+ else
+ LOG_INFO "检测到vo-amrwbenc-devel未安装,将在测试中安装"
+ INSTALLED_BEFORE_TEST=false
+ fi
+
+ LOG_INFO "步骤3:执行软件包卸载测试(若未安装则先安装)"
+ if [ "$INSTALLED_BEFORE_TEST" = "false" ]; then
+ LOG_INFO "步骤3.1:安装vo-amrwbenc-devel软件包"
+ dnf install -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "安装vo-amrwbenc-devel软件包失败"
+ fi
+
+ LOG_INFO "步骤3.2:卸载vo-amrwbenc-devel软件包"
+ dnf remove -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "卸载vo-amrwbenc-devel软件包失败"
+
+ LOG_INFO "步骤4:验证软件包是否已成功卸载"
+ if rpm -q vo-amrwbenc-devel &> /dev/null; then
+ LOG_ERROR "软件包卸载后,验证发现vo-amrwbenc-devel仍然存在"
+ exit 1
+ else
+ LOG_INFO "验证通过:vo-amrwbenc-devel已成功卸载"
+ fi
+
+ LOG_INFO "步骤5:环境恢复"
+ if [ "$INSTALLED_BEFORE_TEST" = "false" ]; then
+ LOG_INFO "测试前环境未安装该软件包,无需重新安装,保持环境干净"
+ else
+ LOG_INFO "测试前环境已安装该软件包,重新安装以恢复原状"
+ dnf install -y vo-amrwbenc-devel
+ CHECK_RESULT $? 0 0 "重新安装vo-amrwbenc-devel软件包失败"
+ fi
+
+ LOG_INFO "测试完成:Test removal of the package"
+}
+
+main "$@"
\ No newline at end of file