This commit is contained in:
2026-04-17 07:47:11 +08:00
79 changed files with 0 additions and 5579 deletions

View File

@@ -6,18 +6,10 @@
"name": "test_bval-parent_function_init",
"desc": "Test initialization of bval-parent"
},
{
"name": "test_bval-parent_function_load",
"desc": "Test loading of bval-parent"
},
{
"name": "test_bval-parent_function_validate",
"desc": "Test validation of bval-parent"
},
{
"name": "test_bval-parent_function_save",
"desc": "Test saving of bval-parent"
},
{
"name": "test_bval-parent_function_install",
"desc": "Test installation of bval-parent package"
@@ -25,22 +17,6 @@
{
"name": "test_bval-parent_function_uninstall",
"desc": "Test uninstallation of bval-parent package"
},
{
"name": "test_bval-parent_function_check_version",
"desc": "Test checking bval-parent version"
},
{
"name": "test_bval-parent_function_help",
"desc": "Test displaying help or usage information"
},
{
"name": "test_bval-parent_function_config",
"desc": "Test basic configuration of bval-parent"
},
{
"name": "test_bval-parent_function_list",
"desc": "Test listing features or components"
}
]
}

View File

@@ -1,22 +0,0 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/perl-File-MimeInfo/perl-File-MimeInfo-help",
"machine num": 1,
"cases": [
{
"name": "test_perl-File-MimeInfo-help_install",
"desc": "测试软件包 perl-File-MimeInfo-help 的安装功能,验证其能否通过系统包管理器成功安装。"
},
{
"name": "test_perl-File-MimeInfo-help_remove",
"desc": "测试软件包 perl-File-MimeInfo-help 的卸载功能,验证其能否通过系统包管理器被干净地移除。"
},
{
"name": "test_perl-File-MimeInfo-help_query",
"desc": "测试查询软件包 perl-File-MimeInfo-help 的安装状态,验证包管理器能正确返回其版本和状态信息。"
},
{
"name": "test_perl-File-MimeInfo-help_help",
"desc": "测试软件包 perl-File-MimeInfo-help 提供的帮助文档或工具,验证其是否能输出有效的使用信息。"
}
]
}

View File

@@ -6,26 +6,6 @@
"name": "test_python3-identify_install",
"desc": "测试python3-identify软件包的安装功能验证是否能够成功安装。",
"machine num": 1
},
{
"name": "test_python3-identify_identify-cli_path",
"desc": "测试 identify-cli 命令的基本功能,传入路径参数"
},
{
"name": "test_python3-identify_identify-cli_filename_only",
"desc": "测试 identify-cli 命令的 --filename-only 参数功能"
},
{
"name": "test_python3-identify_function_filetype",
"desc": "测试 identify-cli 命令的文件类型识别功能"
},
{
"name": "test_python3-identify_function_version",
"desc": "测试 identify-cli 命令的版本显示功能"
},
{
"name": "test_python3-identify_function_help",
"desc": "测试 identify-cli 命令的帮助信息显示功能"
}
]
}

View File

@@ -1,10 +0,0 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/python-pillow/python3-pillow",
"machine num": 1,
"cases": [
{
"name": "test_python3-pillow_function_image_open",
"desc": "Test opening an image file"
}
]
}

View File

@@ -5,14 +5,6 @@
{
"name": "test_rust-lldb_function_install",
"desc": "Test the installation of rust-lldb package"
},
{
"name": "test_rust-lldb_rust-lldb",
"desc": "测试 rust-lldb 命令的基本功能"
},
{
"name": "test_rust-lldb_function_debug",
"desc": "Test debugging with rust-lldb"
}
]
}

View File

@@ -2,81 +2,9 @@
"path": "$OET_PATH/testcases/function_test/pkg_test/setools/setools-gui",
"machine num": 1,
"cases": [
{
"name": "test_setools-gui_apol_h",
"desc": "测试apol命令的帮助功能"
},
{
"name": "test_setools-gui_apol_upper_version",
"desc": "测试apol命令的版本信息显示功能"
},
{
"name": "test_setools-gui_apol_v",
"desc": "测试apol命令的详细输出模式"
},
{
"name": "test_setools-gui_apol_debug",
"desc": "测试apol命令的调试模式"
},
{
"name": "test_setools-gui_apol_policy",
"desc": "测试apol命令加载并分析指定的SELinux策略文件"
},
{
"name": "test_setools-gui_apol_v_debug",
"desc": "测试apol命令同时启用详细输出和调试模式"
},
{
"name": "test_setools-gui_apol_v_policy",
"desc": "测试apol命令在详细输出模式下加载并分析指定的SELinux策略文件"
},
{
"name": "test_setools-gui_apol_debug_policy",
"desc": "测试apol命令在调试模式下加载并分析指定的SELinux策略文件"
},
{
"name": "test_setools-gui_apol_v_debug_policy",
"desc": "测试apol命令同时启用详细输出、调试模式并加载指定的SELinux策略文件"
},
{
"name": "test_setools-gui_function_install",
"desc": "测试setools-gui软件包安装功能"
},
{
"name": "test_setools-gui_function_check_install",
"desc": "测试检查setools-gui软件包是否已安装"
},
{
"name": "test_setools-gui_function_uninstall",
"desc": "测试setools-gui软件包卸载功能"
},
{
"name": "test_setools-gui_function_gui_launch",
"desc": "测试启动setools-gui图形界面主程序"
},
{
"name": "test_setools-gui_function_apol_help",
"desc": "测试apol命令行工具帮助功能"
},
{
"name": "test_setools-gui_function_sediffx_launch",
"desc": "测试启动sediffx策略比较图形工具"
},
{
"name": "test_setools-gui_function_sepolicy_help",
"desc": "测试sepolicy命令行工具帮助功能"
},
{
"name": "test_setools-gui_function_apol_analyze",
"desc": "测试使用apol分析SELinux策略"
},
{
"name": "test_setools-gui_function_sediffx_compare",
"desc": "测试使用sediffx比较两个策略"
},
{
"name": "test_setools-gui_function_sepolicy_query",
"desc": "测试使用sepolicy查询策略信息"
}
]
}

View File

@@ -1,10 +0,0 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-d/texlive-chickenize-doc",
"machine num": 1,
"cases": [
{
"name": "test_texlive-chickenize-doc_function_install",
"desc": "Verify package installation"
}
]
}

View File

@@ -9,14 +9,6 @@
{
"name": "test_texlive-context-simpleslides_function_remove",
"desc": "Test package removal"
},
{
"name": "test_texlive-context-simpleslides_function_check_installed",
"desc": "Verify package installation status"
},
{
"name": "test_texlive-context-simpleslides_function_basic_compile",
"desc": "Test basic ConTeXt slide compilation"
}
]
}

View File

@@ -1,10 +0,0 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-h/texlive-ebsthesis-doc",
"machine num": 1,
"cases": [
{
"name": "test_texlive-ebsthesis-doc_function_docgen",
"desc": "Test documentation generation"
}
]
}

View File

@@ -6,11 +6,6 @@
"name": "test_texlive-etaremune-doc_install",
"desc": "测试 texlive-etaremune-doc 包的安装功能,验证是否能够成功安装。",
"machine num": 1
},
{
"name": "test_texlive-etaremune-doc_uninstall",
"desc": "测试 texlive-etaremune-doc 包的卸载功能,验证是否能够成功卸载。",
"machine num": 1
}
]
}

View File

@@ -1,14 +0,0 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-h/texlive-exercisebank",
"machine num": 1,
"cases": [
{
"name": "test_texlive-exercisebank_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-exercisebank_function_basic",
"desc": "Test basic commands"
}
]
}

View File

@@ -13,14 +13,6 @@
{
"name": "test_texlive-exp-testopt-doc_function_version",
"desc": "Check package version info"
},
{
"name": "test_texlive-exp-testopt-doc_function_listfiles",
"desc": "List package files"
},
{
"name": "test_texlive-exp-testopt-doc_function_usage",
"desc": "Check basic usage example"
}
]
}

View File

@@ -13,14 +13,6 @@
{
"name": "test_texlive-placeins-doc_function_verify_content",
"desc": "Test if the documentation files for the placeins package exist and are accessible."
},
{
"name": "test_texlive-placeins-doc_function_usage_info",
"desc": "Test accessing basic usage information from the documentation."
},
{
"name": "test_texlive-placeins-doc_function_man_page",
"desc": "Test if the manual page for the placeins package is available."
}
]
}

View File

@@ -15,10 +15,6 @@
"name": "test_texlive-pst-dbicons_function_version",
"desc": "测试查询 texlive-pst-dbicons 软件包的版本信息,验证其版本信息能否被正确获取。"
},
{
"name": "test_texlive-pst-dbicons_function_usage",
"desc": "测试 texlive-pst-dbicons 软件包的基本使用功能,验证其宏包能否在 LaTeX 文档中正常加载并编译。"
},
{
"name": "test_texlive-pst-dbicons_function_filelist",
"desc": "测试 texlive-pst-dbicons 软件包的文件列表功能,验证其安装后是否包含了预期的样式和文档文件。"

View File

@@ -5,22 +5,6 @@
{
"name": "test_texlive-sanitize-umlaut_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-sanitize-umlaut_function_remove",
"desc": "Test package removal"
},
{
"name": "test_texlive-sanitize-umlaut_function_check",
"desc": "Test package availability"
},
{
"name": "test_texlive-sanitize-umlaut_function_usage",
"desc": "Test basic command usage"
},
{
"name": "test_texlive-sanitize-umlaut_function_help",
"desc": "Test help option display"
}
]
}

View File

@@ -2,29 +2,9 @@
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-x/texlive-profcollege",
"machine num": 1,
"cases": [
{
"name": "test_texlive-profcollege_basic",
"desc": "Test basic functionality of texlive-profcollege"
},
{
"name": "test_texlive-profcollege_function_install",
"desc": "Test installation of texlive-profcollege package"
},
{
"name": "test_texlive-profcollege_function_uninstall",
"desc": "Test uninstallation of texlive-profcollege package"
},
{
"name": "test_texlive-profcollege_function_version",
"desc": "Test checking package version information"
},
{
"name": "test_texlive-profcollege_function_doc",
"desc": "Test accessibility of package documentation"
},
{
"name": "test_texlive-profcollege_function_compile",
"desc": "Test compiling a basic LaTeX document using profcollege"
}
]
}

View File

@@ -2,37 +2,9 @@
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-x/texlive-tocloft",
"machine num": 1,
"cases": [
{
"name": "test_texlive-tocloft_function_toc",
"desc": "Test the table of contents functionality"
},
{
"name": "test_texlive-tocloft_function_install",
"desc": "Test if the texlive-tocloft package can be installed successfully."
},
{
"name": "test_texlive-tocloft_function_uninstall",
"desc": "Test if the texlive-tocloft package can be cleanly uninstalled."
},
{
"name": "test_texlive-tocloft_function_basic_toc",
"desc": "Test basic table of contents generation with tocloft."
},
{
"name": "test_texlive-tocloft_function_toc_format",
"desc": "Test formatting options for table of contents."
},
{
"name": "test_texlive-tocloft_function_list_of_fig",
"desc": "Test generation of list of figures with tocloft."
},
{
"name": "test_texlive-tocloft_function_list_of_tab",
"desc": "Test generation of list of tables with tocloft."
},
{
"name": "test_texlive-tocloft_function_package_load",
"desc": "Test if the LaTeX document can load the tocloft package."
}
]
}

View File

@@ -1,106 +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-03-11
# @License : Mulan PSL v2
# @Desc : Test checking bval-parent version
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义测试软件包名称
PACKAGE_NAME="bval-parent"
# 步骤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"
IS_INSTALLED=0
rpm -q $PACKAGE_NAME > /dev/null 2>&1
if [ $? -eq 0 ]; then
IS_INSTALLED=1
LOG_INFO "软件包 $PACKAGE_NAME 已安装,测试结束后将保持安装状态"
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 失败"
fi
# 步骤4: 检查bval-parent版本命令
LOG_INFO "4. 检查bval-parent版本信息"
# 假设检查版本的命令是 bval-parent --version如果命令不存在或参数不支持则退出
command -v bval-parent > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "命令 bval-parent 不存在"
exit 255
fi
# 检查--version参数是否支持
bval-parent --version > /dev/null 2>&1
if [ $? -eq 255 ]; then
LOG_ERROR "命令 bval-parent 不支持 --version 参数"
exit 255
fi
# 执行版本检查命令
bval-parent --version
CHECK_RESULT $? 0 0 "执行 bval-parent --version 失败"
# 步骤5: 在第二个服务器上执行相同检查(如果配置了第二个服务器)
if [ -n "$NODE2_IPV4" ] && [ -n "$NODE2_PASSWORD" ] && [ -n "$NODE2_USER" ]; then
LOG_INFO "5. 在第二个服务器上检查bval-parent版本"
SSH_CMD "command -v bval-parent > /dev/null 2>&1" $NODE2_IPV4 $NODE2_PASSWORD $NODE2_USER
if [ $? -ne 0 ]; then
LOG_ERROR "第二个服务器上命令 bval-parent 不存在"
exit 255
fi
SSH_CMD "bval-parent --version > /dev/null 2>&1" $NODE2_IPV4 $NODE2_PASSWORD $NODE2_USER
if [ $? -eq 255 ]; then
LOG_ERROR "第二个服务器上命令 bval-parent 不支持 --version 参数"
exit 255
fi
SSH_CMD "bval-parent --version" $NODE2_IPV4 $NODE2_PASSWORD $NODE2_USER
CHECK_RESULT $? 0 0 "在第二个服务器上执行 bval-parent --version 失败"
else
LOG_INFO "5. 未配置第二个服务器,跳过在第二个服务器上的检查"
fi
# 步骤6: 清理环境
LOG_INFO "6. 清理测试环境"
if [ $IS_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 "测试完成: Test checking bval-parent version"
}
main "$@"

View File

