diff --git a/ant-condition-fail-build.sh b/ant-condition-fail-build.sh new file mode 100644 index 0000000000000000000000000000000000000000..c4ad44ff073418aca8ac86503b2bf6494f6fc485 --- /dev/null +++ b/ant-condition-fail-build.sh @@ -0,0 +1,84 @@ +#!/bin/bash +############################################################################### +# @用例ID: 20260405-232654-173528830 +# @用例名称: ant-condition-fail-build +# @用例级别: 3 +# @用例标签: ant +# @扩展属性: +# @用例类型: 功能测试 +# @自动化: 1 +# @超时时间: 0 +# @用例描述: 验证 ant 构建脚本中的 fail 条件触发后命令返回失败 +############################################################################### +if [ -z "$TST_TS_TOPDIR" ]; then + TST_TS_TOPDIR="$(realpath "$(dirname "$0")/..")" + while [ "$TST_TS_TOPDIR" != "/" ]; do + [ -f "${TST_TS_TOPDIR}/tsuite" ] && break + TST_TS_TOPDIR="$(dirname "$TST_TS_TOPDIR")" + done + export TST_TS_TOPDIR +fi +source "${TST_TS_TOPDIR}/common/lib/common.sh" || exit 1 +############################################################################### + +g_tmpdir="$(mktemp -d)" +g_buildfile="$g_tmpdir/build.xml" +g_marker_file="$g_tmpdir/should_not_exist.txt" + +tc_setup() { + msg "this is tc_setup" + + # @预置条件: 安装软件包 + msg "CHECK: 安装 ant 软件包的命令即将执行, 实际值=ant" + assert_true yum install -y ant + + # @预置条件: 创建包含条件 fail 逻辑的 Ant 构建文件 + cat > "$g_buildfile" < + + + + + + unexpected success + + +EOF + + return 0 +} + +do_test() { + msg "this is do_test" + + # @测试步骤: 执行包含 fail 条件的 verify 目标 + # @预期结果: ant 命令执行失败,退出码非 0 + ant -f "$g_buildfile" verify > "$g_tmpdir/ant.out" 2>&1 + ret=$? + msg "CHECK: 执行 ant verify 的退出码, 实际值=$ret" + assert_false [ $ret -eq 0 ] + + # @测试步骤: 检查 fail 触发后后续 echo 是否未执行 + # @预期结果: 标记文件不存在 + msg "CHECK: 标记文件是否不存在, 实际值=$([ -f "$g_marker_file" ] && echo 存在 || echo 不存在)" + assert_true test ! -f "$g_marker_file" + + # @测试步骤: 检查输出中不应出现 BUILD SUCCESSFUL + # @预期结果: 输出不包含 BUILD SUCCESSFUL + grep -q -i "BUILD SUCCESSFUL" "$g_tmpdir/ant.out" + ret=$? + msg "CHECK: ant 输出不应包含 BUILD SUCCESSFUL, 实际值=$ret" + assert_true [ $ret -ne 0 ] + + return 0 +} + +tc_teardown() { + msg "this is tc_teardown" + rm -rfv "$g_tmpdir" || return 1 + return 0 +} + +############################################################################### +tst_main "$@" +###############################################################################