debian

如何通过Debian Strings实现自动化测试

小樊
38
2025-11-18 15:38:11
栏目: 智能运维

概念澄清与适用范围

实现思路

示例脚本与用法

#!/usr/bin/env bash
set -euo pipefail

EXE="build/myapp"
ARCHIVE="dist/myapp-1.2.3.tar.gz"

fail() { echo "FAIL: $*"; exit 1; }

# 1) 可执行文件必须存在
[[ -x "$EXE" ]] || fail "Missing executable: $EXE"

# 2) 版本号断言
version=$(strings "$EXE" | grep -E '^myapp version [0-9]+\.[0-9]+\.[0-9]+$' | head -n1)
[[ -n "$version" ]] || fail "Version string not found in $EXE"
[[ "$version" == "myapp version 1.2.3" ]] || fail "Version mismatch: got '$version'"

# 3) 许可证断言
grep -q "SPDX-License-Identifier: MIT" "$EXE" || fail "MIT license string not found in $EXE"

# 4) 压缩包内文件与字符串断言
[[ -f "$ARCHIVE" ]] || fail "Missing archive: $ARCHIVE"
tar -tzf "$ARCHIVE" | grep -q "myapp" || fail "myapp not found in $ARCHIVE"
strings "$ARCHIVE" | grep -q "Built-by: ci-runner" || fail "Build metadata missing in $ARCHIVE"

echo "All string checks passed."

在 CI 中集成

name: Strings Check
on: [push, pull_request]
jobs:
  strings:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install build deps
        run: sudo apt-get update && sudo apt-get install -y build-essential
      - name: Build
        run: |
          make          # 或你的构建命令,确保生成 build/myapp 与 dist/*.tar.gz
      - name: Install strings
        run: sudo apt-get install -y binutils  # strings 属于 binutils
      - name: Run strings checks
        run: bash check_strings.sh

进阶用法与注意事项

0
看了该问题的人还看了