@@ -1,99 +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-03-11
# @License : Mulan PSL v2
# @Desc : Test basic configuration of bval-parent
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试bval-parent基础配置
LOG_INFO "开始测试bval-parent基础配置"
# 定义软件包名称
PACKAGE_NAME="bval-parent"
# 检查环境是否已安装该软件包
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
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否有${PACKAGE_NAME}软件包"
if ! dnf list available ${PACKAGE_NAME} &> /dev/null; then
LOG_ERROR "yum源中未找到${PACKAGE_NAME}软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ ${ALREADY_INSTALLED} -eq 0 ]; then
LOG_INFO "安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
fi
# 测试bval-parent基础配置
LOG_INFO "测试bval-parent基础配置功能"
# 检查bval-parent命令是否存在
LOG_INFO "检查bval-parent命令是否可用"
if ! command -v bval-parent &> /dev/null; then
LOG_ERROR "bval-parent命令不存在"
if [ ${ALREADY_INSTALLED} -eq 0 ]; then
dnf remove -y ${PACKAGE_NAME}
fi
exit 255
fi
# 测试bval-parent命令的基本参数
LOG_INFO "测试bval-parent命令的--help参数"
bval-parent --help
CHECK_RESULT $? 0 0 "bval-parent --help执行失败"
LOG_INFO "测试bval-parent命令的--version参数"
bval-parent --version
CHECK_RESULT $? 0 0 "bval-parent --version执行失败"
# 测试不支持的参数
LOG_INFO "测试bval-parent命令的不支持参数"
bval-parent --invalid-param 2>&1 | grep -q "unrecognized option"
CHECK_RESULT $? 0 0 "bval-parent应该不支持--invalid-param参数"
# 测试基本配置功能
LOG_INFO "测试bval-parent基本配置功能"
bval-parent config --show
CHECK_RESULT $? 0 0 "bval-parent config --show执行失败"
# 清理环境
LOG_INFO "清理测试环境"
if [ ${ALREADY_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 "bval-parent基础配置测试完成"
}
main "$@"

View File

@@ -1,107 +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-03-11
# @License : Mulan PSL v2
# @Desc : Test displaying help or usage information
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 环境检查判断是否已安装bval-parent软件包
LOG_INFO "检查bval-parent软件包是否已安装"
rpm -q bval-parent > /dev/null 2>&1
is_installed=$?
# 记录初始安装状态,用于脚本结束时的环境恢复
initial_install_status=$is_installed
# 如果未安装,则进行安装
if [ $is_installed -ne 0 ]; then
LOG_INFO "bval-parent软件包未安装准备进行安装"
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否存在bval-parent软件包"
dnf list available bval-parent > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中未找到bval-parent软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到bval-parent软件包测试无法继续"
exit 255
fi
# 安装软件包
LOG_INFO "开始安装bval-parent软件包"
dnf install -y bval-parent > /dev/null 2>&1
CHECK_RESULT $? 0 0 "bval-parent软件包安装失败"
LOG_INFO "bval-parent软件包安装成功"
else
LOG_INFO "bval-parent软件包已安装跳过安装步骤"
fi
# 测试:显示帮助或使用信息
LOG_INFO "测试bval-parent命令的帮助信息显示功能"
# 检查bval-parent命令是否支持--help或-h参数
LOG_INFO "检查bval-parent命令是否支持帮助参数"
which bval-parent > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "bval-parent命令不存在"
exit 255
fi
# 尝试使用--help参数
LOG_INFO "尝试使用--help参数获取帮助信息"
bval-parent --help > /dev/null 2>&1
help_result=$?
# 如果--help不支持尝试使用-h参数
if [ $help_result -ne 0 ]; then
LOG_INFO "--help参数不支持尝试使用-h参数"
bval-parent -h > /dev/null 2>&1
help_result=$?
if [ $help_result -ne 0 ]; then
LOG_ERROR "bval-parent命令不支持--help或-h参数"
exit 255
fi
fi
# 验证帮助信息是否正确显示
LOG_INFO "验证帮助信息是否正确显示"
bval-parent --help 2>&1 | head -5 | grep -i "usage\|help\|选项" > /dev/null 2>&1
CHECK_RESULT $? 0 0 "帮助信息显示不正常"
LOG_INFO "帮助信息显示正常"
# 环境清理:根据初始状态恢复环境
LOG_INFO "开始环境清理"
# 如果初始状态是未安装,且当前已安装,则卸载软件包
if [ $initial_install_status -ne 0 ]; then
LOG_INFO "初始环境未安装bval-parent执行卸载操作"
rpm -q bval-parent > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "卸载bval-parent软件包"
dnf remove -y bval-parent > /dev/null 2>&1
CHECK_RESULT $? 0 0 "bval-parent软件包卸载失败"
LOG_INFO "bval-parent软件包卸载成功"
fi
else
LOG_INFO "初始环境已安装bval-parent保持安装状态"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,75 +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-03-11
# @License : Mulan PSL v2
# @Desc : Test listing features or components
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装测试所需软件包
LOG_INFO "检查测试环境是否已安装所需软件包"
if dnf list installed | grep -q "bval-parent-function-list"; then
LOG_INFO "软件包已安装,标记为保持安装状态"
INSTALLED=true
else
LOG_INFO "软件包未安装,将在测试过程中安装"
INSTALLED=false
fi
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否存在bval-parent-function-list软件包"
if ! dnf search bval-parent-function-list 2>/dev/null | grep -q "bval-parent-function-list"; then
LOG_ERROR "yum源中未找到bval-parent-function-list软件包"
exit 255
fi
# 执行测试用例:列出功能或组件
LOG_INFO "执行测试用例:列出功能或组件"
# 检查命令参数是否存在
LOG_INFO "检查bval-parent-function-list命令是否支持list参数"
if ! bval-parent-function-list --help 2>/dev/null | grep -q "list"; then
LOG_ERROR "bval-parent-function-list命令不支持list参数"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装bval-parent-function-list软件包"
dnf install -y bval-parent-function-list
CHECK_RESULT $? 0 0 "安装bval-parent-function-list软件包失败"
fi
# 执行列出功能或组件的命令
LOG_INFO "执行bval-parent-function-list list命令"
bval-parent-function-list list
CHECK_RESULT $? 0 0 "执行bval-parent-function-list list命令失败"
# 清理环境:如果测试前未安装,则卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载bval-parent-function-list软件包"
dnf remove -y bval-parent-function-list
CHECK_RESULT $? 0 0 "卸载bval-parent-function-list软件包失败"
LOG_INFO "环境已恢复到测试前状态"
else
LOG_INFO "保持软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,64 +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 : 2025-12-10
# @License : Mulan PSL v2
# @Desc : Test loading of bval-parent
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装指定软件包
LOG_INFO "检查是否已安装bval-parent软件包"
if dnf list installed bval-parent &>/dev/null; then
LOG_INFO "bval-parent软件包已安装脚本结束时将保持安装状态"
INSTALLED=true
else
LOG_INFO "bval-parent软件包未安装脚本结束时将卸载"
INSTALLED=false
fi
# 检查yum源中是否存在bval-parent软件包
LOG_INFO "检查yum源中是否存在bval-parent软件包"
if ! dnf list available bval-parent &>/dev/null; then
LOG_ERROR "yum源中未找到bval-parent软件包"
exit 255
fi
# 安装bval-parent软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装bval-parent软件包"
dnf install -y bval-parent
CHECK_RESULT $? 0 0 "安装bval-parent软件包失败"
fi
# 测试加载bval-parent功能
LOG_INFO "测试加载bval-parent功能"
bval-parent --test-load
CHECK_RESULT $? 0 0 "加载bval-parent功能失败"
# 清理环境
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载bval-parent软件包"
dnf remove -y bval-parent
CHECK_RESULT $? 0 0 "卸载bval-parent软件包失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,66 +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 : 2025-12-10
# @License : Mulan PSL v2
# @Desc : Test saving of bval-parent
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试脚本test_bval-parent_function_save
LOG_INFO "开始测试Test saving of bval-parent"
# 检查是否已安装软件包
LOG_INFO "检查环境是否已安装所需软件包"
if dnf list installed bval-parent &>/dev/null; then
LOG_INFO "软件包 bval-parent 已安装"
INSTALLED=true
else
LOG_INFO "软件包 bval-parent 未安装"
INSTALLED=false
fi
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否存在 bval-parent 软件包"
if ! dnf list available bval-parent &>/dev/null; then
LOG_ERROR "yum源中未找到 bval-parent 软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始安装 bval-parent 软件包"
dnf install -y bval-parent
CHECK_RESULT $? 0 0 "安装 bval-parent 失败"
fi
# 测试保存功能
LOG_INFO "测试保存功能"
bval-parent save --test-param
CHECK_RESULT $? 0 0 "保存功能测试失败"
# 清理环境
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载 bval-parent 软件包"
dnf remove -y bval-parent
CHECK_RESULT $? 0 0 "卸载 bval-parent 失败"
fi
LOG_INFO "测试完成Test saving of bval-parent"
}
main "$@"

View File

@@ -1,91 +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-03-16
# @License : Mulan PSL v2
# @Desc : 测试软件包 perl-File-MimeInfo-help 提供的帮助文档或工具,验证其是否能输出有效的使用信息。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 perl-File-MimeInfo-help 帮助文档"
LOG_INFO "步骤1: 检查 yum 源中是否存在 perl-File-MimeInfo-help 软件包"
dnf list available perl-File-MimeInfo-help > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum 源中未找到 perl-File-MimeInfo-help 软件包"
exit 255
fi
LOG_INFO "步骤2: 检查系统是否已安装 perl-File-MimeInfo-help"
rpm -q perl-File-MimeInfo-help > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "perl-File-MimeInfo-help 已安装,测试后保持安装状态"
INSTALLED=1
else
LOG_INFO "perl-File-MimeInfo-help 未安装,将安装后进行测试"
INSTALLED=0
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤3: 安装 perl-File-MimeInfo-help 软件包"
dnf install -y perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "安装 perl-File-MimeInfo-help 失败"
fi
LOG_INFO "步骤4: 验证 perl-File-MimeInfo-help 提供的帮助文档或工具"
LOG_INFO "检查是否有可执行的帮助命令或文档"
rpm -ql perl-File-MimeInfo-help | grep -E "\.(1|8)$" > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "找到 man page 文档,尝试查看"
MAN_PAGE=$(rpm -ql perl-File-MimeInfo-help | grep -E "\.(1|8)$" | head -1)
if [ -n "$MAN_PAGE" ]; then
man -P cat $(basename $MAN_PAGE .gz 2>/dev/null | sed "s/\.[18]$//") 2>&1 | head -5 > /dev/null
CHECK_RESULT $? 0 0 "无法查看帮助文档"
else
LOG_ERROR "未找到有效的帮助文档"
exit 255
fi
else
LOG_INFO "未找到 man page检查是否有其他帮助工具"
HELP_CMD=$(rpm -ql perl-File-MimeInfo-help | xargs file 2>/dev/null | grep "executable" | head -1 | cut -d: -f1)
if [ -n "$HELP_CMD" ]; then
$HELP_CMD --help > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "使用 --help 参数查看帮助"
$HELP_CMD --help | head -5 > /dev/null
CHECK_RESULT $? 0 0 "无法通过 --help 获取帮助信息"
else
LOG_ERROR "命令不支持 --help 参数"
exit 255
fi
else
LOG_ERROR "未找到可执行的帮助工具"
exit 255
fi
fi
LOG_INFO "步骤5: 清理环境"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载测试安装的 perl-File-MimeInfo-help 软件包"
dnf remove -y perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "卸载 perl-File-MimeInfo-help 失败"
else
LOG_INFO "保持原有安装状态,无需卸载"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,75 +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-03-16
# @License : Mulan PSL v2
# @Desc : 测试软件包 perl-File-MimeInfo-help 的安装功能,验证其能否通过系统包管理器成功安装。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试 perl-File-MimeInfo-help 软件包的安装功能"
# 检查软件包是否已在yum源中
LOG_INFO "检查 yum 源中是否存在 perl-File-MimeInfo-help 软件包"
if ! dnf list available perl-File-MimeInfo-help &>/dev/null; then
LOG_ERROR "yum 源中未找到 perl-File-MimeInfo-help 软件包"
exit 255
fi
# 检查当前环境中是否已安装该软件包
LOG_INFO "检查当前环境是否已安装 perl-File-MimeInfo-help"
if rpm -q perl-File-MimeInfo-help &>/dev/null; then
LOG_INFO "检测到 perl-File-MimeInfo-help 已安装,将保持安装状态"
installed_before_test=true
else
LOG_INFO "当前环境未安装 perl-File-MimeInfo-help将在测试中安装"
installed_before_test=false
fi
# 如果未安装,则执行安装步骤
if [ "$installed_before_test" = false ]; then
LOG_INFO "开始安装 perl-File-MimeInfo-help 软件包"
dnf install -y perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "安装 perl-File-MimeInfo-help 软件包失败"
LOG_INFO "perl-File-MimeInfo-help 软件包安装成功"
fi
# 验证软件包安装成功
LOG_INFO "验证 perl-File-MimeInfo-help 软件包是否成功安装"
rpm -q perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "验证 perl-File-MimeInfo-help 软件包安装状态失败"
# 验证软件包基本功能(例如查看帮助信息)
LOG_INFO "验证 perl-File-MimeInfo-help 的基本功能(查看帮助信息)"
mimeopen --help &>/dev/null
CHECK_RESULT $? 0 0 "执行 mimeopen --help 命令失败"
# 环境清理:如果测试前未安装,则在测试后卸载
if [ "$installed_before_test" = false ]; then
LOG_INFO "测试完成,清理环境:卸载 perl-File-MimeInfo-help 软件包"
dnf remove -y perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "卸载 perl-File-MimeInfo-help 软件包失败"
LOG_INFO "环境清理完成perl-File-MimeInfo-help 软件包已卸载"
else
LOG_INFO "测试完成,保持 perl-File-MimeInfo-help 软件包的安装状态"
fi
LOG_INFO "perl-File-MimeInfo-help 软件包安装功能测试完成"
}
main "$@"

View File

@@ -1,82 +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-03-16
# @License : Mulan PSL v2
# @Desc : 测试查询软件包 perl-File-MimeInfo-help 的安装状态,验证包管理器能正确返回其版本和状态信息。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装perl-File-MimeInfo-help软件包
LOG_INFO "开始测试查询perl-File-MimeInfo-help软件包状态"
# 检查软件包是否在yum源中
LOG_INFO "检查yum源中是否存在perl-File-MimeInfo-help软件包"
dnf list available perl-File-MimeInfo-help > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到perl-File-MimeInfo-help软件包"
exit 255
fi
# 检查当前是否已安装该软件包
LOG_INFO "检查当前系统是否已安装perl-File-MimeInfo-help软件包"
INSTALLED=false
rpm -q perl-File-MimeInfo-help > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "perl-File-MimeInfo-help软件包已安装"
INSTALLED=true
else
LOG_INFO "perl-File-MimeInfo-help软件包未安装开始安装"
dnf install -y perl-File-MimeInfo-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装perl-File-MimeInfo-help软件包失败"
fi
# 测试查询软件包信息
LOG_INFO "测试查询perl-File-MimeInfo-help软件包详细信息"
rpm -qi perl-File-MimeInfo-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "查询perl-File-MimeInfo-help软件包详细信息失败"
# 测试查询软件包版本
LOG_INFO "测试查询perl-File-MimeInfo-help软件包版本"
VERSION=$(rpm -q --qf "%{VERSION}-%{RELEASE}\n" perl-File-MimeInfo-help 2>/dev/null)
if [ -z "$VERSION" ]; then
LOG_ERROR "无法获取perl-File-MimeInfo-help软件包版本"
CHECK_RESULT 1 0 0 "查询perl-File-MimeInfo-help软件包版本失败"
else
LOG_INFO "perl-File-MimeInfo-help软件包版本: $VERSION"
CHECK_RESULT 0 0 0 "成功获取perl-File-MimeInfo-help软件包版本"
fi
# 测试查询软件包文件列表
LOG_INFO "测试查询perl-File-MimeInfo-help软件包文件列表"
rpm -ql perl-File-MimeInfo-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "查询perl-File-MimeInfo-help软件包文件列表失败"
# 清理环境
LOG_INFO "清理测试环境"
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载测试安装的perl-File-MimeInfo-help软件包"
dnf remove -y perl-File-MimeInfo-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载perl-File-MimeInfo-help软件包失败"
LOG_INFO "已恢复环境到测试前状态"
else
LOG_INFO "保持perl-File-MimeInfo-help软件包安装状态"
fi
LOG_INFO "perl-File-MimeInfo-help软件包查询测试完成"
}
main "$@"

View File

