Preskočiť na obsah

CLI

Phasis obsahuje tri hlavné spustiteľné súbory v bin/:

  • bin/phasis — spúšťanie súborov JavaScript, vyhodnocovanie zdrojového kódu zadaného v príkazovom riadku a výpis AST.
  • bin/test262 — spustenie oficiálnej testovacej sady zhody s ECMAScriptom pre Phasis.
  • bin/wpt — spustenie testov Web Platform Tests pre Phasis (URL, kódovanie, fetch, hlavičky, Blob, AbortSignal, streamy, …).

Po composer require phasis/phasis sa bin/phasis a bin/test262 prepoja z vendor/bin/. Odtiaľ funguje iba bin/phasis: bin/test262 potrebuje podmodul test262 git a testovacie triedy, ktoré balík Composer neobsahuje, a bin/wpt sa vôbec nedodáva. Obe spustite z klonu repozitára Phasis.

bin/phasis

Kód
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>

Tieto tri formy tvoria celé rozhranie. Nie je k dispozícii REPL, vstup zo stdin ani príznak modulu.

Spustenie súboru

Shell
./vendor/bin/phasis script.js

Spustí script.js ako klasický skript. Po jeho dokončení sa všetko, čo skript zapísal pomocou console.log (a console.error, console.warn, …), naraz vypíše na stdout. Ak skript vyvolá výnimku, chybová správa sa vypíše na stderr a stav ukončenia bude 1.

Súbor sa vždy spracuje ako klasický skript, takže súbor obsahujúci import / export alebo await na najvyššej úrovni skončí chybou SyntaxError. Ak chcete spustiť modul ES, použite Engine::evalAsModule() z PHP (pozrite si referenciu API) alebo najprv zabaľte kód do balíka.

Vyhodnotenie zdrojového kódu

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

Argument sa vyhodnotí ako úplný skript. Vypisuje sa iba výstup console; hodnota posledného výrazu sa nevypíše, takže phasis -e '1 + 2' nevypíše nič.

Výpis AST

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

Vypíše strom syntaktickej analýzy vo formáte JSON (odsadený o dve medzery). Hodí sa na ladenie problémov syntaktického analyzátora alebo na tvorbu nástrojov nad Phasis. Na programový prístup použite analyzátor API.

bin/test262

bin/test262 spúšťa oficiálnu test262 sadu testov pre Phasis. Je užitočná ako regresný testovací rámec pri prispievaní zmien. Snímku výsledkov celej sady v COMPAT.md vytvára súvisiaci bin/compat-report, ktorý ručne spúšťaná matica CI vykonáva po častiach.

Spustenie jednej kategórie

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

Spustenie celej sady

Shell
./bin/test262 --jobs 4

Konfigurácia

Spúšťač načíta config/support.php z koreňového adresára projektu. Zoznam test262_skipped_features je prázdny: nevynecháva sa žiadna funkcia test262 vrátane tail-call-optimization. Súbor obsahuje aj zoznam kategórií a testov, ktoré sa musia spúšťať izolovane.

Samotná sada je podmodul test262 git; po klonovaní spustite git submodule update --init test262. Bez neho sa spúšťač ukončí so správou „test262 sada sa nenašla“.

Ďalšie užitočné príznaky

Príznak Účel
--failures vypíše jeden riadok pre každý neúspešný test
--limit N zastaví sa po prvých N testoch
--jobs N spustí N testov paralelne
--files-from file spustí iba testy uvedené v file
--json vypíše strojovo čitateľný súhrn na stdout
--no-progress potlačí riadok s priebehom

Najnovšiu snímku nájdete v časti Kompatibilita.

bin/wpt

bin/wpt spúšťa testovacie súbory Web Platform Tests importované do tests/Wpt/fixtures/. Korpus zahŕňa URL, kódovanie, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, celé rozhranie crypto/SubtleCrypto, fetch/Request/Response, XMLHttpRequest/XMLHttpRequestUpload a WebSocket. Pre tabuľku úspešnosti jednotlivých oblastí si pozrite Webové API.

Spustenie všetkých importovaných testov

Shell
./bin/wpt

Spustenie jednej kategórie

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

Výstup jednotlivých podtestov

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

Vypíše každý podtest (PASS / FAIL) v rámci každého testovacieho súboru a pri neúspechu aj správy o kontrolných výrazoch.

Výstup JSON

Shell
./bin/wpt --json

Strojovo čitateľný súhrn úspešných a neúspešných testov pre CI pipeline alebo skriptovanú analýzu.

Poznámky

  • Testovacie súbory využívajúce fetch automaticky spustia pribalený testovací server WPT na adrese tests/Wpt/fetch-server.php na 127.0.0.1:8765 a potom ho vypnú.
  • Pomocná vrstva spúšťača na adrese tests/Wpt/testharness-shim.js implementuje iba rozhranie WPT API, ktoré používajú importované testy (približne 400 riadkov oproti plnej verzii testharness.js s približne 3 000 riadkami).
  • Zdrojové testy sa nachádzajú v tests/Wpt/upstream/ (riedky checkout repozitára web-platform-tests/wpt ignorovaný Gitom). Ak chcete importovať ďalšie testy, skopírujte súbory .any.js z upstream/<area>/ do fixtures/<category>/ a spúšťač ich automaticky nájde.

Návratové kódy

bin/phasis sa ukončí jedným z dvoch kódov:

Kód Význam
0 úspech — skript sa vykonal do konca (aj po --ast)
1 čokoľvek iné: nezachytená výnimka JS, chyba syntaxe, chýbajúci súbor alebo neplatné argumenty

Chyby zo skriptu vypíšu svoju správu na stderr. Neplatné argumenty a chýbajúce súbory vypíšu riadok s návodom na použitie na stderr.

Limity zdrojov

bin/phasis používa predvolené nastavenia enginu a nemá príznaky pre limity: maximálne 4,096 rámcov zásobníka volaní JS, ochranný limit 8,192 rámcov pre transpilované uzávery a predvolenú hodnotu maxLoopIterations 100,000, ktorá sa vzťahuje iba na kód vykonávaný interpretom prechádzajúcim strom (pozri API: setLimit). Časový limit nie je nastavený; ak sa skript nemusí ukončiť, spustite príkaz pomocou timeout.