ts (test script) 是一个轻量级的 shell 脚本测试框架,本文档详细介绍如何将 ts 工具适配到开源鸿蒙PC平台,包括环境搭建、构建过程、使用示例和常见问题解决方案。
📋 目录
一、项目概述
1.1 ts 工具介绍
ts 是一个轻量级的 shell 脚本测试框架,由 Simon Chiang 开发并维护。它提供了简洁的 API 和丰富的功能,使得编写和运行 shell 脚本测试变得简单高效。
核心特性:
- POSIX 兼容:完全遵循 POSIX 标准,可在任何 POSIX 兼容的 shell 中运行
- 测试隔离:每个测试都有独立的临时目录,确保测试之间互不干扰
- 灵活的断言:提供
assert_status和assert_output等断言函数 - 丰富的输出选项:支持彩色输出、调试模式、流式输出等多种格式
- 易于集成:可以单独运行测试脚本,也可以批量运行多个测试文件
主要功能:
- 测试脚本的编写和执行
- 测试结果的统计和报告
- 测试环境的自动清理
- 支持 setup 和 teardown 钩子函数
1.2 项目信息
| 项目信息 | 详情 |
|---|---|
| 项目名称 | ts (test script) |
| 版本 | 2.0.5(适配版本)<br>2.0.4(原始版本) |
| 许可证 | MIT License |
| 源码仓库 | https://github.com/thinkerbot/ts |
| 适配平台 | 鸿蒙PC (aarch64-linux-ohos) |
| 项目类型 | 纯 Shell 脚本(无需编译) |
| 依赖 | 无外部依赖 |
1.3 为什么需要 ts?
在日常 shell 脚本开发中,我们经常需要:
- ✅ 验证脚本功能:确保脚本按预期工作
- ✅ 回归测试:修改后快速验证功能未破坏
- ✅ 文档化行为:测试即文档,清晰说明脚本功能
- ✅ CI/CD 集成:自动化测试流程
ts 提供了简洁的 API 和丰富的功能,让 shell 脚本测试变得简单高效。
二、鸿蒙化适配设计
2.1 适配目标
🎯 核心目标:将 ts 测试框架适配到开源鸿蒙PC平台,使其能够在鸿蒙PC终端环境中正常运行,为鸿蒙生态的 shell 脚本测试提供支持。
适配价值:
- ✅ 为鸿蒙PC提供专业的 shell 脚本测试工具
- ✅ 提升 shell 脚本开发的测试效率和质量
- ✅ 展示纯脚本项目的鸿蒙化适配方法
2.2 技术方案
2.2.1 架构分析
ts 是一个纯 shell 脚本项目,不依赖任何编译型语言或外部库,这大大简化了适配工作:
ts 项目结构:
├── bin/
│ └── ts # 主可执行脚本(POSIX shell)
├── man/
│ └── man1/
│ └── ts.1 # 手册页
├── test/ # 测试用例目录
├── hnp.json # HNP 包配置文件
└── build_ohos.sh # 鸿蒙构建脚本
2.2.2 适配策略
由于 ts 是纯 shell 脚本,适配工作主要包括:
- 脚本兼容性检查:确保脚本符合 POSIX 标准,能在鸿蒙PC的 shell 环境中运行
- 路径适配:确保脚本中的路径处理符合鸿蒙PC的文件系统规范
- 打包配置:创建 HNP(HarmonyOS Native Package)包配置文件
- 构建脚本:编写自动化构建脚本,支持交叉编译环境
2.3 构建系统设计
2.3.1 构建流程
构建流程:
1. 环境准备
├── 设置交叉编译工具链(clang/llvm)
├── 配置目标平台(aarch64-linux-ohos)
└── 设置安装路径
2. 文件复制
├── 复制 bin/ts 到目标目录
├── 复制 man 手册页
└── 复制 hnp.json 配置文件
3. 权限设置
└── 设置可执行权限
4. 打包
├── 生成 HNP 包(.hnp)
└── 生成 tar.gz 压缩包
2.3.2 关键配置
HNP 包配置(hnp.json):
{
"type": "hnp-config",
"name": "ts",
"version": "2.0.5",
"install": {}
}
构建脚本关键变量:
| 变量名 | 说明 | 示例值 |
|---|---|---|
HNP_PUBLIC_PATH | HNP 包的公共安装路径 | /data/service/hnp/ |
TS_INSTALL_HNP_PATH | ts 的安装路径 | /data/service/hnp/ts.org/ts_2.0.5 |
TARGET_PLATFORM | 目标平台 | aarch64-linux-ohos |
ARCHIVE_PATH | 打包输出路径 | output/ |
三、实现细节
💡 提示:
ts是纯 shell 脚本项目,无需编译,适配工作主要是文件复制和权限设置。
3.1 构建脚本实现
构建脚本 build_ohos.sh 的核心逻辑:
#!/bin/bash
# ts OpenHarmony build script
# ts is a shell script testing framework
set -e
export TS_INSTALL_HNP_PATH=${HNP_PUBLIC_PATH}/ts.org/ts_2.0.5
# 创建安装目录
mkdir -p ${TS_INSTALL_HNP_PATH}/bin
mkdir -p ${TS_INSTALL_HNP_PATH}/share/man/man1
# 复制 ts 可执行脚本
cp bin/ts ${TS_INSTALL_HNP_PATH}/bin/
chmod +x ${TS_INSTALL_HNP_PATH}/bin/ts
# 复制手册页
if [ -d man/man1 ]; then
cp -r man/man1 ${TS_INSTALL_HNP_PATH}/share/man/
fi
# 复制HNP配置文件
cp hnp.json ${TS_INSTALL_HNP_PATH}/
# 打包HNP和tar.gz
${HNP_TOOL} pack -i ${TS_INSTALL_HNP_PATH} -o ${ARCHIVE_PATH}/
tar -zvcf ${ARCHIVE_PATH}/ohos_ts_2.0.5.tar.gz ts_2.0.5/
3.2 兼容性处理
3.2.1 POSIX 兼容性
ts 脚本本身已经严格遵循 POSIX 标准,主要特点:
- 使用
#!/bin/shshebang,而非 bash 特定语法 - 避免使用 bash 特有的扩展功能
- 使用标准的 shell 内置命令和工具
3.2.2 路径处理
脚本中的路径处理已经考虑了跨平台兼容性:
# 使用相对路径和环境变量
TS_USR_DIR="${TS_USR_DIR:-$(pwd)}"
TS_TMP_DIR="${TS_TMP_DIR:-$TS_USR_DIR/tmp}"
3.3 构建环境配置
在主构建脚本 build.sh 中配置的关键环境变量:
# 交叉编译工具链
export CC=${COMPILER_TOOLCHAIN}clang
export CXX=${COMPILER_TOOLCHAIN}clang++
# 目标平台
export TARGET_PLATFORM=aarch64-linux-ohos
export SYSROOT=${OHOS_SDK}/native/sysroot
# HNP 工具和路径
export HNP_TOOL=${OHOS_SDK}/toolchains/hnpcli
export HNP_PUBLIC_PATH=${HNP_PERFIX}/data/service/hnp/
四、构建与部署
4.1 构建命令
在 macOS 开发环境中执行交叉编译:
cd HarmonyOSPC/build
./build.sh --sdk /Users/lijiajun/ohos-sdk
4.2 构建输出
构建成功后,会在 output/ 目录生成以下文件:
output/
├── ts.hnp # HNP 包文件(9.8KB)
└── ohos_ts_2.0.5.tar.gz # tar.gz 压缩包(9.6KB)
4.3 安装路径
在鸿蒙PC上的安装路径结构:
/data/service/hnp/ts.org/ts_2.0.5/
├── bin/
│ └── ts # 主可执行脚本
├── share/
│ └── man/
│ └── man1/
│ └── ts.1 # 手册页
└── hnp.json # HNP 配置文件
五、使用示例