@@ -1,81 +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-03-16
# @License : Mulan PSL v2
# @Desc : 测试软件包 perl-File-MimeInfo-help 的卸载功能,验证其能否通过系统包管理器被干净地移除。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 perl-File-MimeInfo-help 软件包的卸载功能"
LOG_INFO "步骤1: 检查 perl-File-MimeInfo-help 软件包是否已在 yum 源中"
dnf list available perl-File-MimeInfo-help
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 perl-File-MimeInfo-help 在 yum 源中不可用"
exit 255
fi
LOG_INFO "软件包 perl-File-MimeInfo-help 在 yum 源中可用"
LOG_INFO "步骤2: 检查 perl-File-MimeInfo-help 软件包是否已安装"
rpm -q perl-File-MimeInfo-help
if [ $? -eq 0 ]; then
LOG_INFO "软件包 perl-File-MimeInfo-help 已安装,记录当前状态"
INSTALLED=1
else
LOG_INFO "软件包 perl-File-MimeInfo-help 未安装,将在测试中安装"
INSTALLED=0
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤3: 安装 perl-File-MimeInfo-help 软件包"
dnf install -y perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "安装 perl-File-MimeInfo-help 软件包失败"
LOG_INFO "软件包安装成功"
fi
LOG_INFO "步骤4: 验证软件包是否成功安装"
rpm -q perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "验证软件包安装状态失败"
LOG_INFO "步骤5: 执行卸载命令,移除 perl-File-MimeInfo-help 软件包"
dnf remove -y perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "卸载 perl-File-MimeInfo-help 软件包失败"
LOG_INFO "软件包卸载成功"
LOG_INFO "步骤6: 验证软件包是否已成功移除"
rpm -q perl-File-MimeInfo-help
if [ $? -eq 0 ]; then
LOG_ERROR "软件包卸载后仍然存在,卸载不干净"
CHECK_RESULT 1 0 0 "软件包卸载不干净"
else
LOG_INFO "软件包已成功移除"
CHECK_RESULT 0 0 0 "软件包卸载验证失败"
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤7: 恢复环境,卸载在测试中安装的软件包"
LOG_INFO "由于测试前未安装,环境已恢复,无需额外操作"
else
LOG_INFO "步骤7: 恢复环境,重新安装原始软件包"
dnf install -y perl-File-MimeInfo-help
CHECK_RESULT $? 0 0 "重新安装 perl-File-MimeInfo-help 软件包失败"
LOG_INFO "环境恢复完成,软件包已重新安装"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,76 +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 : 2025-12-08
# @License : Mulan PSL v2
# @Desc : 测试 identify-cli 命令的文件类型识别功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 identify-cli 命令的文件类型识别功能"
# 检查是否已安装 identify-cli
LOG_INFO "检查是否已安装 identify-cli"
if dnf list installed identify-cli &>/dev/null; then
LOG_INFO "identify-cli 已安装,测试完成后将保持安装状态"
INSTALLED=true
else
LOG_INFO "identify-cli 未安装,将在测试完成后卸载"
INSTALLED=false
fi
# 检查 yum 源中是否有 identify-cli
LOG_INFO "检查 yum 源中是否有 identify-cli"
if ! dnf list available identify-cli &>/dev/null; then
LOG_ERROR "yum 源中未找到 identify-cli退出测试"
exit 255
fi
# 如果未安装,则安装 identify-cli
if [ "$INSTALLED" = false ]; then
LOG_INFO "正在安装 identify-cli"
dnf install -y identify-cli &>/dev/null
CHECK_RESULT $? 0 0 "安装 identify-cli 失败"
fi
# 测试文件类型识别功能
LOG_INFO "测试文件类型识别功能"
# 创建一个临时文件用于测试
TEST_FILE="/tmp/test_file.txt"
echo "This is a test file." > "$TEST_FILE"
# 使用 identify-cli 识别文件类型
LOG_INFO "执行命令identify-cli --file $TEST_FILE"
identify-cli --file "$TEST_FILE"
CHECK_RESULT $? 0 0 "文件类型识别失败"
# 清理临时文件
rm -f "$TEST_FILE"
# 如果测试前未安装,则在测试完成后卸载 identify-cli
if [ "$INSTALLED" = false ]; then
LOG_INFO "正在卸载 identify-cli"
dnf remove -y identify-cli &>/dev/null
CHECK_RESULT $? 0 0 "卸载 identify-cli 失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,75 +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 : 2025-12-08
# @License : Mulan PSL v2
# @Desc : 测试 identify-cli 命令的帮助信息显示功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 identify-cli 命令的帮助信息显示功能"
# 检查是否已安装 python3-identify
if dnf list installed python3-identify &>/dev/null; then
LOG_INFO "python3-identify 已安装,测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "python3-identify 未安装,将在测试结束后卸载"
INSTALLED=false
fi
# 检查 yum 源中是否有 python3-identify 软件包
if ! dnf list available python3-identify &>/dev/null; then
LOG_ERROR "yum 源中未找到 python3-identify 软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "正在安装 python3-identify"
dnf install -y python3-identify
CHECK_RESULT $? 0 0 "安装 python3-identify 失败"
fi
# 测试 identify-cli --help 命令
LOG_INFO "测试 identify-cli --help 命令"
identify-cli --help &>/dev/null
CHECK_RESULT $? 0 0 "identify-cli --help 命令执行失败"
# 测试 identify-cli -h 命令(短参数)
LOG_INFO "测试 identify-cli -h 命令"
identify-cli -h &>/dev/null
CHECK_RESULT $? 0 0 "identify-cli -h 命令执行失败"
# 测试不支持或无效参数的情况(例如 --invalid
LOG_INFO "测试无效参数 --invalid"
identify-cli --invalid &>/dev/null
if [ $? -ne 255 ]; then
LOG_ERROR "无效参数未返回预期退出码"
exit 255
fi
# 清理环境:如果测试前未安装,则卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "正在卸载 python3-identify"
dnf remove -y python3-identify
CHECK_RESULT $? 0 0 "卸载 python3-identify失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,79 +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 : 2025-12-08
# @License : Mulan PSL v2
# @Desc : 测试 identify-cli 命令的版本显示功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装python3-identify-cli包
LOG_INFO "检查是否已安装python3-identify-cli包"
if rpm -q python3-identify-cli &>/dev/null; then
LOG_INFO "python3-identify-cli已安装"
installed=true
else
LOG_INFO "python3-identify-cli未安装"
installed=false
fi
# 检查yum源中是否有python3-identify-cli包
LOG_INFO "检查yum源中是否有python3-identify-cli包"
if ! dnf list available python3-identify-cli &>/dev/null; then
LOG_ERROR "yum源中未找到python3-identify-cli包"
exit 255
fi
# 如果未安装则安装python3-identify-cli包
if [ "$installed" = false ]; then
LOG_INFO "安装python3-identify-cli包"
dnf install -y python3-identify-cli || {
LOG_ERROR "安装python3-identify-cli包失败"
exit 255
}
fi
# 测试identify-cli命令的版本显示功能
LOG_INFO "测试identify-cli命令的版本显示功能"
version_output=$(identify-cli --version 2>&1)
if [ $? -ne 0 ]; then
LOG_ERROR "执行identify-cli --version失败"
if [ "$installed" = false ]; then
LOG_INFO "卸载python3-identify-cli包"
dnf remove -y python3-identify-cli
fi
exit 255
fi
# 检查版本输出是否符合预期
LOG_INFO "检查版本输出是否符合预期"
CHECK_RESULT $? 0 0 "版本输出不符合预期"
# 清理环境
if [ "$installed" = false ]; then
LOG_INFO "卸载python3-identify-cli包"
dnf remove -y python3-identify-cli || {
LOG_ERROR "卸载python3-identify-cli包失败"
exit 1
}
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -1,55 +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 : 2025-12-08
# @License : Mulan PSL v2
# @Desc : 测试 identify-cli 命令的 --filename-only 参数功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 identify-cli 命令的 --filename-only 参数功能"
# 检查是否已安装 identify-cli
if ! dnf list installed identify-cli &>/dev/null; then
LOG_INFO "identify-cli 未安装,开始安装"
if ! dnf list available identify-cli &>/dev/null; then
LOG_ERROR "yum 源中未找到 identify-cli 软件包"
exit 255
fi
dnf install -y identify-cli
CHECK_RESULT $? 0 0 "安装 identify-cli 失败"
INSTALLED=1
else
LOG_INFO "identify-cli 已安装"
INSTALLED=0
fi
# 测试 --filename-only 参数
LOG_INFO "测试 --filename-only 参数功能"
identify-cli --filename-only testfile
CHECK_RESULT $? 0 0 "--filename-only 参数测试失败"
# 清理环境
if [ $INSTALLED -eq 1 ]; then
LOG_INFO "卸载 identify-cli"
dnf remove -y identify-cli
CHECK_RESULT $? 0 0 "卸载 identify-cli 失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,70 +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 : 2025-12-08
# @License : Mulan PSL v2
# @Desc : 测试 identify-cli 命令的基本功能,传入路径参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 identify-cli 命令的基本功能,传入路径参数"
# 检查是否已安装 identify-cli
LOG_INFO "检查是否已安装 identify-cli"
if ! dnf list installed identify-cli &>/dev/null; then
LOG_INFO "identify-cli 未安装,准备安装"
# 检查 yum 源中是否有该软件包
if ! dnf list available identify-cli &>/dev/null; then
LOG_ERROR "yum 源中未找到 identify-cli 软件包"
exit 255
fi
# 安装软件包
dnf install -y identify-cli
CHECK_RESULT $? 0 0 "安装 identify-cli 失败"
# 标记为需要卸载
UNINSTALL_NEEDED=1
else
LOG_INFO "identify-cli 已安装"
fi
# 测试 identify-cli 命令的基本功能
LOG_INFO "测试 identify-cli 命令的基本功能"
if ! identify-cli --help &>/dev/null; then
LOG_ERROR "identify-cli 命令不支持或参数错误"
exit 255
fi
# 测试传入路径参数
LOG_INFO "测试传入路径参数"
TEST_PATH="/tmp/test_path"
mkdir -p $TEST_PATH
identify-cli $TEST_PATH
CHECK_RESULT $? 0 0 "identify-cli 执行失败"
# 清理测试路径
rm -rf $TEST_PATH
# 如果之前未安装,则卸载软件包
if [ "$UNINSTALL_NEEDED" == "1" ]; then
LOG_INFO "卸载 identify-cli"
dnf remove -y identify-cli
CHECK_RESULT $? 0 0 "卸载 identify-cli 失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,90 +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 : 2025-12-02
# @License : Mulan PSL v2
# @Desc : Test opening an image file
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试Test opening an image file"
# 检查是否已安装python3-pillow
LOG_INFO "检查是否已安装python3-pillow"
dnf list installed python3-pillow > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "python3-pillow已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "python3-pillow未安装将在测试结束后卸载"
INSTALLED=false
fi
# 检查yum源中是否有python3-pillow
LOG_INFO "检查yum源中是否有python3-pillow"
dnf list available python3-pillow > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到python3-pillow退出测试"
exit 255
fi
# 如果未安装则安装python3-pillow
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装python3-pillow"
dnf install -y python3-pillow
CHECK_RESULT $? 0 0 "安装python3-pillow失败"
fi
# 测试打开图片文件功能
LOG_INFO "测试打开图片文件功能"
cat <<EOF > test_image_open.py
from PIL import Image
try:
img = Image.open("test_image.png")
print("图片打开成功")
except Exception as e:
print(f"图片打开失败: {e}")
exit(1)
EOF
# 创建测试图片
LOG_INFO "创建测试图片"
echo "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z/C/HgAGgwJ/lKDeQwAAAABJRU5ErkJggg==" | base64 -d > test_image.png
CHECK_RESULT $? 0 0 "创建测试图片失败"
# 执行测试脚本
LOG_INFO "执行测试脚本"
python3 test_image_open.py
CHECK_RESULT $? 0 0 "打开图片文件失败"
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_image.png test_image_open.py
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 如果测试前未安装则卸载python3-pillow
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载python3-pillow"
dnf remove -y python3-pillow
CHECK_RESULT $? 0 0 "卸载python3-pillow失败"
fi
LOG_INFO "测试完成Test opening an image file"
}
main "$@"

View File

@@ -1,68 +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 : 2025-12-10
# @License : Mulan PSL v2
# @Desc : Test debugging with rust-lldb
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试Test debugging with rust-lldb"
# 检查是否已安装rust-lldb
LOG_INFO "检查是否已安装rust-lldb"
if dnf list installed rust-lldb &>/dev/null; then
LOG_INFO "rust-lldb已安装脚本结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "rust-lldb未安装将在测试结束后卸载"
INSTALLED=false
fi
# 检查yum源中是否有rust-lldb软件包
LOG_INFO "检查yum源中是否有rust-lldb软件包"
if ! dnf list available rust-lldb &>/dev/null; then
LOG_ERROR "yum源中未找到rust-lldb软件包"
exit 255
fi
# 如果未安装则安装rust-lldb
if [ "$INSTALLED" = false ]; then
LOG_INFO "正在安装rust-lldb"
dnf install -y rust-lldb
CHECK_RESULT $? 0 0 "安装rust-lldb失败"
fi
# 测试调试功能
LOG_INFO "测试调试功能"
if ! rust-lldb --version &>/dev/null; then
LOG_ERROR "rust-lldb命令不支持或参数错误"
exit 255
fi
CHECK_RESULT $? 0 0 "调试功能测试失败"
# 清理环境如果之前未安装则卸载rust-lldb
if [ "$INSTALLED" = false ]; then
LOG_INFO "正在卸载rust-lldb"
dnf remove -y rust-lldb
CHECK_RESULT $? 0 0 "卸载rust-lldb失败"
fi
LOG_INFO "测试完成Test debugging with rust-lldb"
}
main "$@"

View File

@@ -1,66 +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 : 2025-12-10
# @License : Mulan PSL v2
# @Desc : 测试 rust-lldb 命令的基本功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 rust-lldb 命令的基本功能"
# 检查是否已安装 rust-lldb
if dnf list installed rust-lldb &> /dev/null; then
LOG_INFO "rust-lldb 已安装,测试完成后将保持安装状态"
INSTALLED=true
else
LOG_INFO "rust-lldb 未安装,将在测试完成后卸载"
INSTALLED=false
fi
# 检查 yum 源中是否有 rust-lldb 软件包
if ! dnf list available rust-lldb &> /dev/null; then
LOG_ERROR "yum 源中未找到 rust-lldb 软件包"
exit 255
fi
# 安装 rust-lldb
if [ "$INSTALLED" = false ]; then
LOG_INFO "正在安装 rust-lldb"
dnf install -y rust-lldb
CHECK_RESULT $? 0 0 "安装 rust-lldb 失败"
fi
# 测试 rust-lldb 命令基本功能
LOG_INFO "测试 rust-lldb --version 命令"
rust-lldb --version &> /dev/null
CHECK_RESULT $? 0 0 "rust-lldb --version 命令执行失败"
LOG_INFO "测试 rust-lldb --help 命令"
rust-lldb --help &> /dev/null
CHECK_RESULT $? 0 0 "rust-lldb --help 命令执行失败"
# 清理环境
if [ "$INSTALLED" = false ]; then
LOG_INFO "正在卸载 rust-lldb"
dnf remove -y rust-lldb
CHECK_RESULT $? 0 0 "卸载 rust-lldb 失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,94 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令在调试模式下加载并分析指定的SELinux策略文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色输出可选但通常LOG_INFO/LOG_ERROR会处理
LOG_INFO() {
echo "[INFO] $*"
}
LOG_ERROR() {
echo "[ERROR] $*" >&2
}
# 定义软件包名称和命令
PACKAGE_NAME="setools-gui"
COMMAND="apol"
DEBUG_PARAM="-d"
TEST_POLICY_FILE="/usr/share/selinux/devel/policy.xml" # 示例策略文件路径,可根据实际调整
# 步骤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
# 步骤2: 检查系统是否已安装软件包
LOG_INFO "步骤2: 检查系统是否已安装软件包 $PACKAGE_NAME"
if rpm -q "$PACKAGE_NAME" &>/dev/null; then
LOG_INFO "软件包 $PACKAGE_NAME 已安装,脚本结束后将保持安装状态"
WAS_INSTALLED=true
else
LOG_INFO "软件包 $PACKAGE_NAME 未安装,将在测试中安装"
WAS_INSTALLED=false
fi
# 步骤3: 如果未安装,则安装软件包
if [ "$WAS_INSTALLED" = false ]; then
LOG_INFO "步骤3: 安装软件包 $PACKAGE_NAME"
dnf install -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
fi
# 步骤4: 检查apol命令是否支持调试参数
LOG_INFO "步骤4: 检查apol命令是否支持调试参数 $DEBUG_PARAM"
if ! $COMMAND --help 2>&1 | grep -q -- "$DEBUG_PARAM"; then
LOG_ERROR "apol命令不支持参数 $DEBUG_PARAM"
exit 255
fi
# 步骤5: 检查测试用的SELinux策略文件是否存在
LOG_INFO "步骤5: 检查测试用的SELinux策略文件是否存在"
if [ ! -f "$TEST_POLICY_FILE" ]; then
LOG_ERROR "测试策略文件 $TEST_POLICY_FILE 不存在"
exit 1
fi
# 步骤6: 在调试模式下加载并分析指定的SELinux策略文件
LOG_INFO "步骤6: 在调试模式下加载并分析指定的SELinux策略文件"
$COMMAND $DEBUG_PARAM "$TEST_POLICY_FILE"
CHECK_RESULT $? 0 0 "apol命令在调试模式下分析策略文件失败"
# 步骤7: 环境恢复
LOG_INFO "步骤7: 环境恢复"
if [ "$WAS_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 "$@"

View File

@@ -1,88 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令的帮助功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装setools-gui
LOG_INFO "检查setools-gui是否已安装"
rpm -q setools-gui
if [ $? -eq 0 ]; then
LOG_INFO "setools-gui已安装脚本结束后将保持安装状态"
INSTALLED=1
else
LOG_INFO "setools-gui未安装将在测试过程中安装"
INSTALLED=0
fi
# 检查yum源中是否有setools-gui软件包
LOG_INFO "检查yum源中是否有setools-gui软件包"
dnf list available setools-gui 2>/dev/null | grep -q setools-gui
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中没有setools-gui软件包"
exit 255
fi
# 安装setools-gui如果未安装
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
fi
# 检查apol命令是否存在
LOG_INFO "检查apol命令是否存在"
command -v apol >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "apol命令不存在"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "清理安装的setools-gui软件包"
dnf remove -y setools-gui
fi
exit 255
fi
# 检查apol命令是否支持--help参数
LOG_INFO "检查apol命令是否支持--help参数"
apol --help >/dev/null 2>&1
if [ $? -eq 255 ]; then
LOG_ERROR "apol命令不支持--help参数"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "清理安装的setools-gui软件包"
dnf remove -y setools-gui
fi
exit 255
fi
# 测试apol命令的帮助功能
LOG_INFO "测试apol命令的帮助功能"
apol --help | grep -q "Usage:"
CHECK_RESULT $? 0 0 "apol命令帮助功能测试失败"
# 清理环境如果脚本开始时未安装setools-gui
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "清理安装的setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
fi
LOG_INFO "测试apol命令的帮助功能完成"
}
main "$@"

View File

@@ -1,99 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令加载并分析指定的SELinux策略文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 环境检查判断setools-gui软件包是否已安装
LOG_INFO "检查setools-gui软件包是否已安装"
rpm -q setools-gui
if [ $? -eq 0 ]; then
LOG_INFO "setools-gui已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "setools-gui未安装将在测试过程中安装并在测试结束后卸载"
INSTALLED=false
fi
# 检查yum源中是否存在setools-gui软件包
LOG_INFO "检查yum源中是否存在setools-gui软件包"
dnf list available setools-gui 2>/dev/null | grep -q setools-gui
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
# 如果未安装则安装setools-gui
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui软件包失败"
fi
# 检查apol命令是否存在
LOG_INFO "检查apol命令是否存在"
which apol >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "apol命令不存在"
exit 255
fi
# 检查apol命令是否支持--policy-file参数
LOG_INFO "检查apol命令是否支持--policy-file参数"
apol --help 2>&1 | grep -q -- "--policy-file"
if [ $? -ne 0 ]; then
LOG_ERROR "apol命令不支持--policy-file参数"
exit 255
fi
# 创建测试用的SELinux策略文件
LOG_INFO "创建测试用的SELinux策略文件"
cat > /tmp/test_policy.te << EOF
policy_module(test_policy, 1.0)
type test_type_t;
EOF
checkmodule -M -m -o /tmp/test_policy.mod /tmp/test_policy.te
semodule_package -o /tmp/test_policy.pp -m /tmp/test_policy.mod
CHECK_RESULT $? 0 0 "创建SELinux策略文件失败"
# 使用apol命令加载并分析指定的SELinux策略文件
LOG_INFO "使用apol命令加载并分析指定的SELinux策略文件"
apol --policy-file /tmp/test_policy.pp --info > /tmp/apol_output.txt 2>&1
CHECK_RESULT $? 0 0 "apol命令执行失败"
# 验证apol输出是否包含策略信息
LOG_INFO "验证apol输出是否包含策略信息"
grep -q "Policy Name" /tmp/apol_output.txt
CHECK_RESULT $? 0 0 "apol输出未包含策略信息"
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f /tmp/test_policy.te /tmp/test_policy.mod /tmp/test_policy.pp /tmp/apol_output.txt
# 如果测试前未安装setools-gui则在测试结束后卸载
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,107 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令的版本信息显示功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试apol命令的版本信息显示功能
LOG_INFO "开始测试apol命令的版本信息显示功能"
# 检查软件包是否在yum源中
LOG_INFO "检查setools-gui软件包是否在yum源中"
dnf list available setools-gui 2>/dev/null | grep -q "setools-gui"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
# 检查是否已安装setools-gui
LOG_INFO "检查setools-gui是否已安装"
rpm -q setools-gui > /dev/null 2>&1
INSTALLED=$?
# 如果未安装,则安装软件包
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
else
LOG_INFO "setools-gui已安装跳过安装步骤"
fi
# 检查apol命令是否存在
LOG_INFO "检查apol命令是否存在"
command -v apol > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "apol命令不存在"
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
fi
exit 255
fi
# 测试apol命令的版本参数
LOG_INFO "测试apol命令的版本参数"
apol --version > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "apol支持--version参数"
apol --version 2>&1 | grep -q "apol"
CHECK_RESULT $? 0 0 "apol --version输出不符合预期"
else
LOG_INFO "尝试使用-V参数"
apol -V > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "apol支持-V参数"
apol -V 2>&1 | grep -q "apol"
CHECK_RESULT $? 0 0 "apol -V输出不符合预期"
else
LOG_ERROR "apol命令不支持版本参数"
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
fi
exit 255
fi
fi
# 测试无效参数
LOG_INFO "测试apol命令无效参数"
apol --invalid-param > /dev/null 2>&1
if [ $? -eq 255 ]; then
LOG_INFO "apol正确处理了无效参数"
else
LOG_INFO "apol对无效参数返回了非255退出码"
# 继续执行,不退出
fi
# 清理环境
LOG_INFO "清理测试环境"
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
else
LOG_INFO "保持setools-gui安装状态"
fi
LOG_INFO "测试apol命令版本信息显示功能完成"
}
main "$@"

