create testcase for src texlive-split-j rpm texlive-gost-doc

This commit is contained in:
2026-04-07 10:47:51 +08:00
parent 2d32b1b9be
commit e21438a3db
4 changed files with 337 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-07
# @License : Mulan PSL v2
# @Desc : Test documentation existence
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试文档存在性检查脚本
# 定义变量
PACKAGE_NAME="texlive-gost-doc"
# 步骤1: 检查软件包是否在yum源中
LOG_INFO "步骤1: 检查软件包是否在yum源中"
dnf list available "$PACKAGE_NAME" >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $PACKAGE_NAME 不在yum源中"
exit 255
fi
LOG_INFO "软件包 $PACKAGE_NAME 在yum源中"
# 步骤2: 检查当前是否已安装
LOG_INFO "步骤2: 检查当前是否已安装"
IS_INSTALLED=0
if rpm -q "$PACKAGE_NAME" >/dev/null 2>&1; then
LOG_INFO "软件包 $PACKAGE_NAME 已安装"
IS_INSTALLED=1
else
LOG_INFO "软件包 $PACKAGE_NAME 未安装"
fi
# 步骤3: 如果未安装,则安装软件包
if [ $IS_INSTALLED -eq 0 ]; then
LOG_INFO "步骤3: 安装软件包 $PACKAGE_NAME"
dnf install -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
LOG_INFO "软件包 $PACKAGE_NAME 安装成功"
fi
# 步骤4: 检查文档文件是否存在
LOG_INFO "步骤4: 检查文档文件是否存在"
DOC_FILES=$(rpm -ql "$PACKAGE_NAME" | grep -E "\.(pdf|txt|html|md|tex)$" | head -5)
if [ -z "$DOC_FILES" ]; then
LOG_ERROR "未找到文档文件"
CHECK_RESULT 1 0 0 "文档文件不存在"
else
LOG_INFO "找到文档文件:"
echo "$DOC_FILES"
CHECK_RESULT 0 0 0 "文档文件检查失败"
fi
# 步骤5: 验证文档文件可访问性
LOG_INFO "步骤5: 验证文档文件可访问性"
for doc_file in $DOC_FILES; do
if [ -f "$doc_file" ]; then
LOG_INFO "文档文件 $doc_file 存在且可访问"
# 检查文件大小
file_size=$(stat -c%s "$doc_file" 2>/dev/null || echo "0")
if [ "$file_size" -gt 0 ]; then
LOG_INFO "文档文件 $doc_file 大小: ${file_size}字节"
else
LOG_ERROR "文档文件 $doc_file 大小为0"
CHECK_RESULT 1 0 0 "文档文件 $doc_file 无效"
fi
else
LOG_ERROR "文档文件 $doc_file 不存在"
CHECK_RESULT 1 0 0 "文档文件 $doc_file 不存在"
fi
done
# 步骤6: 检查文档目录结构
LOG_INFO "步骤6: 检查文档目录结构"
DOC_DIRS=$(rpm -ql "$PACKAGE_NAME" | grep -E "/doc/|/docs/|/documentation/" | head -5)
if [ -n "$DOC_DIRS" ]; then
LOG_INFO "找到文档目录:"
echo "$DOC_DIRS"
CHECK_RESULT 0 0 0 "文档目录检查失败"
else
LOG_INFO "未找到专门的文档目录,文档文件可能分布在其他目录中"
CHECK_RESULT 0 0 0 "文档目录检查失败"
fi
# 步骤7: 清理环境(如果脚本开始时未安装)
LOG_INFO "步骤7: 清理环境"
if [ $IS_INSTALLED -eq 0 ]; then
LOG_INFO "卸载软件包 $PACKAGE_NAME"
dnf remove -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
LOG_INFO "软件包 $PACKAGE_NAME 卸载成功"
else
LOG_INFO "保持软件包 $PACKAGE_NAME 的安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,65 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-07
# @License : Mulan PSL v2
# @Desc : Test if package is installed
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已经安装了texlive-gost-doc
LOG_INFO "检查是否已经安装了texlive-gost-doc"
rpm -q texlive-gost-doc > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "texlive-gost-doc已经安装脚本结束将保持安装状态"
INSTALLED=true
else
LOG_INFO "texlive-gost-doc未安装将在测试步骤中安装"
INSTALLED=false
fi
# 检查yum源中是否有texlive-gost-doc软件包
LOG_INFO "检查yum源中是否有texlive-gost-doc软件包"
dnf list available texlive-gost-doc > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中未找到texlive-gost-doc软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到texlive-gost-doc软件包退出"
exit 255
fi
# 如果未安装则安装texlive-gost-doc
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "安装texlive-gost-doc"
dnf install -y texlive-gost-doc > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装texlive-gost-doc失败"
fi
# 验证texlive-gost-doc是否成功安装
LOG_INFO "验证texlive-gost-doc是否成功安装"
rpm -q texlive-gost-doc > /dev/null 2>&1
CHECK_RESULT $? 0 0 "texlive-gost-doc未成功安装"
# 如果之前未安装则在测试结束后卸载texlive-gost-doc
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "测试结束卸载texlive-gost-doc"
dnf remove -y texlive-gost-doc > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载texlive-gost-doc失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,79 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-07
# @License : Mulan PSL v2
# @Desc : Test listing package files
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试脚本Test listing package files
LOG_INFO "开始测试:列出软件包文件"
# 检查是否已安装 texlive-gost-doc
LOG_INFO "步骤1检查 texlive-gost-doc 是否已安装"
rpm -q texlive-gost-doc
if [ $? -eq 0 ]; then
LOG_INFO "texlive-gost-doc 已安装,脚本结束时将保持安装状态"
INSTALLED="true"
else
LOG_INFO "texlive-gost-doc 未安装,将在测试中安装"
INSTALLED="false"
fi
# 检查 yum 源中是否有 texlive-gost-doc
LOG_INFO "步骤2检查 yum 源中是否有 texlive-gost-doc"
dnf list available texlive-gost-doc
if [ $? -ne 0 ]; then
LOG_ERROR "yum 源中未找到 texlive-gost-doc 软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "步骤3安装 texlive-gost-doc"
dnf install -y texlive-gost-doc
CHECK_RESULT $? 0 0 "安装 texlive-gost-doc 失败"
fi
# 测试列出软件包文件
LOG_INFO "步骤4测试列出 texlive-gost-doc 软件包文件"
rpm -ql texlive-gost-doc
CHECK_RESULT $? 0 0 "列出 texlive-gost-doc 文件失败"
# 测试指定参数(例如:-q 参数)
LOG_INFO "步骤5测试 rpm -ql 命令的 -q 参数"
rpm -ql texlive-gost-doc -q
if [ $? -ne 0 ]; then
LOG_ERROR "rpm -ql 命令不支持 -q 参数"
exit 255
fi
# 清理环境:如果脚本开始时未安装,则卸载软件包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "步骤6清理环境卸载 texlive-gost-doc"
dnf remove -y texlive-gost-doc
CHECK_RESULT $? 0 0 "卸载 texlive-gost-doc 失败"
LOG_INFO "环境已恢复到未安装状态"
else
LOG_INFO "步骤6保持 texlive-gost-doc 安装状态"
fi
LOG_INFO "测试完成:列出软件包文件"
}
main "$@"

