ClojureScript

執行測試

測試編譯器基礎架構

lein test

將執行分析器、編譯器和 Closure 元件的測試。

測試 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.dev.org.tw 取得 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

您也可以在 Node.js 中以啟動模式建置和執行 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 環境進行測試時,需要讓 GRAALVM_HOME 在您的 PATH 中提早找到。您可以透過以下方式測試

(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