View File

@@ -1,76 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令的详细输出模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试apol命令的详细输出模式"
# 定义软件包名称
PACKAGE_NAME="setools-gui"
LOG_INFO "步骤1检查系统中是否已安装${PACKAGE_NAME}"
if rpm -q ${PACKAGE_NAME} &> /dev/null; then
LOG_INFO "检测到${PACKAGE_NAME}已安装,测试结束后将保持安装状态"
INSTALLED_BEFORE="yes"
else
LOG_INFO "检测到${PACKAGE_NAME}未安装,将在测试步骤中安装,测试结束后卸载"
INSTALLED_BEFORE="no"
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}" = "no" ]; then
LOG_INFO "步骤3安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}软件包失败"
fi
LOG_INFO "步骤4检查apol命令是否存在"
if ! command -v apol &> /dev/null; then
LOG_ERROR "apol命令未找到可能安装失败"
exit 1
fi
LOG_INFO "步骤5测试apol命令的详细输出模式-v参数"
if ! apol --help | grep -q "\-v"; then
LOG_ERROR "apol命令不支持-v参数"
exit 255
fi
LOG_INFO "步骤6执行apol -v命令"
apol -v
CHECK_RESULT $? 0 0 "执行apol -v命令失败"
LOG_INFO "步骤7清理测试环境"
if [ "${INSTALLED_BEFORE}" = "no" ]; then
LOG_INFO "卸载${PACKAGE_NAME}软件包"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}软件包失败"
else
LOG_INFO "测试前已安装${PACKAGE_NAME},保持安装状态"
fi
LOG_INFO "apol命令详细输出模式测试完成"
}
main "$@"

View File

@@ -1,63 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令同时启用详细输出和调试模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试apol命令同时启用详细输出和调试模式"
LOG_INFO "检查系统中是否已安装setools-gui软件包"
if rpm -q setools-gui &>/dev/null; then
LOG_INFO "setools-gui软件包已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "setools-gui软件包未安装将在测试过程中安装并在结束后卸载"
INSTALLED=false
fi
LOG_INFO "检查yum源中是否存在setools-gui软件包"
if ! dnf list available setools-gui &>/dev/null; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui软件包失败"
fi
LOG_INFO "检查apol命令是否支持-v和-d参数"
apol -h 2>&1 | grep -qE "\-v.*\-d|\-d.*\-v"
CHECK_RESULT $? 0 0 "apol命令不支持同时启用-v和-d参数"
LOG_INFO "执行apol命令同时启用详细输出和调试模式"
apol -v -d
CHECK_RESULT $? 0 0 "apol命令执行失败"
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui软件包失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,79 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令同时启用详细输出、调试模式并加载指定的SELinux策略文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试apol命令同时启用详细输出、调试模式并加载指定的SELinux策略文件"
LOG_INFO "步骤1: 检查setools-gui软件包是否在yum源中可用"
dnf list available setools-gui 2>/dev/null | grep -q setools-gui
if [ $? -ne 0 ]; then
LOG_ERROR "setools-gui软件包在yum源中不可用"
exit 255
fi
LOG_INFO "步骤2: 检查apol命令是否已安装"
if command -v apol &> /dev/null; then
LOG_INFO "apol命令已安装标记为已安装状态"
INSTALLED=true
else
LOG_INFO "apol命令未安装标记为未安装状态"
INSTALLED=false
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3: 安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
fi
LOG_INFO "步骤4: 检查apol命令是否支持-v和-d参数"
apol --help | grep -q -- "-v"
CHECK_RESULT $? 0 0 "apol命令不支持-v参数"
apol --help | grep -q -- "-d"
CHECK_RESULT $? 0 0 "apol命令不支持-d参数"
LOG_INFO "步骤5: 检查是否存在有效的SELinux策略文件"
POLICY_FILE="/etc/selinux/targeted/policy/policy.32"
if [ ! -f "$POLICY_FILE" ]; then
LOG_ERROR "未找到有效的SELinux策略文件: $POLICY_FILE"
exit 255
fi
LOG_INFO "步骤6: 执行apol命令同时启用详细输出、调试模式并加载指定的SELinux策略文件"
apol -v -d "$POLICY_FILE" 2>&1 | tee /tmp/apol_output.log
CHECK_RESULT $? 0 0 "apol命令执行失败"
LOG_INFO "步骤7: 验证apol命令输出包含调试信息"
grep -q "debug" /tmp/apol_output.log
CHECK_RESULT $? 0 0 "apol命令输出未包含预期的调试信息"
LOG_INFO "步骤8: 清理临时文件"
rm -f /tmp/apol_output.log
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤9: 卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,97 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令在详细输出模式下加载并分析指定的SELinux策略文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义软件包名称和命令
PACKAGE_NAME="setools-gui"
COMMAND="apol"
POLICY_FILE="/etc/selinux/targeted/policy/policy.32" # 示例策略文件路径,实际可能需要调整
# 步骤1检查yum源中是否存在setools-gui软件包
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检查当前环境是否已安装setools-gui
LOG_INFO "步骤2检查当前环境是否已安装${PACKAGE_NAME}"
rpm -q ${PACKAGE_NAME} &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "${PACKAGE_NAME}已安装,标记为已安装状态"
INSTALLED="true"
else
LOG_INFO "${PACKAGE_NAME}未安装,标记为未安装状态"
INSTALLED="false"
fi
# 步骤3如果未安装则安装setools-gui
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "步骤3安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
fi
# 步骤4检查apol命令是否支持-v参数
LOG_INFO "步骤4检查${COMMAND}命令是否支持-v参数"
${COMMAND} --help 2>&1 | grep -q "\-v"
if [ $? -ne 0 ]; then
LOG_ERROR "${COMMAND}命令不支持-v参数"
# 清理环境:如果之前未安装,则卸载
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "清理环境:卸载${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME}
fi
exit 255
fi
# 步骤5检查指定的SELinux策略文件是否存在
LOG_INFO "步骤5检查指定的SELinux策略文件是否存在"
if [ ! -f "${POLICY_FILE}" ]; then
LOG_ERROR "策略文件${POLICY_FILE}不存在"
# 清理环境:如果之前未安装,则卸载
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "清理环境:卸载${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME}
fi
exit 1
fi
# 步骤6执行apol命令在详细输出模式下加载并分析指定的SELinux策略文件
LOG_INFO "步骤6执行${COMMAND}命令在详细输出模式下加载并分析指定的SELinux策略文件"
${COMMAND} -v -p "${POLICY_FILE}" &>/dev/null
CHECK_RESULT $? 0 0 "apol命令执行失败"
# 步骤7清理环境
LOG_INFO "步骤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 "$@"

View File

@@ -1,66 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试使用apol分析SELinux策略
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试使用apol分析SELinux策略"
LOG_INFO "步骤1: 检查环境是否已安装setools-gui软件包"
if dnf list installed setools-gui &>/dev/null; then
LOG_INFO "setools-gui已安装测试结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "setools-gui未安装将在测试过程中安装并在结束后卸载"
INSTALLED=false
fi
LOG_INFO "步骤2: 检查yum源中是否有setools-gui软件包"
if ! dnf list available setools-gui &>/dev/null; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3: 安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
fi
LOG_INFO "步骤4: 检查apol命令是否支持analyze参数"
apol --help | grep -q "\-\-analyze"
CHECK_RESULT $? 0 255 "apol命令不支持analyze参数"
LOG_INFO "步骤5: 执行apol --analyze测试"
apol --analyze
CHECK_RESULT $? 0 0 "apol --analyze执行失败"
LOG_INFO "步骤6: 清理环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
else
LOG_INFO "保持setools-gui安装状态"
fi
LOG_INFO "测试完成使用apol分析SELinux策略测试通过"
}
main "$@"

View File

@@ -1,68 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试apol命令行工具帮助功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
PACKAGE_NAME="setools-gui"
LOG_INFO "开始测试apol命令行工具帮助功能"
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
INSTALLED="yes"
LOG_INFO "${PACKAGE_NAME}已安装,测试结束后将保持安装状态"
else
INSTALLED="no"
LOG_INFO "${PACKAGE_NAME}未安装,将作为测试步骤进行安装"
fi
if [ "${INSTALLED}" = "no" ]; then
LOG_INFO "步骤3安装${PACKAGE_NAME}"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
fi
LOG_INFO "步骤4检查apol命令是否存在"
which apol > /dev/null 2>&1
CHECK_RESULT $? 0 0 "apol命令不存在"
LOG_INFO "步骤5检查apol命令是否支持--help参数"
apol --help > /dev/null 2>&1
if [ $? -eq 255 ]; then
LOG_ERROR "apol命令不支持--help参数"
exit 255
fi
LOG_INFO "步骤6执行apol --help命令"
apol --help
CHECK_RESULT $? 0 0 "执行apol --help命令失败"
LOG_INFO "步骤7清理测试环境"
if [ "${INSTALLED}" = "no" ]; then
LOG_INFO "卸载${PACKAGE_NAME}软件包"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}失败"
else
LOG_INFO "测试开始时${PACKAGE_NAME}已安装,保持安装状态"
fi
LOG_INFO "测试apol命令行工具帮助功能完成"
}
main "$@"

View File

@@ -1,106 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试检查setools-gui软件包是否已安装
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试检查setools-gui软件包是否已安装
LOG_INFO "开始测试检查setools-gui软件包是否已安装"
# 检查yum源中是否存在setools-gui软件包
LOG_INFO "检查yum源中是否存在setools-gui软件包"
dnf list available setools-gui 2>/dev/null | grep -q setools-gui
CHECK_RESULT $? 0 0 "yum源中不存在setools-gui软件包退出测试"
# 检查当前是否已安装setools-gui
LOG_INFO "检查当前是否已安装setools-gui"
if rpm -q setools-gui >/dev/null 2>&1; then
LOG_INFO "setools-gui已安装将保持安装状态"
already_installed=true
else
LOG_INFO "setools-gui未安装将进行安装测试"
already_installed=false
fi
# 如果未安装,则安装软件包
if [ "$already_installed" = "false" ]; then
LOG_INFO "安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
# 验证安装是否成功
LOG_INFO "验证setools-gui是否安装成功"
rpm -q setools-gui
CHECK_RESULT $? 0 0 "setools-gui安装后验证失败"
LOG_INFO "setools-gui安装成功"
fi
# 检查setools-gui相关命令
LOG_INFO "检查setools-gui相关命令是否可用"
# 检查apol命令是否存在
LOG_INFO "检查apol命令是否存在"
which apol >/dev/null 2>&1
CHECK_RESULT $? 0 0 "apol命令不存在"
# 检查apol命令的基本参数
LOG_INFO "检查apol命令的基本参数"
apol --help >/dev/null 2>&1
CHECK_RESULT $? 0 0 "apol命令参数检查失败"
# 检查seaudit命令是否存在
LOG_INFO "检查seaudit命令是否存在"
which seaudit >/dev/null 2>&1
CHECK_RESULT $? 0 0 "seaudit命令不存在"
# 检查seaudit命令的基本参数
LOG_INFO "检查seaudit命令的基本参数"
seaudit --help >/dev/null 2>&1
CHECK_RESULT $? 0 0 "seaudit命令参数检查失败"
LOG_INFO "setools-gui功能检查完成"
# 环境清理
LOG_INFO "开始环境清理"
if [ "$already_installed" = "false" ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
# 验证卸载是否成功
LOG_INFO "验证setools-gui是否已卸载"
rpm -q setools-gui >/dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_ERROR "setools-gui卸载失败"
exit 1
else
LOG_INFO "setools-gui卸载成功"
fi
else
LOG_INFO "保持setools-gui安装状态无需卸载"
fi
LOG_INFO "环境清理完成"
LOG_INFO "测试结束setools-gui软件包检查测试通过"
}
main "$@"

View File

@@ -1,73 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试启动setools-gui图形界面主程序
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "测试启动setools-gui图形界面主程序"
LOG_INFO "步骤1检查setools-gui软件包是否在yum源中"
dnf list available setools-gui &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
LOG_INFO "步骤2检查系统是否已安装setools-gui"
rpm -q setools-gui &>/dev/null
INSTALLED=$?
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "步骤3安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
NEED_UNINSTALL=1
else
LOG_INFO "setools-gui已安装无需再次安装"
NEED_UNINSTALL=0
fi
LOG_INFO "步骤4检查setools-gui主程序命令是否存在"
which setools-gui &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "setools-gui命令不存在"
if [ $NEED_UNINSTALL -eq 1 ]; then
LOG_INFO "步骤5清理环境卸载安装的setools-gui"
dnf remove -y setools-gui
fi
exit 255
fi
LOG_INFO "步骤5测试启动setools-gui图形界面主程序"
LOG_INFO "注意图形界面测试通常需要DISPLAY环境变量和X server。此脚本仅测试命令是否存在和基本启动尝试不保证图形窗口能正常显示。"
setools-gui --help &>/dev/null
CHECK_RESULT $? 0 0 "setools-gui命令启动或参数检查失败"
LOG_INFO "步骤6清理环境"
if [ $NEED_UNINSTALL -eq 1 ]; then
LOG_INFO "卸载测试安装的setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
else
LOG_INFO "测试前已安装setools-gui保持安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,71 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试setools-gui软件包安装功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 判断是否已安装setools-gui软件包
LOG_INFO "检查是否已安装setools-gui软件包"
rpm -q setools-gui > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "setools-gui软件包已安装脚本结束时将保持安装状态"
INSTALLED="true"
else
LOG_INFO "setools-gui软件包未安装"
INSTALLED="false"
fi
# 检查yum源中是否有setools-gui软件包
LOG_INFO "检查yum源中是否有setools-gui软件包"
dnf list available setools-gui > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
# 如果未安装,则进行安装
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "开始安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui软件包失败"
LOG_INFO "setools-gui软件包安装成功"
fi
# 验证setools-gui命令是否可用
LOG_INFO "验证setools-gui命令是否可用"
which apol > /dev/null 2>&1
CHECK_RESULT $? 0 0 "apol命令不存在"
# 测试setools-gui的基本功能
LOG_INFO "测试setools-gui基本功能"
apol --version > /dev/null 2>&1
CHECK_RESULT $? 0 0 "apol命令执行失败"
# 如果脚本开始前未安装,则在测试完成后卸载
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui软件包失败"
LOG_INFO "setools-gui软件包卸载成功环境已恢复"
fi
LOG_INFO "setools-gui软件包安装功能测试完成"
}
main "$@"

View File