View File

@@ -0,0 +1,81 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-07
# @License : Mulan PSL v2
# @Desc : Test package removal
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试软件包移除功能"
# 检查是否已经安装了texlive-gost-doc软件包
LOG_INFO "检查texlive-gost-doc是否已安装"
rpm -q texlive-gost-doc
if [ $? -eq 0 ]; then
LOG_INFO "texlive-gost-doc已安装标记为已安装状态"
INSTALLED=true
else
LOG_INFO "texlive-gost-doc未安装标记为未安装状态"
INSTALLED=false
fi
# 检查yum源中是否有texlive-gost-doc软件包
LOG_INFO "检查yum源中是否有texlive-gost-doc软件包"
dnf list available texlive-gost-doc
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到texlive-gost-doc软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始安装texlive-gost-doc软件包"
dnf install -y texlive-gost-doc
CHECK_RESULT $? 0 0 "安装texlive-gost-doc失败"
LOG_INFO "texlive-gost-doc软件包安装成功"
fi
# 测试移除软件包功能
LOG_INFO "开始测试移除texlive-gost-doc软件包"
dnf remove -y texlive-gost-doc
CHECK_RESULT $? 0 0 "移除texlive-gost-doc失败"
LOG_INFO "texlive-gost-doc软件包移除成功"
# 验证软件包是否已移除
LOG_INFO "验证texlive-gost-doc是否已移除"
rpm -q texlive-gost-doc
if [ $? -eq 0 ]; then
LOG_ERROR "texlive-gost-doc移除后仍然存在"
exit 1
else
LOG_INFO "texlive-gost-doc已成功移除"
fi
# 环境恢复:如果测试前未安装,则重新安装;如果测试前已安装,则保持安装状态
if [ "$INSTALLED" = true ]; then
LOG_INFO "测试前texlive-gost-doc已安装重新安装以恢复环境"
dnf install -y texlive-gost-doc
CHECK_RESULT $? 0 0 "重新安装texlive-gost-doc失败"
LOG_INFO "环境已恢复到测试前的安装状态"
else
LOG_INFO "测试前texlive-gost-doc未安装无需恢复安装状态"
fi
LOG_INFO "测试软件包移除功能完成"
}
main "$@"