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虚拟机上的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 添加到 Patch Tender (i)

0

评论由:lread 提出

我将回到这个问题。它需要一个调整,以便与 Windows 上的 Git Bash 兼容。

0

评论由:lread 提出

添加了 CLSJ-3075-2.patch,它
包含了 GraalVM 在 Windows 上的 CLJS-3098 修复
移除了有争议的 bash {{eval}} 使用
.* 修复了搜索失败的问题。请参阅 {{CLSJ-3114}}

0

评论由:lread 提出

好的,这个已经准备好了,等待审查。我认为可视化做得不够,所以在描述中增加了一些,希望能使审查更容易。谢谢,请告诉我你的想法。

0
...