2024 Clojure 状态调查!中分享您的想法。

欢迎!有关如何工作的更多信息,请参阅关于页面。

0
ClojureScript
期望行为

{{./script/test}}的结果任何失败都会导致退出码非零,并在摘要中给出某种失败指示。
这并不意味着我们快速失败,我们像目前一样运行所有可用的目标环境。

实际行为

摘要报告了测试的环境数量(例如,{{测试了6个可能的js目标中的6个}}),但在摘要中没有提供那些环境中失败的指示。
也总是退出码为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. 为Windows上的GraalVM应用了CLSJ-3098修复。
观察结果
  1. 持续集成不运行{{./script/test}}。作为一个补丁程序,我最好知道我在执行与CI相同的测试,但这将是另一个单独问题的话题。
测试说明

脚本执行后在以下系统上手动验证结果:
1. macOS Mojave
1. 通过本地Docker在linux上
1. 通过SSH到本地Windows VM在Windows 10上

这些脚本的执行结果和日志已附加在公公js-3075...zip文件中。这些脚本针对我的设置,但包括用于linux的Dockerfile。入口点是{{verify.sh}}。

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

7 个答案

0

评论者:lread

请查看JIRA描述以获取详细信息。

0

评论者:mfikes

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

0

评论者:mfikes

将CLJS-3075.patch添加到补丁者列表(i)

0

评论者:lread

我将回来处理这个问题。它需要一个调整以与Windows上的Git Bash兼容。

0

评论者:lread

添加了CLSJ-3075-2.patch,其中
包括对Windows上GraalVM的CLJS-3098修复
消除了对有争议的bash {{eval}}的使用
*修复了grep失败问题的功能。请参阅{{CLSJ-3114}}

0

评论者:lread

好的,这个已经准备好供审查。我认为可视化不足,所以我在描述中添加了一些,希望能使审查更容易。谢谢,并告诉我您的看法。

0
参考: https://clojure.atlassian.net/browse/CLJS-3075(由 lread 报告)
...