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