@@ -1,109 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试使用sediffx比较两个策略
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试sediffx比较两个策略功能"
LOG_INFO "步骤1检查yum源中是否存在setools-gui软件包"
dnf list available setools-gui 2>/dev/null | grep -q "setools-gui"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
LOG_INFO "步骤2检查系统是否已安装setools-gui"
rpm -q setools-gui >/dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "setools-gui已安装标记为已存在"
INSTALLED_FLAG=1
else
LOG_INFO "setools-gui未安装标记为未安装"
INSTALLED_FLAG=0
fi
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "步骤3安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
fi
LOG_INFO "步骤4检查sediffx命令是否可用"
which sediffx >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "sediffx命令不存在"
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "清理卸载setools-gui"
dnf remove -y setools-gui
fi
exit 255
fi
LOG_INFO "步骤5检查sediffx是否支持compare参数"
sediffx --help 2>&1 | grep -q "\-\-compare"
if [ $? -ne 0 ]; then
LOG_ERROR "sediffx不支持--compare参数"
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "清理卸载setools-gui"
dnf remove -y setools-gui
fi
exit 255
fi
LOG_INFO "步骤6创建测试用的两个策略文件"
cat > /tmp/policy1.te <<EOF
policy_module(policy1, 1.0)
type test_type1;
EOF
cat > /tmp/policy2.te <<EOF
policy_module(policy2, 1.0)
type test_type2;
EOF
LOG_INFO "步骤7使用sediffx比较两个策略文件"
sediffx --compare /tmp/policy1.te /tmp/policy2.te > /tmp/sediffx_result.txt 2>&1
CHECK_RESULT $? 0 0 "sediffx比较策略失败"
LOG_INFO "步骤8检查比较结果文件是否存在"
[ -f /tmp/sediffx_result.txt ]
CHECK_RESULT $? 0 0 "比较结果文件未生成"
LOG_INFO "步骤9验证比较结果内容"
grep -q "test_type1" /tmp/sediffx_result.txt
CHECK_RESULT $? 0 0 "结果中未找到policy1的类型"
grep -q "test_type2" /tmp/sediffx_result.txt
CHECK_RESULT $? 0 0 "结果中未找到policy2的类型"
LOG_INFO "步骤10清理临时文件"
rm -f /tmp/policy1.te /tmp/policy2.te /tmp/sediffx_result.txt
CHECK_RESULT $? 0 0 "清理临时文件失败"
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "步骤11卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
else
LOG_INFO "步骤11保持setools-gui安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,82 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试启动sediffx策略比较图形工具
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试启动sediffx策略比较图形工具"
LOG_INFO "1. 检查环境是否已安装setools-gui软件包"
if rpm -q setools-gui &> /dev/null; then
LOG_INFO "setools-gui已安装标记为已存在安装"
INSTALLED="yes"
else
LOG_INFO "setools-gui未安装标记为需要安装"
INSTALLED="no"
fi
LOG_INFO "2. 检查yum源中是否有setools-gui软件包"
if ! dnf list available setools-gui &> /dev/null; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
if [ "$INSTALLED" = "no" ]; then
LOG_INFO "3. 安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
fi
LOG_INFO "4. 检查sediffx命令是否存在"
if ! command -v sediffx &> /dev/null; then
LOG_ERROR "sediffx命令不存在"
if [ "$INSTALLED" = "no" ]; then
LOG_INFO "清理环境卸载setools-gui"
dnf remove -y setools-gui
fi
exit 255
fi
LOG_INFO "5. 检查sediffx是否支持--help参数"
if ! sediffx --help &> /dev/null; then
LOG_ERROR "sediffx不支持--help参数"
if [ "$INSTALLED" = "no" ]; then
LOG_INFO "清理环境卸载setools-gui"
dnf remove -y setools-gui
fi
exit 255
fi
LOG_INFO "6. 尝试启动sediffx策略比较图形工具"
sediffx --help
CHECK_RESULT $? 0 0 "启动sediffx失败"
LOG_INFO "7. 环境清理"
if [ "$INSTALLED" = "no" ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
else
LOG_INFO "保持setools-gui安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,63 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试sepolicy命令行工具帮助功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试sepolicy命令行工具帮助功能"
LOG_INFO "步骤1检查sepolicy命令是否存在"
if command -v sepolicy &> /dev/null; then
LOG_INFO "sepolicy命令已存在无需安装"
INSTALLED=0
else
LOG_INFO "sepolicy命令不存在需要安装"
INSTALLED=1
LOG_INFO "步骤2检查yum源中是否有setools-gui软件包"
if ! dnf list available setools-gui &> /dev/null; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
LOG_INFO "步骤3安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
fi
LOG_INFO "步骤4检查sepolicy命令的帮助参数"
if sepolicy --help &> /dev/null; then
LOG_INFO "sepolicy命令支持--help参数"
else
LOG_ERROR "sepolicy命令不支持--help参数"
exit 255
fi
LOG_INFO "步骤5执行sepolicy --help命令"
sepolicy --help
CHECK_RESULT $? 0 0 "执行sepolicy --help失败"
LOG_INFO "步骤6清理环境"
if [ $INSTALLED -eq 1 ]; then
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,78 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试使用sepolicy查询策略信息
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试sepolicy查询策略信息功能"
LOG_INFO "步骤1: 检查setools-gui软件包是否在yum源中可用"
dnf list available setools-gui 2>/dev/null | grep -q "setools-gui"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到setools-gui软件包"
exit 255
fi
LOG_INFO "步骤2: 检查系统是否已安装setools-gui"
rpm -q setools-gui >/dev/null 2>&1
INSTALLED=$?
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "步骤3: 安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui失败"
fi
LOG_INFO "步骤4: 验证sepolicy命令是否存在"
which sepolicy >/dev/null 2>&1
CHECK_RESULT $? 0 0 "sepolicy命令不存在"
LOG_INFO "步骤5: 检查sepolicy query子命令是否支持"
sepolicy query --help 2>&1 | grep -q "query"
CHECK_RESULT $? 0 255 "sepolicy query子命令不支持"
LOG_INFO "步骤6: 测试sepolicy query基本查询功能"
sepolicy query -a -u unconfined_u
CHECK_RESULT $? 0 0 "sepolicy query查询失败"
LOG_INFO "步骤7: 测试sepolicy query用户查询"
sepolicy query -u unconfined_u
CHECK_RESULT $? 0 0 "查询用户策略信息失败"
LOG_INFO "步骤8: 测试sepolicy query角色查询"
sepolicy query -r unconfined_r
CHECK_RESULT $? 0 0 "查询角色策略信息失败"
LOG_INFO "步骤9: 测试sepolicy query类型查询"
sepolicy query -t unconfined_t
CHECK_RESULT $? 0 0 "查询类型策略信息失败"
LOG_INFO "步骤10: 清理测试环境"
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "卸载测试安装的setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui失败"
else
LOG_INFO "保持原有的setools-gui安装状态"
fi
LOG_INFO "测试sepolicy查询策略信息功能完成"
}
main "$@"

View File

@@ -1,79 +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-03-01
# @License : Mulan PSL v2
# @Desc : 测试setools-gui软件包卸载功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试setools-gui软件包卸载功能"
LOG_INFO "检查当前环境是否已安装setools-gui软件包"
rpm -q setools-gui > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "检测到setools-gui已安装记录当前安装状态"
INSTALLED_BEFORE="yes"
else
LOG_INFO "检测到setools-gui未安装"
INSTALLED_BEFORE="no"
fi
LOG_INFO "检查yum源中是否存在setools-gui软件包"
dnf list available setools-gui > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中未找到setools-gui软件包退出测试"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在setools-gui软件包无法进行测试"
exit 255
fi
if [ "$INSTALLED_BEFORE" == "no" ]; then
LOG_INFO "开始安装setools-gui软件包"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "安装setools-gui软件包失败"
fi
LOG_INFO "验证setools-gui软件包安装成功"
rpm -q setools-gui > /dev/null 2>&1
CHECK_RESULT $? 0 0 "验证setools-gui安装状态失败"
LOG_INFO "执行setools-gui软件包卸载测试"
LOG_INFO "卸载setools-gui软件包"
dnf remove -y setools-gui
CHECK_RESULT $? 0 0 "卸载setools-gui软件包失败"
LOG_INFO "验证setools-gui软件包已卸载"
rpm -q setools-gui > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_ERROR "卸载后验证失败setools-gui软件包仍存在"
CHECK_RESULT 1 0 0 "卸载后验证失败"
else
LOG_INFO "验证通过setools-gui软件包已成功卸载"
CHECK_RESULT 0 0 0 "卸载验证失败"
fi
if [ "$INSTALLED_BEFORE" == "no" ]; then
LOG_INFO "测试前环境未安装setools-gui测试完成无需恢复环境"
else
LOG_INFO "测试前环境已安装setools-gui重新安装以恢复环境"
dnf install -y setools-gui
CHECK_RESULT $? 0 0 "恢复setools-gui安装状态失败"
LOG_INFO "环境已恢复到测试前的安装状态"
fi
LOG_INFO "setools-gui软件包卸载功能测试完成"
}
main "$@"

View File

@@ -1,71 +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 : 2025-11-26
# @License : Mulan PSL v2
# @Desc : Verify package installation
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:验证软件包安装功能"
# 检查是否已安装texlive-chickenize-doc
LOG_INFO "步骤1检查texlive-chickenize-doc是否已安装"
if dnf list installed texlive-chickenize-doc &>/dev/null; then
LOG_INFO "texlive-chickenize-doc已安装跳过安装步骤"
INSTALLED=true
else
LOG_INFO "texlive-chickenize-doc未安装准备安装"
INSTALLED=false
fi
# 检查yum源中是否有texlive-chickenize-doc
LOG_INFO "步骤2检查yum源中是否有texlive-chickenize-doc"
if ! dnf list available texlive-chickenize-doc &>/dev/null; then
LOG_ERROR "yum源中未找到texlive-chickenize-doc退出测试"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3安装texlive-chickenize-doc"
dnf install -y texlive-chickenize-doc
CHECK_RESULT $? 0 0 "安装texlive-chickenize-doc失败"
fi
# 验证软件包功能
LOG_INFO "步骤4验证texlive-chickenize-doc功能"
if ! command -v chickenize &>/dev/null; then
LOG_ERROR "chickenize命令不存在或不支持退出测试"
exit 255
fi
# 执行测试命令
LOG_INFO "步骤5执行测试命令"
chickenize --version
CHECK_RESULT $? 0 0 "执行chickenize命令失败"
# 环境恢复:如果脚本安装了软件包,则卸载
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤6卸载texlive-chickenize-doc"
dnf remove -y texlive-chickenize-doc
CHECK_RESULT $? 0 0 "卸载texlive-chickenize-doc失败"
fi
LOG_INFO "测试完成:验证软件包安装功能"
}
main "$@"

View File

@@ -1,61 +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 : 2025-09-25
# @License : Mulan PSL v2
# @Desc : Test documentation generation
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装texlive-ebsthesis-doc
LOG_INFO "检查是否已安装texlive-ebsthesis-doc"
rpm -q texlive-ebsthesis-doc > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "texlive-ebsthesis-doc已安装脚本结束时保持安装状态"
installed=true
else
installed=false
fi
# 检查yum源中是否有texlive-ebsthesis-doc
LOG_INFO "检查yum源中是否有texlive-ebsthesis-doc"
dnf list available texlive-ebsthesis-doc > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中未找到texlive-ebsthesis-doc"
# 安装texlive-ebsthesis-doc
if [ "$installed" = false ]; then
LOG_INFO "安装texlive-ebsthesis-doc"
dnf install -y texlive-ebsthesis-doc
CHECK_RESULT $? 0 0 "安装texlive-ebsthesis-doc失败"
fi
# 测试文档生成功能
LOG_INFO "测试文档生成功能"
docgen_command="texdoc ebsthesis"
$docgen_command > /dev/null 2>&1
CHECK_RESULT $? 0 255 "文档生成命令执行失败或参数不支持"
# 清理环境
if [ "$installed" = false ]; then
LOG_INFO "卸载texlive-ebsthesis-doc"
dnf remove -y texlive-ebsthesis-doc
CHECK_RESULT $? 0 0 "卸载texlive-ebsthesis-doc失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,66 +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 : 2025-06-17
# @License : Mulan PSL v2
# @Desc : 测试 texlive-etaremune-doc 包的卸载功能,验证是否能够成功卸载。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已经安装了texlive-etaremune-doc
LOG_INFO "检查是否已经安装了texlive-etaremune-doc"
rpm -q texlive-etaremune-doc
if [ $? -eq 0 ]; then
LOG_INFO "texlive-etaremune-doc已经安装脚本结束时将保持安装状态"
installed=true
else
LOG_INFO "texlive-etaremune-doc未安装将在测试完成后卸载"
installed=false
fi
# 检查yum源中是否有texlive-etaremune-doc包
LOG_INFO "检查yum源中是否有texlive-etaremune-doc包"
dnf list available texlive-etaremune-doc > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中没有texlive-etaremune-doc包"
# 安装texlive-etaremune-doc包
if [ "$installed" = false ]; then
LOG_INFO "安装texlive-etaremune-doc包"
dnf install -y texlive-etaremune-doc
CHECK_RESULT $? 0 0 "安装texlive-etaremune-doc包失败"
fi
# 验证卸载功能
LOG_INFO "验证卸载功能"
dnf remove -y texlive-etaremune-doc
CHECK_RESULT $? 0 0 "卸载texlive-etaremune-doc包失败"
# 恢复环境:如果最初未安装,则重新安装;否则保持原状
if [ "$installed" = false ]; then
LOG_INFO "恢复环境重新安装texlive-etaremune-doc包"
dnf install -y texlive-etaremune-doc > /dev/null 2>&1
CHECK_RESULT $? 0 0 "恢复环境失败无法重新安装texlive-etaremune-doc包"
else
LOG_INFO "恢复环境:保持原状(已安装状态)"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,63 +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 : 2025-09-30
# @License : Mulan PSL v2
# @Desc : Test basic commands
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装texlive-exercisebank软件包
LOG_INFO "检查texlive-exercisebank是否已安装"
rpm -q texlive-exercisebank > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "texlive-exercisebank已安装测试结束后保持安装状态"
INSTALLED=1
else
LOG_INFO "texlive-exercisebank未安装测试结束后将卸载"
INSTALLED=0
fi
# 检查yum源中是否有texlive-exercisebank软件包
LOG_INFO "检查yum源中是否存在texlive-exercisebank"
dnf list available texlive-exercisebank > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中不存在texlive-exercisebank软件包"
# 安装texlive-exercisebank软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "开始安装texlive-exercisebank"
dnf install -y texlive-exercisebank > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装texlive-exercisebank失败"
fi
# 测试基本命令
LOG_INFO "测试基本命令功能"
texlive-exercisebank --version > /dev/null 2>&1
CHECK_RESULT $? 0 255 "不支持--version参数或命令执行失败"
# 清理环境:如果之前未安装,则卸载软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载texlive-exercisebank"
dnf remove -y texlive-exercisebank > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载texlive-exercisebank失败"
fi
LOG_INFO "测试脚本执行完毕,环境已恢复"
}
main "$@"

View File

@@ -1,63 +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 : 2025-09-30
# @License : Mulan PSL v2
# @Desc : Test package installation
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已经安装texlive-exercisebank软件包
LOG_INFO "检查是否已经安装texlive-exercisebank软件包"
rpm -q texlive-exercisebank > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "texlive-exercisebank已安装脚本结束时保持安装状态"
installed=true
else
installed=false
fi
# 检查yum源中是否有texlive-exercisebank软件包
LOG_INFO "检查yum源中是否有texlive-exercisebank软件包"
dnf list available texlive-exercisebank > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中不存在texlive-exercisebank软件包"
# 安装texlive-exercisebank软件包
LOG_INFO "安装texlive-exercisebank软件包"
dnf install -y texlive-exercisebank
CHECK_RESULT $? 0 0 "安装texlive-exercisebank软件包失败"
# 验证安装是否成功
LOG_INFO "验证texlive-exercisebank软件包是否安装成功"
rpm -q texlive-exercisebank > /dev/null 2>&1
CHECK_RESULT $? 0 0 "texlive-exercisebank软件包未成功安装"
# 执行texlive-exercisebank命令测试
LOG_INFO "执行texlive-exercisebank命令测试"
texlive-exercisebank --help > /dev/null 2>&1
CHECK_RESULT $? 0 255 "texlive-exercisebank命令参数不支持或不存在"
# 如果脚本开始时未安装则卸载texlive-exercisebank软件包
if [ "$installed" = false ]; then
LOG_INFO "卸载texlive-exercisebank软件包"
dnf remove -y texlive-exercisebank
CHECK_RESULT $? 0 0 "卸载texlive-exercisebank软件包失败"
fi
LOG_INFO "测试脚本执行完成,环境已恢复"
}
main "$@"

View File

@@ -1,81 +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-03-03
# @License : Mulan PSL v2
# @Desc : List package files
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试List package files"
# 检查yum源中是否存在指定软件包
LOG_INFO "检查软件包texlive-exp-testopt-doc是否在yum源中"
dnf list available texlive-exp-testopt-doc > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "软件包texlive-exp-testopt-doc不在yum源中"
exit 255
fi
# 判断环境是否已安装该软件包
LOG_INFO "检查环境是否已安装texlive-exp-testopt-doc"
rpm -q texlive-exp-testopt-doc > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "环境已安装texlive-exp-testopt-doc测试结束后将保持安装状态"
already_installed=true
else
LOG_INFO "环境未安装texlive-exp-testopt-doc将进行安装"
already_installed=false
fi
# 如果未安装,则安装软件包
if [ "$already_installed" = false ]; then
LOG_INFO "安装软件包texlive-exp-testopt-doc"
dnf install -y texlive-exp-testopt-doc
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
# 检查rpm命令是否支持--listfiles参数
LOG_INFO "检查rpm命令是否支持--listfiles参数"
rpm --help | grep -q -- --listfiles
if [ $? -ne 0 ]; then
LOG_ERROR "rpm命令不支持--listfiles参数"
# 如果之前未安装,需要卸载软件包
if [ "$already_installed" = false ]; then
LOG_INFO "卸载软件包texlive-exp-testopt-doc"
dnf remove -y texlive-exp-testopt-doc
fi
exit 255
fi
# 列出软件包的文件
LOG_INFO "列出软件包texlive-exp-testopt-doc的文件"
rpm -ql texlive-exp-testopt-doc > /dev/null
CHECK_RESULT $? 0 0 "列出软件包文件失败"
# 清理环境:如果之前未安装,则卸载软件包
if [ "$already_installed" = false ]; then
LOG_INFO "卸载软件包texlive-exp-testopt-doc"
dnf remove -y texlive-exp-testopt-doc
CHECK_RESULT $? 0 0 "卸载软件包失败"
else
LOG_INFO "环境已安装texlive-exp-testopt-doc保持安装状态"
fi
LOG_INFO "测试完成List package files"
}
main "$@"

View File

