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 {{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 运行。副作用是这也解决了我特定安装的 Linux 上的测试失败问题,因为文件编码不是 utf-8。
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,它可以
* 包含 GraalVM on Windows 的 CLJS-3098 修复
* 移除有争议的 bash {{eval}} 使用
* 修复了 grep 失败的问题。请参阅 {{CLSJ-3114}}

0

评论由:lread 发表

好的,这篇已经准备好供评审了。我认为可视化做得不够好,所以在描述中添加了一些来希望有助于评审。谢谢,请告知您的看法。

0
...