Merge branch 'pkg' of http://10.30.190.190:54866/redrsoe2100/os-autotest into pkg
This commit is contained in:
@@ -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软件包提供的可用模块或功能。"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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 信息"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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软件包"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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分析项目依赖"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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进行默认基准测试,验证性能测试功能。"
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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 软件包的核心文档内容(如手册、示例文件)在安装后是否可被正常访问和读取。"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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命令帮助信息显示"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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 "$@"
|
||||
@@ -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
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
||||
<module name="Checker">
|
||||
<module name="TreeWalker">
|
||||
<module name="AvoidStarImport"/>
|
||||
</module>
|
||||
</module>
|
||||
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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
||||
<module name="Checker">
|
||||
<module name="TreeWalker">
|
||||
<module name="AvoidStarImport"/>
|
||||
</module>
|
||||
</module>
|
||||
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 "<?xml" output.xml
|
||||
CHECK_RESULT $? 0 0 "输出文件为有效的XML格式"
|
||||
else
|
||||
LOG_ERROR "输出文件为空或不存在"
|
||||
exit 1
|
||||
fi
|
||||
elif [ $EXIT_CODE -eq 1 ]; then
|
||||
LOG_INFO "checkstyle检查到代码问题(这是预期行为)"
|
||||
if [ -s output.xml ]; then
|
||||
LOG_INFO "输出文件生成成功"
|
||||
grep -q "<?xml" output.xml
|
||||
CHECK_RESULT $? 0 0 "输出文件为有效的XML格式"
|
||||
else
|
||||
LOG_ERROR "输出文件为空或不存在"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
LOG_ERROR "checkstyle命令执行失败,退出码: $EXIT_CODE"
|
||||
exit $EXIT_CODE
|
||||
fi
|
||||
|
||||
# 清理测试文件
|
||||
LOG_INFO "清理测试文件"
|
||||
rm -f test_config.xml TestFile.java output.xml
|
||||
|
||||
# 步骤5:环境恢复
|
||||
LOG_INFO "步骤5:环境恢复"
|
||||
if [ "$INSTALLED" = "false" ]; then
|
||||
LOG_INFO "卸载测试安装的软件包"
|
||||
dnf remove -y $PACKAGE_NAME
|
||||
CHECK_RESULT $? 0 0 "卸载软件包成功"
|
||||
else
|
||||
LOG_INFO "保持原有安装状态"
|
||||
fi
|
||||
|
||||
LOG_INFO "测试完成"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -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和-o参数
|
||||
# ############################################
|
||||
|
||||
source "$OET_PATH/libs/locallibs/common_lib.sh"
|
||||
|
||||
function run_test() {
|
||||
# 定义日志函数(根据要求直接使用,无需重新定义)
|
||||
LOG_INFO() {
|
||||
echo "[INFO] $*"
|
||||
}
|
||||
LOG_ERROR() {
|
||||
echo "[ERROR] $*"
|
||||
}
|
||||
|
||||
# 测试用例描述:测试组合使用-c和-o参数
|
||||
LOG_INFO "开始测试checkstyle命令组合使用-c和-o参数"
|
||||
|
||||
# 定义软件包名称
|
||||
PACKAGE_NAME="checkstyle"
|
||||
COMMAND_NAME="checkstyle"
|
||||
|
||||
# 步骤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
|
||||
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
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
||||
<module name="Checker">
|
||||
<module name="TreeWalker">
|
||||
<module name="AvoidStarImport"/>
|
||||
</module>
|
||||
</module>
|
||||
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 "$@"
|
||||
@@ -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"
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
||||
<module name="Checker">
|
||||
<module name="TreeWalker">
|
||||
<module name="AvoidStarImport"/>
|
||||
</module>
|
||||
</module>
|
||||
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 "$@"
|
||||
@@ -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"
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
||||
<module name="Checker">
|
||||
<module name="TreeWalker">
|
||||
<module name="AvoidStarImport"/>
|
||||
</module>
|
||||
</module>
|
||||
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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "<?xml" checkstyle_output.xml; then
|
||||
LOG_INFO "输出文件格式正确"
|
||||
else
|
||||
LOG_ERROR "输出文件格式不正确"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
LOG_ERROR "输出文件未生成"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 测试不支持的参数
|
||||
LOG_INFO "测试不支持的参数(预期失败)"
|
||||
checkstyle --invalid-param &>/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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 <<EOF
|
||||
// 测试文件
|
||||
public class Test {
|
||||
// 注释
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Hello");
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
# 测试使用-T参数打印包含注释的AST
|
||||
LOG_INFO "测试使用-T参数打印包含注释的AST"
|
||||
checkstyle -T test.java 2>&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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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"
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
||||
<module name="Checker">
|
||||
<module name="TreeWalker">
|
||||
<module name="AvoidStarImport"/>
|
||||
</module>
|
||||
</module>
|
||||
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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 <<EOF > /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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "file://$DTD_FILE">
|
||||
<book>
|
||||
<title>Test Book</title>
|
||||
<chapter>
|
||||
<title>Test Chapter</title>
|
||||
<para>This is a test paragraph.</para>
|
||||
</chapter>
|
||||
</book>
|
||||
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 "$@"
|
||||
@@ -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"
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "file:///usr/share/sgml/docbook/xml-dtd-4.5/docbookx.dtd">
|
||||
<article>
|
||||
<title>测试文档</title>
|
||||
<para>这是一个简单的DocBook XML测试文档。</para>
|
||||
</article>
|
||||
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 "$@"
|
||||
@@ -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 <stdio.h>
|
||||
#include <drpm.h>
|
||||
|
||||
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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
@@ -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 "$@"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user