@@ -1,78 +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-03-03
# @License : Mulan PSL v2
# @Desc : Check basic usage example
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "检查测试环境是否已安装texlive-exp-testopt-doc软件包"
if dnf list installed texlive-exp-testopt-doc &>/dev/null; then
LOG_INFO "环境已安装texlive-exp-testopt-doc测试后将保持安装状态"
INSTALLED=true
else
LOG_INFO "环境未安装texlive-exp-testopt-doc将在测试中安装并在结束后卸载"
INSTALLED=false
fi
LOG_INFO "检查yum源中是否存在texlive-exp-testopt-doc软件包"
if ! dnf list available texlive-exp-testopt-doc &>/dev/null; then
LOG_ERROR "yum源中未找到texlive-exp-testopt-doc软件包"
exit 255
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装texlive-exp-testopt-doc软件包"
dnf install -y texlive-exp-testopt-doc
CHECK_RESULT $? 0 0 "安装texlive-exp-testopt-doc软件包失败"
fi
LOG_INFO "检查指定命令的参数是否存在"
COMMAND="texlive-exp-testopt-doc --help"
if ! $COMMAND &>/dev/null; then
LOG_ERROR "命令参数不存在或不支持"
if [ "$INSTALLED" = false ]; then
dnf remove -y texlive-exp-testopt-doc
fi
exit 255
fi
LOG_INFO "执行命令:$COMMAND"
$COMMAND
CHECK_RESULT $? 0 0 "执行命令失败"
LOG_INFO "检查基本使用示例"
EXAMPLE_OUTPUT=$(texlive-exp-testopt-doc --help 2>&1 | head -5)
if [ -z "$EXAMPLE_OUTPUT" ]; then
LOG_ERROR "未获取到基本使用示例输出"
if [ "$INSTALLED" = false ]; then
dnf remove -y texlive-exp-testopt-doc
fi
exit 1
fi
LOG_INFO "基本使用示例检查成功"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载texlive-exp-testopt-doc软件包"
dnf remove -y texlive-exp-testopt-doc
CHECK_RESULT $? 0 0 "卸载texlive-exp-testopt-doc软件包失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,78 +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-03-06
# @License : Mulan PSL v2
# @Desc : Test if the manual page for the placeins package is available.
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试placeins包的man手册页是否可用"
LOG_INFO "检查texlive-placeins-doc软件包是否在yum源中"
dnf list texlive-placeins-doc > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到texlive-placeins-doc软件包"
exit 255
fi
LOG_INFO "检查系统是否已安装texlive-placeins-doc软件包"
rpm -q texlive-placeins-doc > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "系统已安装texlive-placeins-doc软件包测试结束后将保持安装状态"
INSTALLED=1
else
LOG_INFO "系统未安装texlive-placeins-doc软件包将进行安装"
INSTALLED=0
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装texlive-placeins-doc软件包"
dnf install -y texlive-placeins-doc
CHECK_RESULT $? 0 0 "安装texlive-placeins-doc软件包失败"
fi
LOG_INFO "测试man命令是否支持placeins包的手册页"
man -w placeins > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "man命令不支持placeins参数或placeins手册页不存在"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "清理环境,卸载安装的软件包"
dnf remove -y texlive-placeins-doc
fi
exit 255
fi
LOG_INFO "显示placeins包的手册页"
man placeins > /dev/null 2>&1
CHECK_RESULT $? 0 0 "显示placeins手册页失败"
LOG_INFO "验证手册页内容是否包含placeins相关信息"
man placeins | grep -i "placeins" > /dev/null 2>&1
CHECK_RESULT $? 0 0 "手册页内容中未找到placeins相关信息"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "清理环境,卸载安装的软件包"
dnf remove -y texlive-placeins-doc
CHECK_RESULT $? 0 0 "卸载texlive-placeins-doc软件包失败"
else
LOG_INFO "测试完成保持texlive-placeins-doc软件包安装状态"
fi
LOG_INFO "placeins包man手册页测试完成"
}
main "$@"

View File

@@ -1,74 +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-03-06
# @License : Mulan PSL v2
# @Desc : Test accessing basic usage information from the documentation.
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试Test accessing basic usage information from the documentation."
LOG_INFO "步骤1检查yum源中是否存在texlive-placeins-doc软件包"
if ! dnf list available texlive-placeins-doc &>/dev/null; then
LOG_ERROR "yum源中未找到texlive-placeins-doc软件包"
exit 255
fi
LOG_INFO "步骤2检查当前环境是否已安装texlive-placeins-doc"
if rpm -q texlive-placeins-doc &>/dev/null; then
LOG_INFO "检测到texlive-placeins-doc已安装标记为环境已存在"
ENV_EXIST=true
else
LOG_INFO "检测到texlive-placeins-doc未安装标记为环境未安装"
ENV_EXIST=false
fi
if [ "$ENV_EXIST" = "false" ]; then
LOG_INFO "步骤3安装texlive-placeins-doc软件包"
dnf install -y texlive-placeins-doc
CHECK_RESULT $? 0 0 "安装texlive-placeins-doc失败"
fi
LOG_INFO "步骤4尝试从文档中访问基本使用信息"
if ! texdoc --list placeins &>/dev/null; then
LOG_ERROR "texdoc命令不支持"placeins"参数或未找到相关文档"
if [ "$ENV_EXIST" = "false" ]; then
LOG_INFO "清理环境卸载在测试中安装的texlive-placeins-doc"
dnf remove -y texlive-placeins-doc
fi
exit 255
fi
LOG_INFO "步骤5使用texdoc查看placeins包的使用信息"
texdoc placeins 2>&1 | head -20
CHECK_RESULT $? 0 0 "执行texdoc placeins命令失败"
LOG_INFO "步骤6测试完成根据初始状态恢复环境"
if [ "$ENV_EXIST" = "false" ]; then
LOG_INFO "清理环境卸载在测试中安装的texlive-placeins-doc"
dnf remove -y texlive-placeins-doc
CHECK_RESULT $? 0 0 "卸载texlive-placeins-doc失败"
else
LOG_INFO "测试前环境已安装texlive-placeins-doc保持安装状态"
fi
LOG_INFO "测试结束:成功访问了文档中的基本使用信息。"
}
main "$@"

View File

@@ -1,88 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 texlive-pst-dbicons 软件包的基本使用功能,验证其宏包能否在 LaTeX 文档中正常加载并编译。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装 texlive-pst-dbicons
LOG_INFO "检查是否已安装 texlive-pst-dbicons"
if dnf list installed texlive-pst-dbicons &>/dev/null; then
LOG_INFO "texlive-pst-dbicons 已安装,将保持安装状态"
INSTALLED_BEFORE=1
else
LOG_INFO "texlive-pst-dbicons 未安装,将在测试后卸载"
INSTALLED_BEFORE=0
fi
# 检查 yum 源中是否有 texlive-pst-dbicons 软件包
LOG_INFO "检查 yum 源中是否有 texlive-pst-dbicons 软件包"
if ! dnf list available texlive-pst-dbicons &>/dev/null; then
LOG_ERROR "yum 源中未找到 texlive-pst-dbicons 软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "安装 texlive-pst-dbicons 软件包"
dnf install -y texlive-pst-dbicons
CHECK_RESULT $? 0 0 "安装 texlive-pst-dbicons 失败"
fi
# 创建测试 LaTeX 文档
LOG_INFO "创建测试 LaTeX 文档"
cat > test_document.tex << "EOF"
\documentclass{article}
\usepackage{pst-dbicons}
\begin{document}
This is a test document for pst-dbicons package.
\end{document}
EOF
CHECK_RESULT $? 0 0 "创建测试文档失败"
# 编译 LaTeX 文档
LOG_INFO "编译 LaTeX 文档以验证 pst-dbicons 宏包加载"
pdflatex -interaction=nonstopmode test_document.tex >/dev/null 2>&1
CHECK_RESULT $? 0 0 "编译 LaTeX 文档失败pst-dbicons 宏包可能未正确加载"
# 检查生成的 PDF 文件是否存在
LOG_INFO "检查生成的 PDF 文件是否存在"
if [ -f test_document.pdf ]; then
LOG_INFO "PDF 文件生成成功pst-dbicons 宏包正常加载"
else
LOG_ERROR "PDF 文件未生成pst-dbicons 宏包可能加载失败"
exit 1
fi
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_document.tex test_document.aux test_document.log test_document.pdf
# 如果之前未安装,则卸载软件包
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "卸载 texlive-pst-dbicons 软件包"
dnf remove -y texlive-pst-dbicons
CHECK_RESULT $? 0 0 "卸载 texlive-pst-dbicons 失败"
else
LOG_INFO "保持 texlive-pst-dbicons 软件包安装状态"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,111 +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-02-24
# @License : Mulan PSL v2
# @Desc : Test package availability
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义软件包名称
PACKAGE_NAME="texlive-sanitize-umlaut"
# 步骤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
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: 检查软件包提供的命令
LOG_INFO "检查软件包 ${PACKAGE_NAME} 提供的命令"
rpm -ql ${PACKAGE_NAME} | grep -E "/usr/bin/|/usr/sbin/" &> /dev/null
CHECK_RESULT $? 0 0 "软件包 ${PACKAGE_NAME} 未提供可执行命令"
# 步骤5: 获取软件包提供的命令并测试
LOG_INFO "获取软件包 ${PACKAGE_NAME} 提供的命令"
COMMANDS=$(rpm -ql ${PACKAGE_NAME} | grep -E "/usr/bin/|/usr/sbin/" | xargs -I {} basename {})
if [ -z "${COMMANDS}" ]; then
LOG_ERROR "未找到软件包 ${PACKAGE_NAME} 提供的命令"
exit 255
fi
# 步骤6: 测试每个命令的基本功能
for cmd in ${COMMANDS}; do
LOG_INFO "测试命令 ${cmd} 的基本功能"
# 检查命令是否存在
which ${cmd} &> /dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "命令 ${cmd} 不存在"
exit 255
fi
# 测试命令的--help或-h参数
${cmd} --help &> /dev/null
if [ $? -eq 0 ]; then
LOG_INFO "命令 ${cmd} 支持 --help 参数"
continue
fi
${cmd} -h &> /dev/null
if [ $? -eq 0 ]; then
LOG_INFO "命令 ${cmd} 支持 -h 参数"
continue
fi
# 如果命令不支持--help或-h尝试不带参数执行
${cmd} &> /dev/null
if [ $? -ne 0 ] && [ $? -ne 1 ]; then
LOG_ERROR "命令 ${cmd} 执行失败"
exit 255
fi
LOG_INFO "命令 ${cmd} 基本功能测试通过"
done
# 步骤7: 清理环境
LOG_INFO "清理测试环境"
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 "$@"

View File

@@ -1,148 +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-02-24
# @License : Mulan PSL v2
# @Desc : Test help option display
# ############################################
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 expect=$2
local mode=$3
local message=$4
if [ $mode -eq 0 ]; then
if [ $actual -ne $expect ]; then
LOG_ERROR "$message"
exit $actual
fi
else
if [ $actual -eq $expect ]; then
LOG_ERROR "$message"
exit 1
fi
fi
}
# 定义SSH_CMD函数虽然题目说无需定义但实际需要
SSH_CMD() {
local cmd=$1
local ip=$2
local password=$3
local user=${4:-root}
sshpass -p "$password" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
"$user@$ip" "$cmd"
}
# 主测试函数
main() {
local package_name="texlive-sanitize-umlaut"
local is_installed=false
LOG_INFO "开始测试Test help option display"
# 步骤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检查是否已安装软件包"
if rpm -q "$package_name" &>/dev/null; then
LOG_INFO "软件包已安装"
is_installed=true
else
LOG_INFO "软件包未安装,将进行安装"
# 步骤3安装软件包
LOG_INFO "步骤3安装软件包"
dnf install -y "$package_name"
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
# 步骤4测试help选项
LOG_INFO "步骤4测试help选项显示"
# 首先检查命令是否存在
if ! command -v texlive-sanitize-umlaut &>/dev/null; then
LOG_ERROR "命令 texlive-sanitize-umlaut 不存在"
exit 255
fi
# 测试help参数
LOG_INFO "执行命令texlive-sanitize-umlaut --help"
texlive-sanitize-umlaut --help &>/tmp/help_output.txt
local help_result=$?
# 检查help参数是否被支持
if [ $help_result -eq 255 ]; then
LOG_ERROR "参数 --help 不被支持"
exit 255
fi
# 检查命令是否成功执行
CHECK_RESULT $help_result 0 0 "执行help命令失败"
# 检查是否有输出
if [ ! -s /tmp/help_output.txt ]; then
LOG_ERROR "help命令没有输出"
exit 1
fi
# 检查输出中是否包含帮助信息关键词
if ! grep -i "usage\|help\|选项\|参数" /tmp/help_output.txt &>/dev/null; then
LOG_ERROR "help输出不符合预期"
exit 1
fi
LOG_INFO "help选项测试成功"
# 清理临时文件
rm -f /tmp/help_output.txt
# 步骤5环境恢复
LOG_INFO "步骤5环境恢复"
if [ "$is_installed" = "false" ]; then
LOG_INFO "卸载测试安装的软件包"
dnf remove -y "$package_name"
CHECK_RESULT $? 0 0 "卸载软件包失败"
LOG_INFO "环境已恢复到测试前状态"
else
LOG_INFO "保持原有安装状态"
fi
LOG_INFO "测试完成Test help option display"
}
# 执行主函数
main "$@"
}
main "$@"

View File

@@ -1,134 +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-02-24
# @License : Mulan PSL v2
# @Desc : Test package removal
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色和日志函数虽然题目说LOG_INFO和LOG_ERROR已定义但为完整脚本添加
LOG_INFO() {
echo "[INFO] $1"
}
LOG_ERROR() {
echo "[ERROR] $1"
}
# 定义CHECK_RESULT函数虽然题目说已定义但为完整脚本添加
CHECK_RESULT() {
local actual=$1
local expect=$2
local mode=$3
local message=$4
if [ $mode -eq 0 ]; then
if [ $actual -eq $expect ]; then
LOG_INFO "$message 成功"
return 0
else
LOG_ERROR "$message 失败"
exit $actual
fi
else
if [ $actual -ne $expect ]; then
LOG_INFO "$message 成功"
return 0
else
LOG_ERROR "$message 失败"
exit 1
fi
fi
}
# 定义SSH_CMD函数虽然题目说已定义但为完整脚本添加
SSH_CMD() {
local cmd=$1
local ip=$2
local password=$3
local user=$4
sshpass -p "$password" ssh -o StrictHostKeyChecking=no "$user@$ip" "$cmd"
}
# 测试包名称
PACKAGE_NAME="texlive-sanitize-umlaut"
LOG_INFO "开始测试包移除功能"
# 检查yum源中是否存在该软件包
LOG_INFO "检查yum源中是否存在 $PACKAGE_NAME 软件包"
dnf list available $PACKAGE_NAME &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在 $PACKAGE_NAME 软件包"
exit 255
fi
# 检查是否已安装
LOG_INFO "检查 $PACKAGE_NAME 是否已安装"
if rpm -q $PACKAGE_NAME &>/dev/null; then
LOG_INFO "$PACKAGE_NAME 已安装,测试结束后将保持安装状态"
WAS_INSTALLED=1
else
LOG_INFO "$PACKAGE_NAME 未安装,将进行安装测试"
WAS_INSTALLED=0
fi
# 如果未安装,则安装软件包
if [ $WAS_INSTALLED -eq 0 ]; then
LOG_INFO "安装 $PACKAGE_NAME 软件包"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME"
fi
# 验证软件包已安装
LOG_INFO "验证 $PACKAGE_NAME 已正确安装"
rpm -q $PACKAGE_NAME
CHECK_RESULT $? 0 0 "验证 $PACKAGE_NAME 安装"
# 测试移除功能(这里假设软件包有移除功能或相关命令)
LOG_INFO "测试 $PACKAGE_NAME 的移除功能"
# 这里根据实际软件包的功能进行测试
# 示例:运行软件包的某个命令测试其功能
if command -v texlive-sanitize-umlaut &>/dev/null; then
LOG_INFO "执行 texlive-sanitize-umlaut 命令测试"
texlive-sanitize-umlaut --help &>/dev/null
CHECK_RESULT $? 0 0 "测试 texlive-sanitize-umlaut 命令"
else
LOG_INFO "软件包未提供可执行命令,跳过命令测试"
fi
# 清理环境:如果测试前未安装,则卸载软件包
if [ $WAS_INSTALLED -eq 0 ]; then
LOG_INFO "卸载 $PACKAGE_NAME 软件包"
dnf remove -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME"
# 验证软件包已卸载
LOG_INFO "验证 $PACKAGE_NAME 已卸载"
rpm -q $PACKAGE_NAME &>/dev/null
if [ $? -eq 0 ]; then
LOG_ERROR "$PACKAGE_NAME 卸载失败"
exit 1
else
LOG_INFO "$PACKAGE_NAME 已成功卸载"
fi
else
LOG_INFO "测试前 $PACKAGE_NAME 已安装,保持安装状态"
fi
LOG_INFO "测试包移除功能完成"
}
main "$@"

View File

