CLI
Phasis levereras med tre huvudsakliga körbara filer i bin/:
bin/phasis— kör JavaScript-filer, utvärderar källkod som skickas på kommandoraden och dumpar AST:er.bin/test262— kör den officiella ECMAScript-konformitetssviten mot Phasis.bin/wpt— kör Web Platform Tests-fixtures mot Phasis (URL, kodning, fetch, headers, Blob, AbortSignal, streams, …).
Efter composer require phasis/phasis länkas bin/phasis och bin/test262 från vendor/bin/. Därifrån fungerar bara bin/phasis: bin/test262 kräver undermodulen test262 git och testklasserna, som paketet Composer inte innehåller, och bin/wpt levereras inte alls. Kör båda från en klon av arkivet Phasis.
bin/phasis
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>
Det här är hela gränssnittet: inga REPL, ingen indata från stdin och ingen modulflagga.
Kör en fil
./vendor/bin/phasis script.js
Kör script.js som ett klassiskt skript. När det är klart skrivs allt som skriptet skickade till console.log (och console.error, console.warn, …) ut på stdout på en gång. Om skriptet kastar ett undantag skrivs felmeddelandet till stderr och avslutningsstatusen blir 1.
Filen tolkas alltid som ett klassiskt skript, så en fil med import / export eller await på toppnivå ger ett SyntaxError. Om du vill köra en ES-modul använder du Engine::evalAsModule() från PHP (se referensen API) eller paketerar koden först.
Utvärdera källkod
./vendor/bin/phasis -e 'console.log(Math.PI * 2)'
# 6.283185307179586
Argumentet utvärderas som ett komplett skript. Endast utdata från console skrivs ut; värdet från det sista uttrycket gör det inte, så phasis -e '1 + 2' skriver inte ut något.
Skriv ut AST
./vendor/bin/phasis --ast script.js
./vendor/bin/phasis -e 'a + b' --ast
Skriver ut syntaxträdet som JSON (indenterat med två blanksteg). Användbart för felsökning av parserproblem eller för att bygga verktyg ovanpå Phasis. Använd parsern API för programmatisk åtkomst.
bin/test262
bin/test262 kör den officiella test262-sviten mot Phasis. Den är användbar som regressionstest när du bidrar med ändringar. Ögonblicksbilden av hela sviten i COMPAT.md skapas av den relaterade bin/compat-report, som den manuellt startade CI-matrisen kör uppdelad i delmängder.
Kör en enskild kategori
./bin/test262 --category built-ins/Array
Kör hela sviten
./bin/test262 --jobs 4
Konfiguration
Körprogrammet läser config/support.php från projektroten. Listan test262_skipped_features är tom: ingen test262-funktion hoppas över, inklusive tail-call-optimization. Filen listar också kategorierna och testerna som måste köras isolerat.
Själva sviten är delmodulen test262 git; kör git submodule update --init test262 efter kloning. Utan den avslutas körprogrammet med meddelandet "test262 suite not found".
Andra användbara flaggor
| Flagga | Syfte |
|---|---|
--failures |
skriv ut en rad för varje test som misslyckas |
--limit N |
avbryt efter de första N testerna |
--jobs N |
kör N tester parallellt |
--files-from file |
kör endast testerna som listas i file |
--json |
skriv ut en maskinläsbar sammanfattning på stdout |
--no-progress |
dölj förloppsraden |
Se avsnittet Kompatibilitet för den senaste ögonblicksbilden.
bin/wpt
bin/wpt kör Web Platform Tests-testfixturerna som importerats till tests/Wpt/fixtures/. Korpusen omfattar URL, kodning, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, hela ytan för crypto/SubtleCrypto, fetch/Request/Response, XMLHttpRequest/XMLHttpRequestUpload och WebSocket. Se Webb-API:er för tabellen med godkända tester per område.
Kör alla importerade testfixturer
./bin/wpt
Kör en kategori
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Utdata per deltest
./bin/wpt --category abort --verbose
Skriver ut varje deltest (PASS / FAIL) i varje testfixtur, med meddelanden från påståenden som misslyckats.
JSON-utdata
./bin/wpt --json
Maskinläsbar sammanfattning av godkända och underkända tester för CI-pipelines eller skriptbaserad analys.
Anteckningar
- Testfixturer som använder fetch startar automatiskt den medföljande WPT-testservern på
tests/Wpt/fetch-server.phppå127.0.0.1:8765och stänger sedan av den. - Testharneskets shim på
tests/Wpt/testharness-shim.jsimplementerar bara den WPT-yta API som de importerade testfixturerna använder (~400 rader jämfört med helatestharness.jspå cirka 3 000 rader). - Källtestfixturerna finns i
tests/Wpt/upstream/(en gitignore:ad gles utcheckning av web-platform-tests/wpt). Om du vill importera fler kopierar du.any.js-filer frånupstream/<area>/tillfixtures/<category>/, så hittar körprogrammet dem automatiskt.
Avslutningskoder
bin/phasis avslutas med en av två koder:
| Kod | Betydelse |
|---|---|
0 |
lyckades — skriptet kördes klart (även efter --ast) |
1 |
allt annat: ett ohanterat JS-undantag, ett syntaxfel, en saknad fil eller ogiltiga argument |
Fel från skriptet skriver ut sitt meddelande till stderr. Ogiltiga argument och saknade filer skriver ut användningsraden till stderr.
Resursgränser
bin/phasis körs med motorns standardvärden och saknar flaggor för gränser: ett tak på 4 096 ramar i JS-anropsstacken, en gräns på 8 192 ramar för transpilerade closures och standardvärdet 100 000 för maxLoopIterations, som bara gäller kod som trädtolkaren kör (se API: setLimit). Det finns ingen tidsgräns; använd timeout runt kommandot om ett skript kanske inte avslutas.