预期行为
从 {{./script/test}} 结果中出现的任何失败都会导致非零退出代码和在摘要中的某种失败指示。
这并不意味着我们快速失败,我们像现在一样运行所有可用的目标环境。
实际行为
摘要报告中报告了测试的环境数量(例如,{{在6个可能的js目标中测试了6个}}),但未在摘要中提供关于这些环境中失败的指示。
也总是以0退出。
因为 {{./script/test}} 产生了大量的输出,失败被隐藏在其中,所以当某个地方失败时很容易假设成功。
相关
CLJS-3098 - 这项工作应该与Windows上的Git Bash兼容
另见
{{./script/test-simple}}
分析
初步测试显示 {{./script/test-simple}} 没有运行,需要将 {{:main}} 添加到编译器选项中。
方法
- 将 {{./script/test}} 和 {{./script/test-simple}} 中的重复代码移动到共享的 {{./script/test-runner}}。
- 为每个测试目标生成一行摘要,说明成功、失败或跳过的状态。
- 如果没有失败并且至少有一个目标通过(考虑跳过的目标,如果没有全部跳过,则不介意),则以0退出(成功),否则以1退出(失败)。
- 调整关键字输出以便快速解析。
- 尊重 NO_COLOR (https://no-color.org/),因为有些人不喜欢带颜色的输出
屏幕截图
为了帮助审阅者,我包括了一些新摘要部分的屏幕截图。
成功
以下将返回退出状态 0
!success.png(图像)
success-with-skip.png!
带有 NO_COLOR
!success-nocolor.png!
失败
以下将返回退出状态 1
!fail.png(图像)
fail-with-success-and-skip.png(图像)
fail-with-success.png(图像)
fail-with-skip.png(图像)
fail-skip.png!
实现说明
- 从
\!\#/bin/sh
更改为 \!\#/bin/env bash
以使生活更加容易。我认为这不会引起争议,但认为值得提出。
- 没有将Windows {{script/test.ps1}} 纳入这项工作。
- 在Windows GraalVM上应用了 CLSJ-3098修复。
观察
- 持续集成没有运行 {{./script/test}}。作为一个打补丁程序,如果我知道我正在执行与CI相同的测试将是个好消息,但这将是一个单独工单的主题。
测试说明
脚本执行后,手动在以下平台上对结果进行验证
1. macOS Mojave
1. 通过本地Docker在linux上
1. 通过ssh连接到本地Windows虚拟机上的Windows 10
将这些脚本和结果日志附加到 cljs-3075...zip 文件中。这些脚本与我自己的设置相关,但也包括linux使用的Dockerfile。入口点是 {{verify.sh}}。
需要注意的是