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
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
./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
./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
./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
./bin/test262 --category built-ins/Array
Jalankan seluruh rangkaian uji
./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
./bin/wpt
Jalankan satu kategori
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Output per subtes
./bin/wpt --category abort --verbose
Mencetak setiap subtes (PASS / FAIL) di dalam tiap fixture, beserta pesan asersi untuk kegagalan.
Output JSON
./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.phppada127.0.0.1:8765, lalu menghentikannya setelah itu. - Shim harness di
tests/Wpt/testharness-shim.jshanya mengimplementasikan permukaan WPT API yang digunakan fixture impor (~400 baris dibandingkan dengantestharness.jslengkap 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.jsdariupstream/<area>/kefixtures/<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.