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
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
./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
./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
./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
./bin/test262 --category built-ins/Array
Spustenie celej sady
./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
./bin/wpt
Spustenie jednej kategórie
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Výstup jednotlivých podtestov
./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
./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.phpna127.0.0.1:8765a potom ho vypnú. - Pomocná vrstva spúšťača na adrese
tests/Wpt/testharness-shim.jsimplementuje iba rozhranie WPT API, ktoré používajú importované testy (približne 400 riadkov oproti plnej verziitestharness.jss 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.jszupstream/<area>/dofixtures/<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.