2024 年 Clojure 状态调查! 中 sharing您的想法。

欢迎!请参阅 关于 页面,了解有关此操作的更多信息。

0投票
ClojureScript
预期行为

从 {{./script/test}} 产生的任何失败都会导致非零退出代码,并在摘要中给出失败指示。
这并不意味着我们快速失败,我们仍然按照目前的方式运行所有可用的目标环境。

实际行为

摘要确实报告了测试的环境数量(例如,{{测试了6个可能的目标中的6个js}}),但未在摘要中说明这些环境中的失败。
但也总是退出为0。
因为 {{./script/test}} 会生成大量输出,失败信息被埋藏在其中,因此很容易在出现失败时假设成功。

相关

CLJS-3098 - 此工作应与 Windows 的 Git Bash 兼容

另请参阅

{{./script/test-simple}}

分析

初步测试表明,{{./script/test-simple}} 没有运行,需要向编译器选项添加 {{:main}}。

方法
  1. 将 {{./script/test}} 和 {{./script/test-simple}} 中的重复代码移动到共享的 {{./script/test-runner}}。
  2. 为每个测试目标产生一行摘要,传达通过、失败或跳过的状态。
  3. 如果没有失败并且至少有一个目标通过(考虑目标跳过,如果并不是所有都跳过,则没问题),则退出为0(成功),否则退出为1(失败)。
  4. 为快速解析着色关键输出。
  5. 尊重 NO_COLOR(《https://no-color.org/》)对于不喜欢着色输出的人来说
屏幕截图

为了帮助审阅者,我包含了新摘要部分的几个屏幕截图。

成功

以下将返回退出状态0
!success.png(image
)success-with-skip.png!

带 NO_COLOR
!success-nocolor.png!

失败

以下将返回退出状态1
!fail.png(image
)fail-with-success-and-skip.png(image
)fail-with-success.png(image
)fail-with-skip.png(image
)fail-skip.png!

实施说明
  1. \!\#/bin/sh 更改为 \!\#/bin/env bash 以使生活更轻松。我不认为这是有争议的,但认为值得提出。
  2. 此工作没有考虑 Windows 中的 {{script/test.ps1}}。
  3. 将 CLSJ-3098 修复程序应用于 Windows 的 GraalVM。
观察
  1. 持续集成不运行 {{./script/test}}。作为补丁程序,知道我正在执行与 CI 相同的测试将很好,但这将是另一个问题票的主题。
测试说明

在以下平台上执行脚本执行并手动验证结果
1. macOS Mojave
1. 通过本地 Docker 实现的 linux
1. 通过 ssh 连接到本地 Windows 机器的 Windows 10

脚本项目和生成的日志已附在 cljs-3075...zip 文件中。这些脚本针对我的配置,但包括用于 linux 的 Dockerfile。入口点是 {{verify.sh}}。

值得注意的是
1. 在测试中对修补版应用了CLJS-3098 {{bin/cljsc}} 和 {{bin/classpath_conv}},以支持Windows运行。副作用是这也解决了由于文件编码不是utf-8而在我的特定Linux安装上测试失败的问题。
1. 之前的此补丁之前,{{script/test}} 在Windows上不起作用,并且在应用CLSJ-3098之前它仍然将在Windows上不起作用。

7 个回答

0投票

评论者:lread

请参阅JIRA描述以获取详细信息。

0投票

评论者:mfikes

这是Lee的第一个补丁。他被列为签署了CA。

0投票

评论者:mfikes

CLJS-3075.patch添加到Patch Tender (i)

0投票

评论者:lread

我还会回来。这个需要对Windows上的Git Bash进行微调才能兼容。

0投票

评论者:lread

添加了CLSJ-3075-2.patch,其中包括
* 包括CLJS-3098修复用于Windows的GraalVM
丢弃了有争议的bash {{eval}}的使用
* 修复了grep失败问题的解决方案。请参阅{{CLSJ-3114}}

0投票

评论者:lread

好的,这一项已经准备好供审查。我觉得可视化做得不够好,所以我在描述中添加了一些,希望能使审查更轻松。谢谢,并请告诉我您的看法。

0投票
...