分享您的想法于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(图
)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!

实施注意事项
  1. \!\#/bin/sh切换到\!\#/bin/env bash以使生活更轻松。我认为这并没有什么争议,但认为这值得提出。
  2. Windows {{脚本/test.ps1}}没有被考虑为此工作的部分。
  3. 在Windows上的GraalVM中应用了CLSJ-3098修复程序。
观察结果
  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运行。副作用是这也解决了由于file.encoding不是utf-8而导致在我特定的Linux安装上的测试失败问题。
1. 在此修补之前{{script/test}}在Windows上不起作用,并且在应用CLSJ-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,该文件
包含CLJS-3098针对Windows上GraalVM的修复

消除了使用有争议的bash {{eval}}

0
*修复了grep搜索失败的问题。请参阅{{CLSJ-3114}}

评论者:lread

好的,这个可以准备审查了。我觉得可视化做得不够好,所以在描述中加了一些,希望这能更容易进行审查。谢谢,请告诉我你的想法。

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