3个不稳定版本
0.4.1 | 2024年3月26日 |
---|---|
0.4.0 | 2024年2月8日 |
0.3.0 | 2024年2月8日 |
在 文本处理 中排名第 93
每月下载量 805
14KB
242 行
Bashtestmd
将包含Bash代码块的Markdown文件编译成单个Bash脚本,用于CI测试目的。
基本用法
以下命令解析输入Markdown文件中的所有代码块,并生成一个包含所有标记为指定 TAG_NAME
的块的脚本。
bashtestmd --input {PATH_TO_INPUT_FILE} --output {OUTPUT_FILE_NAME} --tag {TAG_NAME}`.
例如,bashtestmd --input README.md --output demo-readme.sh --tag test-ci
将查找所有此类代码块并生成一个运行它们的脚本,每个命令都必须以状态码 0
退出。
```sh,test-ci
$ echo "This is a demo"
```
请注意,bashtestmd
只解释以 $
开头的行作为命令。这允许将输出包含在片段中,而不会损害生成的脚本。
```sh,test-ci
$ echo "This is a demo"
This is a demo
```
支持的标签
bashtestmd
支持以下代码块的可选标签
bashtestmd:compare-output
bashtestmd:exit-code-ignore
bashtestmd:exit-code="{EXPECTED_CODE}"
bashtestmd:long-running
bashtestmd:wait-until="{TEXT}"
比较输出
标签 bashtestmd:compare-output
会导致生成的脚本检查命令输出是否与Markdown文件中的输出匹配。
例如,如果服务器在响应对 localhost:80/hello
的查询时返回 "goodbye"
而不是预期的 "hello, world"
,则此命令将失败。
```sh,test-ci,bashtestmd:compare-output`
$ curl localhost:80/hello
"hello, world"
```
忽略退出代码
标签 bashtestmd:exit-code-ignore
使得 bashtestmd
忽略命令的退出码,而不是强制代码必须是 0
退出码
标签 bashtestmd:exit-code="{CODE}"
使得 bashtestmd
检查命令的退出码是否与提供的值匹配
```sh,test-ci,bashtestmd:exit-code="1"`
$ rm this_file_does_not_exist.txt
rm: this_file_does_not_exist.txt: No such file or directory
```
长时间运行
标签 bashtestmd:long-running
使得命令在后台运行,并等待 120 秒以完成任务完成。强烈建议将 long-running
与 wait-until
结合使用,以覆盖此默认行为。
例如,以下命令编译为 cargo run &; sleep 120
```sh,test-ci,bashtestmd:long-running`
$ cargo run
```
等待直到
标签 bashtestmd:wait-until={SOME_TEXT}
将导致脚本在继续之前等待进程输出预期的文本,而不是简单地睡眠两分钟。请注意,此命令 需要 long-running
标签才能生效。
```sh,test-ci,bashtestmd:long-running,bashtestmd:wait-until="Finished release"`
$ cargo build --release
```
本地安装
为本地开发设置 bashtestmd
git clone https://github.com/Sovereign-Labs/bashtestmd.git
cargoinstall --pathbashtestmd/
依赖关系
~3MB
~62K SLoC