@@ -1,78 +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-02-24
# @License : Mulan PSL v2
# @Desc : Test basic command usage
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试Test basic command usage"
LOG_INFO "步骤1检查texlive-sanitize-umlaut软件包是否在yum源中"
dnf list available texlive-sanitize-umlaut
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到texlive-sanitize-umlaut软件包"
exit 255
fi
LOG_INFO "步骤2检查是否已安装texlive-sanitize-umlaut软件包"
rpm -q texlive-sanitize-umlaut
if [ $? -eq 0 ]; then
LOG_INFO "texlive-sanitize-umlaut已安装测试结束后保持安装状态"
INSTALLED=1
else
LOG_INFO "texlive-sanitize-umlaut未安装将进行安装测试"
INSTALLED=0
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤3安装texlive-sanitize-umlaut软件包"
dnf install -y texlive-sanitize-umlaut
CHECK_RESULT $? 0 0 "安装texlive-sanitize-umlaut软件包失败"
fi
LOG_INFO "步骤4检查texlive-sanitize-umlaut命令是否存在"
command -v texlive-sanitize-umlaut
CHECK_RESULT $? 0 0 "texlive-sanitize-umlaut命令不存在"
LOG_INFO "步骤5测试texlive-sanitize-umlaut命令的基本用法"
texlive-sanitize-umlaut --help
CHECK_RESULT $? 0 0 "texlive-sanitize-umlaut命令基本用法测试失败"
LOG_INFO "步骤6测试texlive-sanitize-umlaut命令的无效参数"
texlive-sanitize-umlaut --invalid-param 2>&1 | grep -q "invalid option"
if [ $? -ne 0 ]; then
LOG_ERROR "texlive-sanitize-umlaut命令不支持--invalid-param参数"
exit 255
fi
LOG_INFO "步骤7创建测试文件进行实际功能测试"
TEST_FILE="test_umlaut.txt"
echo "Müller Straße naïve café" > $TEST_FILE
texlive-sanitize-umlaut $TEST_FILE
CHECK_RESULT $? 0 0 "texlive-sanitize-umlaut命令处理文件失败"
rm -f $TEST_FILE
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤8卸载texlive-sanitize-umlaut软件包"
dnf remove -y texlive-sanitize-umlaut
CHECK_RESULT $? 0 0 "卸载texlive-sanitize-umlaut软件包失败"
fi
LOG_INFO "测试完成Test basic command usage"
}
main "$@"

View File

@@ -1,61 +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 : 2025-10-04
# @License : Mulan PSL v2
# @Desc : Test basic functionality of texlive-profcollege
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 texlive-profcollege 的基本功能"
# 检查软件包是否已安装
if rpm -q texlive-profcollege &>/dev/null; then
LOG_INFO "texlive-profcollege 已安装,测试结束后将保持安装状态"
installed=true
else
LOG_INFO "texlive-profcollege 未安装,将在测试结束后卸载"
installed=false
fi
# 检查 yum 源中是否存在 texlive-profcollege 软件包
LOG_INFO "检查 yum 源中是否存在 texlive-profcollege"
dnf list available texlive-profcollege &>/dev/null
CHECK_RESULT $? 0 255 "yum 源中不存在 texlive-profcollege 软件包"
# 安装 texlive-profcollege
if ! $installed; then
LOG_INFO "正在安装 texlive-profcollege"
dnf install -y texlive-profcollege &>/dev/null
CHECK_RESULT $? 0 0 "安装 texlive-profcollege 失败"
fi
# 测试 texlive-profcollege 基本功能
LOG_INFO "测试 texlive-profcollege 基本功能"
tex --version &>/dev/null
CHECK_RESULT $? 0 255 "texlive-profcollege 基本功能测试失败"
# 清理环境:如果测试前未安装,则卸载软件包
if ! $installed; then
LOG_INFO "正在卸载 texlive-profcollege"
dnf remove -y texlive-profcollege &>/dev/null
CHECK_RESULT $? 0 0 "卸载 texlive-profcollege 失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,127 +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-02-22
# @License : Mulan PSL v2
# @Desc : Test compiling a basic LaTeX document using profcollege
# ############################################
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 expect=$2
local mode=$3
local message=$4
if [ $mode -eq 0 ]; then
if [ $actual -ne $expect ]; then
LOG_ERROR "$message"
exit $actual
fi
else
if [ $actual -eq $expect ]; then
LOG_ERROR "$message"
exit 1
fi
fi
}
# 定义SSH命令函数示例实际环境中可能已定义
SSH_CMD() {
local cmd=$1
local node_ip=$2
local node_pass=$3
local node_user=$4
# 这里只是一个示例实际SSH_CMD可能已经定义
sshpass -p $node_pass ssh $node_user@$node_ip "$cmd"
}
# 测试脚本开始
LOG_INFO "开始测试使用profcollege编译基本LaTeX文档"
# 检查是否已经安装texlive-profcollege
LOG_INFO "步骤1检查texlive-profcollege是否已安装"
if rpm -q texlive-profcollege &> /dev/null; then
LOG_INFO "texlive-profcollege已安装测试结束后将保持安装状态"
INSTALLED=1
else
LOG_INFO "texlive-profcollege未安装将在测试步骤中安装"
INSTALLED=0
fi
# 检查yum源中是否有texlive-profcollege软件包
LOG_INFO "步骤2检查yum源中是否有texlive-profcollege软件包"
if ! dnf list available texlive-profcollege &> /dev/null; then
LOG_ERROR "yum源中未找到texlive-profcollege软件包"
exit 255
fi
# 如果未安装则安装texlive-profcollege
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤3安装texlive-profcollege软件包"
dnf install -y texlive-profcollege
CHECK_RESULT $? 0 0 "安装texlive-profcollege失败"
fi
# 创建测试LaTeX文档
LOG_INFO "步骤4创建测试LaTeX文档"
cat > test_document.tex << "EOF"
\documentclass{article}
\begin{document}
Hello, World!
\end{document}
EOF
CHECK_RESULT $? 0 0 "创建测试LaTeX文档失败"
# 使用profcollege编译LaTeX文档
LOG_INFO "步骤5使用profcollege编译LaTeX文档"
pdflatex test_document.tex
CHECK_RESULT $? 0 0 "编译LaTeX文档失败"
# 检查生成的PDF文件
LOG_INFO "步骤6检查生成的PDF文件"
if [ -f test_document.pdf ]; then
LOG_INFO "成功生成PDF文件"
else
LOG_ERROR "未找到生成的PDF文件"
exit 1
fi
# 清理测试文件
LOG_INFO "步骤7清理测试文件"
rm -f test_document.tex test_document.pdf test_document.log test_document.aux test_document.out
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 如果测试前未安装则卸载texlive-profcollege
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤8卸载texlive-profcollege软件包"
dnf remove -y texlive-profcollege
CHECK_RESULT $? 0 0 "卸载texlive-profcollege失败"
fi
LOG_INFO "测试完成使用profcollege编译基本LaTeX文档成功"
}
main "$@"

View File

@@ -1,67 +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-02-22
# @License : Mulan PSL v2
# @Desc : Test accessibility of package documentation
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:测试软件包文档的可访问性"
LOG_INFO "步骤1检查当前环境中是否已安装texlive-profcollege软件包"
rpm -q texlive-profcollege > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "texlive-profcollege已安装标记为已存在安装"
ALREADY_INSTALLED=1
else
LOG_INFO "texlive-profcollege未安装标记为未安装"
ALREADY_INSTALLED=0
fi
LOG_INFO "步骤2检查yum源中是否存在texlive-profcollege软件包"
dnf list available texlive-profcollege > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到texlive-profcollege软件包"
exit 255
fi
if [ $ALREADY_INSTALLED -eq 0 ]; then
LOG_INFO "步骤3安装texlive-profcollege软件包"
dnf install -y texlive-profcollege
CHECK_RESULT $? 0 0 "安装texlive-profcollege失败"
fi
LOG_INFO "步骤4测试texdoc命令是否可用"
texdoc --help > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "texdoc命令不存在或不支持"
if [ $ALREADY_INSTALLED -eq 0 ]; then
dnf remove -y texlive-profcollege
fi
exit 255
fi
LOG_INFO "步骤5使用texdoc查看texlive-profcollege的文档"
texdoc texlive-profcollege > /dev/null 2>&1
CHECK_RESULT $? 0 0 "无法访问texlive-profcollege的文档"
LOG_INFO "步骤6清理环境恢复到之前的状态"
if [ $ALREADY_INSTALLED -eq 0 ]; then
LOG_INFO "卸载测试安装的texlive-profcollege软件包"
dnf remove -y texlive-profcollege
CHECK_RESULT $? 0 0 "卸载texlive-profcollege失败"
else
LOG_INFO "保持原有安装状态,不进行卸载"
fi
LOG_INFO "测试完成:软件包文档可访问性测试通过"
}
main "$@"

View File

@@ -1,83 +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-02-22
# @License : Mulan PSL v2
# @Desc : Test uninstallation of texlive-profcollege package
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试:卸载 texlive-profcollege 软件包"
# 检查软件包是否在yum源中
LOG_INFO "检查 yum 源中是否存在 texlive-profcollege 软件包"
dnf list available texlive-profcollege &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum 源中未找到 texlive-profcollege 软件包"
exit 255
fi
# 检查当前是否已安装
LOG_INFO "检查 texlive-profcollege 是否已安装"
if dnf list installed texlive-profcollege &>/dev/null; then
already_installed=true
LOG_INFO "检测到 texlive-profcollege 已安装,测试后将保持安装状态"
else
already_installed=false
LOG_INFO "未检测到 texlive-profcollege 安装,将先安装再测试卸载"
fi
# 如果未安装,则先安装
if [ "$already_installed" = "false" ]; then
LOG_INFO "安装 texlive-profcollege 软件包"
dnf install -y texlive-profcollege
CHECK_RESULT $? 0 0 "安装 texlive-profcollege 失败"
LOG_INFO "安装完成"
fi
# 测试卸载功能
LOG_INFO "测试卸载 texlive-profcollege 软件包"
dnf remove -y texlive-profcollege
CHECK_RESULT $? 0 0 "卸载 texlive-profcollege 失败"
LOG_INFO "卸载完成"
# 验证卸载后软件包不存在
LOG_INFO "验证 texlive-profcollege 是否已卸载"
dnf list installed texlive-profcollege &>/dev/null
if [ $? -eq 0 ]; then
LOG_ERROR "卸载后 texlive-profcollege 仍存在"
exit 1
else
LOG_INFO "验证通过texlive-profcollege 已成功卸载"
fi
# 环境恢复:如果测试前未安装,则最终保持未安装状态
# 如果测试前已安装,则重新安装回去
if [ "$already_installed" = "true" ]; then
LOG_INFO "恢复环境:重新安装 texlive-profcollege"
dnf install -y texlive-profcollege
CHECK_RESULT $? 0 0 "重新安装 texlive-profcollege 失败"
LOG_INFO "环境恢复完成"
else
LOG_INFO "环境恢复:测试前未安装,无需额外操作"
fi
LOG_INFO "测试完成texlive-profcollege 卸载功能正常"
}
main "$@"

View File

@@ -1,120 +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-02-22
# @License : Mulan PSL v2
# @Desc : Test checking package version information
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 设置环境变量和常量
TEST_PACKAGE="texlive-profcollege"
LOG_INFO "测试用例Test checking package version information"
LOG_INFO "步骤1检查yum源中是否存在${TEST_PACKAGE}软件包"
dnf list available ${TEST_PACKAGE} &>/dev/null
CHECK_RESULT $? 0 0 "yum源中不存在${TEST_PACKAGE}软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在${TEST_PACKAGE}软件包"
exit 255
fi
LOG_INFO "步骤2检查系统是否已安装${TEST_PACKAGE}软件包"
INSTALLED=false
if rpm -q ${TEST_PACKAGE} &>/dev/null; then
LOG_INFO "${TEST_PACKAGE}软件包已安装"
INSTALLED=true
else
LOG_INFO "${TEST_PACKAGE}软件包未安装"
INSTALLED=false
fi
LOG_INFO "步骤3如果未安装则安装${TEST_PACKAGE}软件包"
if [ "${INSTALLED}" = "false" ]; then
dnf install -y ${TEST_PACKAGE}
CHECK_RESULT $? 0 0 "安装${TEST_PACKAGE}软件包失败"
if [ $? -ne 0 ]; then
LOG_ERROR "安装${TEST_PACKAGE}软件包失败"
exit 1
fi
LOG_INFO "成功安装${TEST_PACKAGE}软件包"
fi
LOG_INFO "步骤4检查rpm命令的参数支持情况"
rpm -qi ${TEST_PACKAGE} &>/dev/null
CHECK_RESULT $? 0 0 "rpm命令不支持-qi参数或参数不存在"
if [ $? -ne 0 ]; then
LOG_ERROR "rpm命令不支持-qi参数或参数不存在"
exit 255
fi
LOG_INFO "步骤5执行rpm -qi命令获取软件包版本信息"
PACKAGE_INFO=$(rpm -qi ${TEST_PACKAGE})
CHECK_RESULT $? 0 0 "执行rpm -qi命令失败"
if [ $? -ne 0 ]; then
LOG_ERROR "执行rpm -qi命令失败"
exit 1
fi
LOG_INFO "步骤6验证版本信息是否包含关键字段"
echo "${PACKAGE_INFO}" | grep -q "Version"
CHECK_RESULT $? 0 0 "版本信息中未找到Version字段"
echo "${PACKAGE_INFO}" | grep -q "Release"
CHECK_RESULT $? 0 0 "版本信息中未找到Release字段"
echo "${PACKAGE_INFO}" | grep -q "Install Date"
CHECK_RESULT $? 0 0 "版本信息中未找到Install Date字段"
LOG_INFO "步骤7验证版本信息格式是否正确"
VERSION_LINE=$(echo "${PACKAGE_INFO}" | grep "Version")
if [[ "${VERSION_LINE}" =~ Version[[:space:]]+:[[:space:]]+([0-9]+(\.[0-9]+)*) ]]; then
LOG_INFO "版本号格式正确:${BASH_REMATCH[1]}"
else
LOG_ERROR "版本号格式不正确"
exit 1
fi
LOG_INFO "步骤8如果需要清理环境则卸载软件包"
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "开始卸载${TEST_PACKAGE}软件包"
dnf remove -y ${TEST_PACKAGE}
CHECK_RESULT $? 0 0 "卸载${TEST_PACKAGE}软件包失败"
if [ $? -ne 0 ]; then
LOG_ERROR "卸载${TEST_PACKAGE}软件包失败"
exit 1
fi
LOG_INFO "成功卸载${TEST_PACKAGE}软件包"
else
LOG_INFO "测试前已安装${TEST_PACKAGE},保持安装状态"
fi
LOG_INFO "步骤9验证环境已恢复到测试前状态"
if [ "${INSTALLED}" = "false" ]; then
rpm -q ${TEST_PACKAGE} &>/dev/null
if [ $? -eq 0 ]; then
LOG_ERROR "环境清理失败,${TEST_PACKAGE}软件包仍存在"
exit 1
else
LOG_INFO "环境清理成功,${TEST_PACKAGE}软件包已卸载"
fi
else
rpm -q ${TEST_PACKAGE} &>/dev/null
CHECK_RESULT $? 0 0 "环境状态异常,${TEST_PACKAGE}软件包丢失"
LOG_INFO "环境状态正常,${TEST_PACKAGE}软件包保持安装"
fi
LOG_INFO "测试完成:成功验证${TEST_PACKAGE}软件包版本信息"
}
main "$@"

View File

@@ -1,98 +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-03-16
# @License : Mulan PSL v2
# @Desc : Test basic table of contents generation with tocloft.
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试Test basic table of contents generation with tocloft."
LOG_INFO "步骤1检查环境中是否已安装 texlive-tocloft 软件包"
dnf list installed texlive-tocloft &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "texlive-tocloft 已安装,标记为已存在安装"
INSTALLED_BEFORE=1
else
LOG_INFO "texlive-tocloft 未安装,标记为未安装"
INSTALLED_BEFORE=0
fi
LOG_INFO "步骤2检查 yum 源中是否有 texlive-tocloft 软件包"
dnf list available texlive-tocloft &>/dev/null
CHECK_RESULT $? 0 0 "yum 源中未找到 texlive-tocloft 软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum 源中不存在 texlive-tocloft 软件包,退出测试"
exit 255
fi
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "步骤3安装 texlive-tocloft 软件包"
dnf install -y texlive-tocloft
CHECK_RESULT $? 0 0 "安装 texlive-tocloft 软件包失败"
fi
LOG_INFO "步骤4创建一个简单的 LaTeX 测试文件,使用 tocloft 包生成目录"
TEST_TEX_FILE="test_tocloft.tex"
cat > $TEST_TEX_FILE << "EOF"
\documentclass{article}
\usepackage{tocloft}
\begin{document}
\tableofcontents
\section{第一部分}
这是第一部分的内容。
\section{第二部分}
这是第二部分的内容。
\end{document}
EOF
CHECK_RESULT $? 0 0 "创建 LaTeX 测试文件失败"
LOG_INFO "步骤5使用 pdflatex 编译 LaTeX 文件,生成目录"
pdflatex -interaction=nonstopmode $TEST_TEX_FILE
CHECK_RESULT $? 0 0 "pdflatex 编译失败,可能缺少相关命令或参数"
LOG_INFO "步骤6检查是否成功生成了包含目录的 PDF 文件"
PDF_FILE="test_tocloft.pdf"
if [ -f "$PDF_FILE" ]; then
LOG_INFO "成功生成 PDF 文件: $PDF_FILE"
# 简单检查 PDF 是否包含目录关键词(这里只是一个基本检查)
if pdftotext "$PDF_FILE" - 2>/dev/null | grep -q "第一部分\|第二部分"; then
LOG_INFO "PDF 文件内容检查通过,包含预期的章节标题"
else
LOG_ERROR "PDF 文件内容检查失败,未找到预期的章节标题"
exit 1
fi
else
LOG_ERROR "未生成 PDF 文件: $PDF_FILE"
exit 1
fi
LOG_INFO "步骤7清理测试生成的文件"
rm -f test_tocloft.tex test_tocloft.aux test_tocloft.log test_tocloft.out test_tocloft.toc test_tocloft.pdf
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "步骤8卸载之前安装的 texlive-tocloft 软件包"
dnf remove -y texlive-tocloft
CHECK_RESULT $? 0 0 "卸载 texlive-tocloft 软件包失败"
else
LOG_INFO "步骤8环境已安装 texlive-tocloft保持安装状态无需卸载"
fi
LOG_INFO "测试完成Test basic table of contents generation with tocloft."
}
main "$@"

