ClojureScript

运行测试

测试编译器基础设施

lein test

将运行分析器、编译器和闭包组件的测试。

测试 JavaScript 引擎

如何设置重要的 JavaScript 运行时。

Google V8

将 V8_HOME 环境变量设置为 d8 构建的路径,例如

export V8_HOME="$HOME/v8/out/x64.release"

通过以下方式验证

echo quit | $V8_HOME/d8

Mozilla SpiderMonkey

https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/ 获取 JavaScript Shell (jsshell)。将您的 SPIDERMONKEY_HOME 环境变量设置为安装位置。

通过以下方式验证

$SPIDERMONKEY_HOME/js --version

WebKit JavaScriptCore

在 macOS 上,我们使用 JavaScriptCore 进行测试。JavaScriptCore (jsc) 应该在您的系统上,但需要将其添加到您的 PATH 环境变量中,以便找到它,例如

export PATH="$PATH:/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources"

验证 jsc 是否弹出一个提示。

Java Nashorn

设置 $NASHORN_HOME 环境变量,以便

$NASHORN_HOME/jjs

提示一个 JavaScript 控制台。Nashorn 通常在 $JAVA_HOME/bin 下,因此您可以编写

export NASHORN_HOME="$JAVA_HOME/bin"

通过以下方式验证

echo 'quit()' | $NASHORN_HOME/jjs -fv

Oracle GraalVM

https://graalvm.java.net.cn 获取 GraalVM。设置您的 GRAALVM_HOME 环境变量,以便 $GRAALVM_HOME/js 执行 Graal.js。

通过以下方式验证

$GRAALVM_HOME/js --version

Microsoft ChakraCore

https://github.com/Microsoft/ChakraCore/releases 获取 ChakraCore。设置您的 CHAKRACORE_HOME 环境变量,以便 $CHAKRACORE_HOME/ch 执行 ChakraCore。

通过以下方式验证

$CHAKRACORE_HOME/ch -version

设置依赖项

./script/bootstrap

运行测试

./script/test

将为每个您如上所述设置的 JavaScript 运行时运行测试,您未设置的运行时将被跳过。

运行引导的 ClojureScript 测试

如果您已安装 Node.js,则可以运行引导的 ClojureScript 测试套件(位于 src/test/self/self_host/test.cljs

./script/test-self-host

您还可以通过运行在引导模式下构建和运行 ClojureScript 编译器测试套件,

./script/test-self-parity

运行 ClojureScript CLI (cljs.main) 测试

您可以通过运行测试来测试 ClojureScript CLI

./script/test-cli repl-env [repl-env-opts-edn]

其中 repl-env 是任何内置的 REPL 环境(nodebrowser 等)。这将传递给 cljs.main-re 选项。

请注意,使用 graaljs REPL 环境进行测试需要在您的 PATH 中尽早找到 GRAALVM_HOME。您可以通过以下方式进行测试

(export PATH="$GRAALVM_HOME:$PATH"; ./script/test-cli graaljs)

您也可以指定一个非内置的 REPL 环境,但您必须修改 script/test-cli 以将下游 REPL 环境包含在类路径中。您也可以传递可选的 repl-env-opts-edn,它将传递给 cljs.main-ro 选项。

不要忘记浏览器 REPL

重要的是要确保浏览器 REPL 未被意外破坏。

您可能已经通过 ./script/test-cli browser 对浏览器 REPL 运行了测试。如果没有,现在是时候这样做了。注意:此测试启动大量浏览器窗口/标签是正常的。

此外,您可能只在进行一些手动验证后才会感到满意 - 即使只是尝试一个简单的 (js/alert "Hello CLJS!")

  1. 您可以通过从 clojurescript 项目根目录运行 clj -M -m cljs.main 来启动浏览器 REPL。

  2. 或者从一个新的空目录,创建一个指向您 构建的 ClojureScript 编译器deps.edn,将 1.10.123 替换为您的本地版本

    {:deps {org.clojure/clojurescript {:mvn/version "1.10.123"}}}

    然后从这个目录,运行 cljs -m cljs.main