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 シェル (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.dokyumento.jp から 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 環境 ( `node` 、 `browser` など) のいずれかです。これは `cljs.main` の `-re` オプションに渡されます。

`graaljs` REPL 環境でテストするには、PATH の早い段階で GRAALVM_HOME が見つかる必要があります。以下でテストできます。

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

組み込みではない REPL 環境を指定することもできますが、ダウンストリーム REPL 環境をクラスパスに含めるように `script/test-cli` を変更する必要があります。オプションの `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. または、新しい空のディレクトリから、 `1.10.123` をローカルバージョンに置き換えて、ClojureScript コンパイラのビルドを指す `deps.edn` を作成します。

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

    そして、このディレクトリから `cljs -m cljs.main` を実行します。