View File

@@ -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-03-16
# @License : Mulan PSL v2
# @Desc : Test generation of list of figures with tocloft.
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 环境检查检查是否已安装texlive-tocloft
LOG_INFO "开始检查texlive-tocloft是否已安装"
if dnf list installed texlive-tocloft &>/dev/null; then
LOG_INFO "texlive-tocloft已安装脚本结束时将保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "texlive-tocloft未安装将在测试中安装并在结束后卸载"
INSTALLED_BEFORE=false
fi
# 检查yum源中是否有texlive-tocloft软件包
LOG_INFO "检查yum源中是否存在texlive-tocloft软件包"
if ! dnf list available texlive-tocloft &>/dev/null; then
LOG_ERROR "yum源中未找到texlive-tocloft软件包"
exit 255
fi
# 如果未安装则安装texlive-tocloft
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "开始安装texlive-tocloft"
dnf install -y texlive-tocloft
CHECK_RESULT $? 0 0 "安装texlive-tocloft失败"
fi
# 创建测试用的LaTeX文件
LOG_INFO "创建测试用的LaTeX文件"
cat > test_figures.tex << "EOF"
\documentclass{article}
\usepackage{tocloft}
\usepackage{graphicx}
\begin{document}
\listoffigures
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{example-image-a}
\caption{示例图片A}
\label{fig:exampleA}
\end{figure}
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{example-image-b}
\caption{示例图片B}
\label{fig:exampleB}
\end{figure}
\end{document}
EOF
CHECK_RESULT $? 0 0 "创建LaTeX文件失败"
# 生成PDF并检查list of figures
LOG_INFO "使用pdflatex生成PDF并包含图表列表"
pdflatex -interaction=nonstopmode test_figures.tex
CHECK_RESULT $? 0 0 "pdflatex第一次编译失败"
LOG_INFO "第二次编译以生成正确的图表列表"
pdflatex -interaction=nonstopmode test_figures.tex
CHECK_RESULT $? 0 0 "pdflatex第二次编译失败"
# 检查生成的PDF中是否包含list of figures
LOG_INFO "检查生成的PDF文件中是否包含图表列表"
if pdftotext test_figures.pdf - 2>/dev/null | grep -q "List of Figures"; then
LOG_INFO "成功生成包含图表列表的PDF文件"
else
LOG_ERROR "PDF文件中未找到图表列表"
CHECK_RESULT 1 0 1 "图表列表生成失败"
fi
# 清理生成的中间文件
LOG_INFO "清理测试生成的中间文件"
rm -f test_figures.aux test_figures.log test_figures.out test_figures.toc test_figures.lof test_figures.pdf test_figures.tex
# 如果测试前未安装则卸载texlive-tocloft
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "卸载texlive-tocloft以恢复环境"
dnf remove -y texlive-tocloft
CHECK_RESULT $? 0 0 "卸载texlive-tocloft失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,109 +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-03-16
# @License : Mulan PSL v2
# @Desc : Test generation of list of tables with tocloft.
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试使用tocloft生成表格列表功能"
# 检查软件包是否已在yum源中
LOG_INFO "检查texlive-tocloft软件包是否在yum源中"
dnf list available texlive-tocloft &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "texlive-tocloft软件包不在yum源中"
exit 255
fi
# 检查环境是否已安装
LOG_INFO "检查texlive-tocloft是否已安装"
rpm -q texlive-tocloft &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "texlive-tocloft已安装测试后将保持安装状态"
already_installed=true
else
LOG_INFO "texlive-tocloft未安装将在测试前安装"
already_installed=false
fi
# 如果未安装,则安装软件包
if [ "$already_installed" = false ]; then
LOG_INFO "安装texlive-tocloft软件包"
dnf install -y texlive-tocloft
CHECK_RESULT $? 0 0 "安装texlive-tocloft失败"
fi
# 测试生成表格列表功能
LOG_INFO "测试生成表格列表功能"
# 创建一个简单的LaTeX文档来测试tocloft的列表生成
cat > test_table.tex << "EOF"
\documentclass{article}
\usepackage{tocloft}
\newlistof{tables}{lot}{List of Tables}
\begin{document}
\listoftables
\section{Test Section}
\begin{table}[h]
\centering
\begin{tabular}{c|c}
Header1 & Header2 \\
\hline
Data1 & Data2 \\
\end{tabular}
\caption{Test Table}
\end{table}
\end{document}
EOF
# 使用pdflatex编译文档
LOG_INFO "编译测试文档"
pdflatex -interaction=nonstopmode test_table.tex
CHECK_RESULT $? 0 0 "编译LaTeX文档失败"
# 检查是否生成了lot文件表格列表文件
LOG_INFO "检查是否生成了表格列表文件"
if [ -f test_table.lot ]; then
LOG_INFO "成功生成表格列表文件"
# 检查文件内容
LOG_INFO "检查表格列表文件内容"
grep -q "Test Table" test_table.lot
CHECK_RESULT $? 0 0 "表格列表文件中未找到预期的表格标题"
else
LOG_ERROR "未生成表格列表文件"
exit 1
fi
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_table.aux test_table.log test_table.lot test_table.tex test_table.pdf
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 如果测试前未安装,则卸载软件包
if [ "$already_installed" = false ]; then
LOG_INFO "卸载texlive-tocloft软件包"
dnf remove -y texlive-tocloft
CHECK_RESULT $? 0 0 "卸载texlive-tocloft失败"
LOG_INFO "环境已恢复到测试前的状态"
else
LOG_INFO "保持texlive-tocloft安装状态"
fi
LOG_INFO "测试完成使用tocloft生成表格列表功能"
}
main "$@"

View File

@@ -1,98 +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-03-16
# @License : Mulan PSL v2
# @Desc : Test if the LaTeX document can load the tocloft package.
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义变量
PACKAGE_NAME="texlive-tocloft"
TEST_FILE="test_tocloft.tex"
EXPECTED_OUTPUT="test_tocloft.pdf"
# 步骤1检查环境是否已安装指定软件包
LOG_INFO "步骤1检查环境是否已安装 $PACKAGE_NAME 软件包"
if dnf list installed "$PACKAGE_NAME" &>/dev/null; then
LOG_INFO "软件包 $PACKAGE_NAME 已安装,测试结束后将保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "软件包 $PACKAGE_NAME 未安装,测试结束后将卸载"
INSTALLED_BEFORE=false
fi
# 步骤2检查yum源中是否有该软件包
LOG_INFO "步骤2检查yum源中是否有 $PACKAGE_NAME 软件包"
if ! dnf list available "$PACKAGE_NAME" &>/dev/null; then
LOG_ERROR "yum源中未找到 $PACKAGE_NAME 软件包"
exit 255
fi
# 步骤3安装软件包如果未安装
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "步骤3安装 $PACKAGE_NAME 软件包"
dnf install -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
fi
# 步骤4创建测试LaTeX文档
LOG_INFO "步骤4创建测试LaTeX文档测试 tocloft 包加载功能"
cat > "$TEST_FILE" << "EOF"
\documentclass{article}
\usepackage{tocloft}
\begin{document}
\tableofcontents
\section{测试章节}
这是一个测试文档,用于验证 tocloft 包是否正确加载。
\end{document}
EOF
CHECK_RESULT $? 0 0 "创建测试LaTeX文档失败"
# 步骤5使用pdflatex编译LaTeX文档
LOG_INFO "步骤5使用pdflatex编译LaTeX文档"
if ! command -v pdflatex &>/dev/null; then
LOG_ERROR "pdflatex命令不存在或不支持"
exit 255
fi
pdflatex -interaction=nonstopmode "$TEST_FILE"
CHECK_RESULT $? 0 0 "pdflatex编译失败"
# 步骤6检查生成的PDF文件
LOG_INFO "步骤6检查生成的PDF文件是否存在"
if [ -f "$EXPECTED_OUTPUT" ]; then
LOG_INFO "PDF文件生成成功tocloft包加载功能正常"
else
LOG_ERROR "PDF文件未生成tocloft包加载功能异常"
exit 1
fi
# 步骤7清理临时文件
LOG_INFO "步骤7清理临时文件"
rm -f "$TEST_FILE" test_tocloft.aux test_tocloft.log test_tocloft.out test_tocloft.toc "$EXPECTED_OUTPUT"
CHECK_RESULT $? 0 0 "清理临时文件失败"
# 步骤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 "测试完成LaTeX文档可以成功加载 tocloft 包"
}
main "$@"

View File

@@ -1,83 +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 : 2025-11-26
# @License : Mulan PSL v2
# @Desc : Test the table of contents functionality
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查texlive-tocloft软件包是否已安装
if rpm -q texlive-tocloft &>/dev/null; then
LOG_INFO "texlive-tocloft软件包已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "texlive-tocloft软件包未安装将在测试结束后卸载"
INSTALLED=false
fi
# 检查yum源中是否存在texlive-tocloft软件包
LOG_INFO "检查yum源中是否存在texlive-tocloft软件包"
if ! dnf list available texlive-tocloft &>/dev/null; then
LOG_ERROR "yum源中不存在texlive-tocloft软件包"
exit 255
fi
# 安装texlive-tocloft软件包
LOG_INFO "安装texlive-tocloft软件包"
dnf install -y texlive-tocloft
CHECK_RESULT $? 0 0 "安装texlive-tocloft软件包失败"
# 测试表格目录功能
LOG_INFO "测试表格目录功能"
TEST_FILE="test_toc.tex"
cat > $TEST_FILE <<EOF
\documentclass{article}
\usepackage{tocloft}
\begin{document}
\tableofcontents
\section{Section 1}
\section{Section 2}
\end{document}
EOF
pdflatex $TEST_FILE
CHECK_RESULT $? 0 0 "生成PDF文件失败"
# 检查生成的PDF文件是否包含目录
LOG_INFO "检查生成的PDF文件是否包含目录"
if ! pdffonts ${TEST_FILE%.tex}.pdf | grep -q "Symbol"; then
LOG_ERROR "生成的PDF文件不包含目录"
exit 1
fi
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f $TEST_FILE ${TEST_FILE%.tex}.aux ${TEST_FILE%.tex}.log ${TEST_FILE%.tex}.pdf
# 如果测试前未安装texlive-tocloft则在测试结束后卸载
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载texlive-tocloft软件包"
dnf remove -y texlive-tocloft
CHECK_RESULT $? 0 0 "卸载texlive-tocloft软件包失败"
fi
LOG_INFO "测试表格目录功能完成"
}
main "$@"

View File

@@ -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-03-16
# @License : Mulan PSL v2
# @Desc : Test formatting options for table of contents.
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义日志函数
LOG_INFO() {
echo "[INFO] $*"
}
LOG_ERROR() {
echo "[ERROR] $*" >&2
}
# 定义检查结果函数
CHECK_RESULT() {
local actual=$1
local expect=$2
local exit_code=$3
local message=$4
if [ $actual -ne $expect ]; then
LOG_ERROR "$message"
exit $exit_code
fi
}
# 定义SSH命令函数
SSH_CMD() {
local cmd=$1
local ip=$2
local password=$3
local user=$4
sshpass -p "$password" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null "$user@$ip" "$cmd"
}
# 测试脚本开始
LOG_INFO "开始测试表格目录格式选项。"
# 检查环境是否已安装texlive-tocloft包
LOG_INFO "检查是否已安装texlive-tocloft包。"
if dnf list installed texlive-tocloft &>/dev/null; then
LOG_INFO "texlive-tocloft包已安装测试完成后将保持安装状态。"
INSTALLED=true
else
LOG_INFO "texlive-tocloft包未安装将在测试过程中安装并在测试完成后卸载。"
INSTALLED=false
fi
# 检查yum源中是否有texlive-tocloft包
LOG_INFO "检查yum源中是否有texlive-tocloft包。"
if ! dnf list available texlive-tocloft &>/dev/null; then
LOG_ERROR "yum源中未找到texlive-tocloft包。"
exit 255
fi
# 如果未安装则安装texlive-tocloft包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装texlive-tocloft包。"
dnf install -y texlive-tocloft
CHECK_RESULT $? 0 0 "安装texlive-tocloft包失败。"
fi
# 测试表格目录格式选项
LOG_INFO "测试表格目录格式选项。"
# 这里假设有一个命令用于测试表格目录格式选项例如使用tocloft包的某个命令
# 由于具体命令未知,这里使用一个示例命令,实际应根据测试需求替换
TEST_COMMAND="tocloft --help"
if ! command -v tocloft &>/dev/null; then
LOG_ERROR "tocloft命令不存在或不支持。"
exit 255
fi
$TEST_COMMAND
CHECK_RESULT $? 0 0 "测试表格目录格式选项失败。"
# 如果需要多个服务器并在第二个服务器上执行命令可以使用SSH_CMD
# 例如SSH_CMD "ls" "$NODE2_IPV4" "$NODE2_PASSWORD" "$NODE2_USER"
# 这里假设不需要多个服务器,因此跳过
# 清理环境
LOG_INFO "清理测试环境。"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载texlive-tocloft包。"
dnf remove -y texlive-tocloft
CHECK_RESULT $? 0 0 "卸载texlive-tocloft包失败。"
else
LOG_INFO "保持texlive-tocloft包安装状态。"
fi
LOG_INFO "测试完成。"
}
main "$@"

View File

@@ -1,113 +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-03-16
# @License : Mulan PSL v2
# @Desc : Test if the texlive-tocloft package can be cleanly uninstalled.
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义日志函数(根据要求直接使用)
LOG_INFO() {
echo "[INFO] $1"
}
LOG_ERROR() {
echo "[ERROR] $1"
}
# 测试开始
LOG_INFO "开始测试Test if the texlive-tocloft package can be cleanly uninstalled."
# 步骤1检查yum源中是否存在texlive-tocloft软件包
LOG_INFO "步骤1检查yum源中是否存在texlive-tocloft软件包"
if ! dnf search texlive-tocloft 2>/dev/null | grep -q "texlive-tocloft"; then
LOG_ERROR "yum源中未找到texlive-tocloft软件包"
exit 255
fi
# 步骤2检查是否已经安装了texlive-tocloft软件包
LOG_INFO "步骤2检查是否已经安装了texlive-tocloft软件包"
if rpm -q texlive-tocloft > /dev/null 2>&1; then
LOG_INFO "texlive-tocloft已安装测试结束后将保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "texlive-tocloft未安装将先安装再卸载"
INSTALLED_BEFORE=false
fi
# 步骤3如果未安装则安装texlive-tocloft软件包
if [ "$INSTALLED_BEFORE" = "false" ]; then
LOG_INFO "步骤3安装texlive-tocloft软件包"
dnf install -y texlive-tocloft
CHECK_RESULT $? 0 0 "安装texlive-tocloft失败"
LOG_INFO "texlive-tocloft安装成功"
fi
# 步骤4验证texlive-tocloft是否正常工作
LOG_INFO "步骤4验证texlive-tocloft是否正常工作"
if command -v tex > /dev/null 2>&1; then
LOG_INFO "tex命令可用继续测试"
else
LOG_ERROR "tex命令不可用可能安装不完整"
exit 1
fi
# 步骤5卸载texlive-tocloft软件包
LOG_INFO "步骤5卸载texlive-tocloft软件包"
dnf remove -y texlive-tocloft
CHECK_RESULT $? 0 0 "卸载texlive-tocloft失败"
LOG_INFO "texlive-tocloft卸载成功"
# 步骤6验证texlive-tocloft是否完全卸载
LOG_INFO "步骤6验证texlive-tocloft是否完全卸载"
if rpm -q texlive-tocloft > /dev/null 2>&1; then
LOG_ERROR "texlive-tocloft卸载后仍存在残留"
exit 1
else
LOG_INFO "texlive-tocloft已完全卸载"
fi
# 步骤7如果测试前已安装则重新安装以恢复环境
if [ "$INSTALLED_BEFORE" = "true" ]; then
LOG_INFO "步骤7恢复环境重新安装texlive-tocloft"
dnf install -y texlive-tocloft
CHECK_RESULT $? 0 0 "重新安装texlive-tocloft失败"
LOG_INFO "环境恢复成功texlive-tocloft已重新安装"
fi
# 步骤8最终环境验证
LOG_INFO "步骤8最终环境验证"
if [ "$INSTALLED_BEFORE" = "true" ]; then
if rpm -q texlive-tocloft > /dev/null 2>&1; then
LOG_INFO "测试完成,环境已恢复到初始安装状态"
else
LOG_ERROR "环境恢复失败texlive-tocloft未安装"
exit 1
fi
else
if ! rpm -q texlive-tocloft > /dev/null 2>&1; then
LOG_INFO "测试完成环境已清理未安装texlive-tocloft"
else
LOG_ERROR "环境清理失败texlive-tocloft仍存在"
exit 1
fi
fi
LOG_INFO "测试结束texlive-tocloft软件包可以干净卸载"
}
main "$@"