5.1 基本使用
5.1.1 编写测试脚本
创建一个简单的测试脚本 example_test:
在鸿蒙PC上创建测试脚本:
# 创建测试脚本文件
cat > example_test << 'EOF'
#!/bin/sh
setup () {
mkdir -p "$ts_test_dir"
echo "Setup completed"
}
teardown () {
rm -rf "$ts_test_dir"
echo "Teardown completed"
}
test_arithmetic () {
result=$((2 + 2))
assert_status 0 $?
assert_output "4" "$result"
}
test_file_operations () {
echo "test content" > "$ts_test_dir/test_file.txt"
assert_status 0 $?
test -f "$ts_test_dir/test_file.txt"
assert_status 0 $?
}
test_hello_world () {
echo "Hello World"
assert_status 0 $?
}
. ts
EOF
# 设置执行权限
chmod +x example_test
脚本内容说明:
#!/bin/sh:shebang 行,虽然鸿蒙PC上没有sh命令,但 ts 框架内部会处理setup ():测试前的初始化函数(可选)teardown ():测试后的清理函数(可选)test_*:测试函数,以test_开头$ts_test_dir:ts 框架提供的测试临时目录. ts:加载 ts 测试框架(必须放在脚本末尾)
注意:在鸿蒙PC上执行此脚本时,需要使用 bash example_test 而不是 ./example_test(如果遇到权限问题)。
5.1.2 运行测试
运行单个测试脚本:
# 方式1:使用 bash 执行脚本(鸿蒙PC推荐方式,最可靠)
bash example_test
# 输出示例:
# ✓ test_arithmetic (0.001s)
# ✓ test_file_operations (0.002s)
# 2 pass 0 fail 0 skip 0 s
# 方式2:直接执行(如果文件系统支持执行权限)
chmod +x example_test
./example_test
# 方式3:使用 ts 命令(注意:在鸿蒙PC上可能无法识别文件可执行性)
# 如果遇到 "[example_test] not executable" 错误,请使用方式1
ts example_test
# 或使用 ts 命令的彩色输出
ts -c example_test
重要说明(鸿蒙PC特殊限制):
在鸿蒙PC上,由于文件系统限制,ts 命令可能无法正确识别脚本的可执行性,即使已经使用 chmod +x 设置了权限。如果遇到 [example_test] not executable 错误:
- ✅ 推荐解决方案:使用
bash example_test直接执行脚本 - ⚠️ ts 命令限制:
ts example_test需要文件系统支持传统的执行权限检查,某些鸿蒙PC文件系统可能不支持
运行多个测试脚本:
# 方式1:使用 bash 逐个执行(鸿蒙PC推荐)
for test_file in test/*.sh; do
bash "$test_file"
done
# 方式2:使用 ts 命令(如果文件系统支持执行权限检查)
ts test/*.sh
运行单个测试用例:
bash example_test test_arithmetic
# 或
./example_test test_arithmetic # 如果已设置执行权限
5.2 高级功能
5.2.1 显示测试输出内容
默认情况下,ts 框架会过滤测试输出,只显示测试结果。如果想看到测试中的 echo、printf 等输出内容(如 “Hello World”),可以使用以下选项:
# 使用 -v 选项显示详细输出(包括 stderr,推荐)
bash example_test -v
# 使用 -a 选项显示所有测试的输出
bash example_test -a
# 使用 -s 选项流式输出(实时显示每个测试的输出)
bash example_test -s
# 使用 -w 选项显示原始输出(不格式化,最详细)
bash example_test -w
示例:Hello World 输出测试
# 创建包含输出的测试脚本
cat > hello_test.sh << 'EOF'
#!/bin/sh
test_hello () {
echo "Hello World"
echo "This is a test output"
printf "Number: %d\n" 42
assert_status 0 $?
}
. ts
EOF
# 默认输出(不显示 echo 内容)
bash hello_test.sh
# 输出:
# ✓ test_hello (0.001s)
# 1 pass 0 fail 0 skip 0 s
# 使用 -v 选项查看输出内容(推荐)
bash hello_test.sh -v
# 输出:
# Hello World
# This is a test output
# Number: 42
# ✓ test_hello (0.001s)
# 1 pass 0 fail 0 skip 0 s
5.2.2 彩色输出
bash example_test -c
# 或
ts -c example_test # 如果文件系统支持执行权限检查
输出示例:
✓ test_arithmetic (0.001s)
✓ test_file_operations (0.002s)
2 pass 0 fail 0 skip 0 s
5.2.1.1 显示测试输出内容
默认情况下,ts 框架会过滤测试输出,只显示测试结果。如果想看到测试中的 echo、printf 等输出内容,可以使用以下选项:
# 使用 -v 选项显示详细输出(包括 stderr,推荐)
bash example_test -v
# 使用 -a 选项显示所有测试的输出
bash example_test -a
# 使用 -s 选项流式输出(实时显示每个测试的输出)
bash example_test -s
# 使用 -w 选项显示原始输出(不格式化,最详细)
bash example_test -w
示例:Hello World 输出测试
# 创建测试脚本
cat > hello_test.sh << 'EOF'
#!/bin/sh
test_hello () {
echo "Hello World"
echo "This is a test output"
printf "Number: %d\n" 42
assert_status 0 $?
}
. ts
EOF
# 默认输出(不显示 echo 内容)
bash hello_test.sh
# 输出:
# ✓ test_hello (0.001s)
# 1 pass 0 fail 0 skip 0 s
# 使用 -v 选项查看输出内容
bash hello_test.sh -v
# 输出:
# Hello World
# This is a test output
# Number: 42
# ✓ test_hello (0.001s)
# 1 pass 0 fail 0 skip 0 s
5.2.2 调试模式
ts -d example_test
会显示详细的执行跟踪信息,帮助定位问题。
5.2.3 流式输出
ts -s example_test
实时显示测试进度,适合长时间运行的测试套件。
5.2.4 执行单个测试(不运行测试框架)
bash example_test -e test_arithmetic
# 或
./example_test -e test_arithmetic # 如果已设置执行权限
直接执行测试函数,方便调试。
5.3 实际应用场景
5.3.1 系统脚本测试
测试系统管理脚本:
#!/bin/sh
test_backup_script () {
# 使用 ts_test_dir 而不是 /tmp(鸿蒙PC上 /tmp 不可用)
backup_dir="$ts_test_dir/test_data"
mkdir -p "$backup_dir"
bash backup.sh "$backup_dir"
assert_status 0 $?
test -f "$backup_dir/backup.tar.gz"
assert_status 0 $?
}
. ts
5.3.2 工具链测试
测试开发工具链:
#!/bin/sh
test_compiler () {
echo 'int main(){return 0;}' > "$ts_test_dir/test.c"
clang "$ts_test_dir/test.c" -o "$ts_test_dir/test"
assert_status 0 $?
"$ts_test_dir/test"
assert_status 0 $?
}
. ts
5.3.3 配置文件验证
测试配置文件格式:
#!/bin/sh
test_config_syntax () {
config_file="$ts_test_dir/app.conf"
echo "key=value" > "$config_file"
# 验证配置格式
grep -q "key=value" "$config_file"
assert_status 0 $?
}
. ts
六、技术亮点
6.1 零依赖适配
ts 作为纯 shell 脚本项目,适配到鸿蒙PC平台无需任何编译步骤,只需要:
- 文件复制
- 权限设置
- 打包分发
这使得适配过程非常简洁高效。
6.2 POSIX 标准兼容
严格遵循 POSIX 标准确保了:
- 跨平台兼容性
- 长期维护性
- 与鸿蒙PC shell 环境的完美兼容
6.3 轻量级设计
- 单个脚本文件,易于部署
- 无外部依赖,降低维护成本
- 快速启动,适合 CI/CD 集成
七、总结
7.1 适配成果
成功将 ts 测试框架适配到开源鸿蒙PC平台:
- ✅ 完成构建脚本编写
- ✅ 生成 HNP 包和 tar.gz 压缩包
- ✅ 验证脚本在目标平台的兼容性
- ✅ 提供完整的使用文档和示例
7.2 技术价值
- 生态完善:为鸿蒙PC提供了专业的 shell 脚本测试工具
- 开发效率:提升 shell 脚本开发的测试效率和质量
- 最佳实践:展示了纯脚本项目的鸿蒙化适配方法
7.3 后续优化方向
- 性能优化:针对大规模测试套件的性能优化
- 功能扩展:添加更多断言函数和测试工具
- 集成支持:与鸿蒙PC的 CI/CD 系统深度集成
八、鸿蒙PC终端测试指南
8.1 快速测试验证
在鸿蒙PC终端中,可以通过以下步骤快速验证 ts 工具:
🚀 一键复制执行(推荐)
直接复制以下代码块到鸿蒙PC终端,一键完成所有测试:
# ============================================
# ts 工具一键测试脚本
# 直接复制整个代码块到鸿蒙PC终端执行
# ============================================
echo "=========================================="
echo "ts 工具快速测试验证"
echo "=========================================="
echo ""
# 1. 验证 ts 命令
echo "[1/5] 验证 ts 命令..."
TS_PATH=$(which ts)
if [ -n "$TS_PATH" ]; then
echo "✓ ts 命令找到: $TS_PATH"
else
echo "✗ ts 命令未找到,请检查安装"
exit 1
fi
echo ""
# 2. 查看帮助信息
echo "[2/5] 查看帮助信息..."
ts -h | head -15
echo ""
# 3. 创建测试脚本
echo "[3/5] 创建测试脚本..."
cat > test_demo.sh << 'EOF'
#!/bin/sh
test_simple () {
true
}
. ts
EOF
echo "✓ 测试脚本已创建: test_demo.sh"
echo ""
# 4. 显示脚本内容
echo "[4/5] 测试脚本内容:"
cat test_demo.sh
echo ""
# 5. 运行测试
echo "[5/5] 运行测试..."
echo "----------------------------------------"
bash test_demo.sh
echo "----------------------------------------"
echo ""
echo "=========================================="
echo "✓ 测试完成!"
echo "=========================================="
echo ""
echo "如果看到 '✓ test_simple' 和 '1 pass 0 fail 0 skip',说明测试成功!"
echo "测试脚本位置: $(pwd)/test_demo.sh"
echo "可以继续使用此脚本进行更多测试"
分步执行方式:
如果需要分步执行,可以使用以下方法:
方法一:分步执行(推荐,更可靠)
# 1. 验证 ts 命令可用
which ts
# 应该输出:/data/service/hnp/bin/ts 或类似路径
# 2. 查看帮助信息
ts -h
# 或
ts --help
# 3. 切换到用户目录(鸿蒙PC上 /tmp 可能不可用)
cd ~
# 或使用当前目录
pwd
# 4. 创建简单测试脚本(使用 echo 方式,最可靠)
echo '#!/bin/sh' > test_demo.sh
echo 'test_simple () {' >> test_demo.sh
echo ' true' >> test_demo.sh
echo '}' >> test_demo.sh
echo '. ts' >> test_demo.sh
# 5. 设置执行权限
chmod +x test_demo.sh
# 6. 验证文件已创建
ls -l test_demo.sh
# 7. 运行测试(使用 bash 执行,鸿蒙PC推荐方式)
bash test_demo.sh
# 预期输出(成功标志):
# ✓ test_simple (0.001s)
# 1 pass 0 fail 0 skip 0 s
# 或者如果设置了执行权限,可以尝试:
# ./test_demo.sh
# 8. 验证测试结果(可选)
# 如果看到上述输出,说明测试成功!
# 可以查看脚本内容确认:
cat test_demo.sh
# 应该显示:
# #!/bin/sh
# test_simple () {
# true
# }
# . ts
注意: 在鸿蒙PC上,/tmp 目录可能不存在或不可访问。建议在用户主目录(~)或当前工作目录创建测试脚本。
方法二:使用 echo 命令创建(最简单,推荐)
# 1. 确保在可写目录中
cd ~
pwd
# 2. 创建测试脚本(在当前目录,避免 /tmp 权限问题)
echo '#!/bin/sh' > test_demo.sh
echo 'test_simple () {' >> test_demo.sh
echo ' true' >> test_demo.sh
echo '}' >> test_demo.sh
echo '. ts' >> test_demo.sh
# 3. 验证文件已创建
ls -l test_demo.sh
# 4. 设置执行权限
chmod +x test_demo.sh
# 5. 执行测试(注意:鸿蒙PC上没有 sh 命令,必须使用 bash)
# 方法A:使用 bash 执行(推荐,鸿蒙PC上必须用这个)
bash test_demo.sh
# 方法B:如果设置了执行权限,可以尝试直接执行
chmod +x test_demo.sh
./test_demo.sh
# 注意:不要使用 sh test_demo.sh,因为鸿蒙PC上没有 sh 命令
# 成功输出示例:
# ✓ test_simple (0.001s)
# 1 pass 0 fail 0 skip 0 s
方法三:使用 printf(一行命令,推荐使用 bash 执行)
# 在当前目录创建并执行(使用 bash,鸿蒙PC上没有 sh)
printf '#!/bin/sh\ntest_simple () {\n true\n}\n. ts\n' > test_demo.sh && bash test_demo.sh
# 或者分步执行:
printf '#!/bin/sh\ntest_simple () {\n true\n}\n. ts\n' > test_demo.sh
bash test_demo.sh # 使用 bash 执行(鸿蒙PC必须用 bash,没有 sh)
常见问题排查:
-
/tmp目录不可用:- 在鸿蒙PC上,
/tmp目录可能不存在或不可访问 - 解决方案:使用用户主目录(
~)或当前工作目录创建脚本
cd ~ # 然后使用上述方法创建脚本 - 在鸿蒙PC上,
-
检查当前目录权限:
pwd ls -la -
验证 ts 命令路径:
which ts # 应该输出:/data/service/hnp/bin/ts -
测试脚本执行成功标志:
-
✅ 成功输出:看到以下内容表示测试成功!
✓ test_simple (0.001s) 1 pass 0 fail 0 skip 0 s解读:
✓= 测试通过(绿色对勾)test_simple= 测试函数名(0.001s)= 测试耗时1 pass= 1个测试通过0 fail= 0个失败0 skip= 0个跳过0 s= 总耗时(秒)
-
❌ 失败输出示例:如果测试失败,会看到类似:
✗ test_simple (0.001s) 0 pass 1 fail 0 skip 0 s -
⚠️ 权限错误(Permission denied):
- 问题:看到
bash: ./test_demo.sh: Permission denied或Permission denied - 解决步骤:
- 检查文件权限:
ls -l test_demo.sh - 设置执行权限:
chmod +x test_demo.sh - 再次检查权限:
ls -l test_demo.sh(应该看到-rwxr-xr-x或类似) - 重要:如果还是不行,使用
bash执行(鸿蒙PC上没有sh命令):# 使用 bash 执行(推荐,鸿蒙PC必须用这个) bash test_demo.sh - 如果文件系统不支持执行权限(如某些只读或特殊挂载),使用
bash test_demo.sh代替./test_demo.sh
- 检查文件权限:
- 问题:看到
-
⚠️
sh: command not found错误:- 问题:鸿蒙PC上没有
sh命令 - 解决方案:使用
bash代替sh
# 错误:sh test_demo.sh # 会报错:bash: sh: command not found # 正确:bash test_demo.sh # 使用 bash 执行 - 问题:鸿蒙PC上没有
-
⚠️
[example_test] not executable错误(使用 ts 命令时):- 问题:使用
ts example_test时出现[example_test] not executable错误 - 原因:ts 命令使用
[ -x file ]检查文件可执行性,某些鸿蒙PC文件系统不支持此检查 - 解决方案:
# 错误:ts example_test # 可能报错:[example_test] not executable # 正确:bash example_test # 直接使用 bash 执行,绕过 ts 的可执行性检查 - 说明:
bash example_test方式在鸿蒙PC上最可靠,推荐使用此方式
- 问题:使用
-
-
验证脚本内容:
cat test_demo.sh # 应该显示完整的脚本内容
8.2 实际测试示例
示例1:测试文件操作
# 创建测试目录
mkdir -p ~/test
cd ~/test
# 创建测试脚本
cat > test_file.sh << 'EOF'
#!/bin/sh
setup () {
mkdir -p "$ts_test_dir"
}
test_create_file () {
echo "test" > "$ts_test_dir/file.txt"
test -f "$ts_test_dir/file.txt"
assert_status 0 $?
}
. ts
EOF
# 设置权限并运行(使用 bash 执行,鸿蒙PC推荐方式)
chmod +x test_file.sh
bash test_file.sh
# 或者使用 ts 命令运行
ts test_file.sh
示例2:测试字符串操作
# 在测试目录中创建脚本
cat > test_string.sh << 'EOF'
#!/bin/sh
test_string_match () {
str="hello world"
assert_output "hello world" "$str"
}
. ts
EOF
# 设置权限并运行
chmod +x test_string.sh
# 方式1:使用 bash 执行
bash test_string.sh
# 方式2:使用 ts 命令(彩色输出)
ts -c test_string.sh
# 方式3:使用 ts 命令(流式输出)
ts -s test_string.sh
8.3 详细测试指南
更多详细的测试示例和说明,请参考:鸿蒙PC终端测试指南.md
九、参考资料
📚 官方文档
- ts 项目主页 - ts 工具官方仓库
- ts 使用手册 - 完整的使用文档
- POSIX Shell 标准 - POSIX Shell 规范
🔗 鸿蒙相关
📖 相关文章
📎 附录
A. 📁 完整文件清单
📝 创建的文件:
- 🔧
build_ohos.sh- OpenHarmony构建脚本 - 📝
hnp.json- HNP包配置文件 - 📄
CHANGELOG- 变更日志(添加鸿蒙PC适配信息) - 📄
README.OPENSOURCE- 开源说明文档
📝 修改的文件:
- 🔧
build_ohos.sh- 配置HNP包打包(纯Shell脚本,无需编译)
📦 生成的文件:
- 📦
output/ts.hnp- HNP格式安装包 - 📦
output/ohos_ts_2.0.5.tar.gz- tar.gz格式发布包
B. 💻 参考命令
# 构建命令
cd /Users/lijiajun/ohos-sdk/HarmonyOSPC/build
SPECIFIC_DIR=ts4oh ./build.sh --sdk /Users/lijiajun/ohos-sdk
# 查看构建输出
ls -lh output/ | grep ts
# 验证安装目录
tree ${HNP_PUBLIC_PATH}/ts.org/ts_2.0.5/
# 验证脚本文件格式(在macOS上)
file ${HNP_PUBLIC_PATH}/ts.org/ts_2.0.5/bin/ts
# 应该显示: POSIX shell script text executable
# 测试命令(在鸿蒙PC上)
export PATH=${HNP_PUBLIC_PATH}/ts.org/ts_2.0.5/bin:$PATH
ts -h
bash example_test
bash example_test -v
bash example_test -c
# 如果出现"command not found"错误,检查:
# 1. HNP包是否正确合入base.hnp
# 2. 文件是否在sysroot/bin/目录下
# 3. PATH环境变量是否包含sysroot/bin
C. 📌 版本信息
- 📁 ts版本: 2.0.5
- 📅 适配日期: 2025-12-09
- 🎯 目标平台: aarch64-linux-ohos
- 🔧 项目类型: POSIX Shell脚本(无需编译)
- 📦 依赖数量: 零运行时依赖(纯Shell脚本)
- 🔗 源仓库地址: https://github.com/thinkerbot/ts
- 🔗 适配完成仓库地址: https://gitcode.com/szkygc/ts4oh
D. 📚 相关资源
- 🌐 ts GitHub仓库: https://github.com/thinkerbot/ts
- 📖 POSIX Shell标准: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html
- 🌐 OpenHarmony PC开发者专区: https://gitcode.com/OpenHarmonyPCDeveloper
- 🌐 HarmonyOS PC 开发者社区: https://harmonypc.youkuaiyun.com/content
E. 💡 技术说明
Shell测试框架简介:
ts提供了强大的Shell脚本测试能力:
- 测试隔离: 每个测试都有独立的临时目录,确保测试之间互不干扰
- 断言函数: 提供
assert_status和assert_output等断言函数 - 输出选项: 支持监控模式、流式模式、原始模式等多种输出格式
- 调试支持: 提供调试模式,显示详细的执行跟踪信息
ts的优势:
- ✅ 零依赖:纯Shell脚本,无需任何外部依赖
- ✅ POSIX兼容:完全遵循POSIX标准,可在任何POSIX兼容的shell中运行
- ✅ 易于使用:简单的测试函数定义语法
- ✅ 灵活输出:支持多种输出格式和颜色支持
🎉 结语
本文档详细介绍了ts Shell测试框架在鸿蒙PC平台上的适配过程。通过配置HNP包打包、确保脚本兼容性等问题,成功实现了ts在鸿蒙PC平台上的部署。
ts工具为Shell脚本开发提供了强大的测试支持,是开发可靠脚本工具的重要基础框架。希望本文档能够帮助开发者:
- 📊 理解Shell脚本测试的使用
- 🔧 掌握Shell脚本项目适配OpenHarmony的方法
- 📦 了解HNP包的构建和打包流程
- 💻 学习命令行工具的开发实践
💬 如有问题或建议,欢迎反馈!
697

被折叠的 条评论
为什么被折叠?



