Lewati ke konten

CLI

Phasis menyertakan tiga executable utama di bin/:

  • bin/phasis — jalankan file JavaScript, evaluasi sumber yang diberikan lewat baris perintah, cetak AST.
  • bin/test262 — jalankan rangkaian uji kesesuaian ECMAScript resmi pada Phasis.
  • bin/wpt — jalankan fixture Web Platform Tests pada Phasis (URL, encoding, fetch, header, Blob, AbortSignal, stream, …).

Setelah composer require phasis/phasis, bin/phasis dan bin/test262 ditautkan dari vendor/bin/. Hanya bin/phasis yang berfungsi dari sana: bin/test262 memerlukan submodul git test262 dan kelas pengujian, yang tidak disertakan dalam paket Composer, sedangkan bin/wpt sama sekali tidak disertakan. Jalankan keduanya dari hasil clone repositori Phasis.

bin/phasis

Kode
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>

Ketiga bentuk ini adalah seluruh antarmukanya. Tidak ada REPL, input stdin, ataupun flag modul.

Jalankan file

Shell
./vendor/bin/phasis script.js

Menjalankan script.js sebagai skrip klasik. Setelah selesai, semua yang ditulis skrip menggunakan console.log (serta console.error, console.warn, …) dicetak sekaligus ke stdout. Jika skrip melempar error, pesan error dikirim ke stderr dan status keluar adalah 1.

File selalu diuraikan sebagai skrip klasik, jadi file dengan import / export atau await tingkat teratas akan gagal dengan SyntaxError. Untuk menjalankan modul ES, gunakan Engine::evalAsModule() dari PHP (lihat referensi API) atau bundel kode terlebih dahulu.

Evaluasi sumber

Shell
./vendor/bin/phasis -e 'console.log(Math.PI * 2)'
# 6.283185307179586

Argumen dievaluasi sebagai skrip lengkap. Hanya output console yang dicetak; nilai ekspresi terakhir tidak dicetak, jadi phasis -e '1 + 2' tidak menghasilkan apa pun.

Cetak AST

Shell
./vendor/bin/phasis --ast script.js
./vendor/bin/phasis -e 'a + b' --ast

Mencetak pohon parse sebagai JSON (dengan indentasi dua spasi). Berguna untuk men-debug masalah parser atau membangun perkakas di atas Phasis. Untuk akses terprogram, gunakan parser API.

bin/test262

bin/test262 menjalankan rangkaian uji resmi test262 pada Phasis. Ini berguna sebagai rangkaian regresi saat berkontribusi perubahan. Snapshot rangkaian lengkap di COMPAT.md dihasilkan oleh bin/compat-report terkait, yang dijalankan secara manual oleh matriks CI dalam beberapa shard.

Jalankan satu kategori

Shell
./bin/test262 --category built-ins/Array

Jalankan seluruh rangkaian uji

Shell
./bin/test262 --jobs 4

Konfigurasi

Runner membaca config/support.php dari akar proyek. Daftar test262_skipped_features-nya kosong: tidak ada fitur test262 yang dilewati, termasuk tail-call-optimization. File tersebut juga mencantumkan kategori dan pengujian yang harus dijalankan secara terisolasi.

Rangkaian uji itu sendiri adalah submodul git test262; jalankan git submodule update --init test262 setelah melakukan clone. Tanpanya, runner keluar dengan pesan "test262 suite not found".

Flag lain yang berguna

Flag Tujuan
--failures cetak satu baris untuk setiap pengujian yang gagal
--limit N berhenti setelah N pengujian pertama
--jobs N jalankan N pengujian secara paralel
--files-from file jalankan hanya pengujian yang tercantum di file
--json keluarkan ringkasan yang dapat dibaca mesin ke stdout
--no-progress sembunyikan baris progres

Lihat bagian Kompatibilitas untuk snapshot terbaru.

bin/wpt

bin/wpt menjalankan fixture Web Platform Tests yang diimpor ke tests/Wpt/fixtures/. Korpusnya mencakup URL, encoding, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, seluruh permukaan crypto/SubtleCrypto, fetch/Request/Response, XMLHttpRequest/XMLHttpRequestUpload, dan WebSocket. Lihat API Web untuk tabel tingkat kelulusan tiap area.

Jalankan semua fixture yang diimpor

Shell
./bin/wpt

Jalankan satu kategori

Shell
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob

Output per subtes

Shell
./bin/wpt --category abort --verbose

Mencetak setiap subtes (PASS / FAIL) di dalam tiap fixture, beserta pesan asersi untuk kegagalan.

Output JSON

Shell
./bin/wpt --json

Ringkasan lulus/gagal yang dapat dibaca mesin untuk pipeline CI atau analisis berskrip.

Catatan

  • Fixture yang menggunakan fetch otomatis menjalankan server pengujian WPT bawaan di tests/Wpt/fetch-server.php pada 127.0.0.1:8765, lalu menghentikannya setelah itu.
  • Shim harness di tests/Wpt/testharness-shim.js hanya mengimplementasikan permukaan WPT API yang digunakan fixture impor (~400 baris dibandingkan dengan testharness.js lengkap yang berisi ~3K baris).
  • Fixture sumber berada di tests/Wpt/upstream/ (sparse-checkout web-platform-tests/wpt yang diabaikan git). Untuk mengimpor lebih banyak, salin file .any.js dari upstream/<area>/ ke fixtures/<category>/; runner akan mengambilnya secara otomatis.

Kode keluar

bin/phasis keluar dengan salah satu dari dua kode:

Kode Arti
0 berhasil — skrip berjalan sampai selesai (termasuk setelah --ast)
1 selain itu: exception JS yang tidak tertangkap, kesalahan sintaks, file tidak ditemukan, atau argumen tidak valid

Error dari skrip mencetak pesannya ke stderr. Argumen tidak valid dan file yang tidak ditemukan akan mencetak baris penggunaan ke stderr.

Batas sumber daya

bin/phasis berjalan dengan default engine dan tidak memiliki flag batas: batas tumpukan pemanggilan JS sebanyak 4,096 frame, guard 8,192 frame untuk closure yang ditranspilasi, dan maxLoopIterations default sebesar 100,000, yang hanya berlaku untuk kode yang dijalankan interpreter tree-walking (lihat APIsetLimit). Tidak ada batas waktu; bungkus perintah dengan timeout jika skrip mungkin tidak berhenti.