Ugrás a tartalomhoz

CLI

A Phasis három fő végrehajtható fájlt tartalmaz a bin/ helyen:

  • bin/phasis — JavaScript fájlok futtatása, parancssorban megadott forráskód kiértékelése, AST-k kiíratása.
  • bin/test262 — a hivatalos ECMAScript megfelelőségi tesztcsomag futtatása a Phasis ellen.
  • bin/wpt — a Web Platform Tests tesztfájljainak futtatása a Phasis ellen (URL, kódolás, fetch, fejlécek, Blob, AbortSignal, streamek, …).

A composer require phasis/phasis után a bin/phasis és a bin/test262 a vendor/bin/ helyről is elérhető. Onnan csak a bin/phasis működik: a bin/test262 függ a test262 git almodultól és a tesztosztályoktól, amelyeket a Composer csomag nem tartalmaz, a bin/wpt pedig egyáltalán nincs mellékelve. Mindkettőt a Phasis tároló klónjából futtassa.

bin/phasis

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

Ez a három forma alkotja a teljes felületet. Nincs REPL, nincs stdin-bemenet és nincs moduljelző.

Fájl futtatása

Shell
./vendor/bin/phasis script.js

A script.js fájlt klasszikus szkriptként hajtja végre. A futás végén a szkript által console.log segítségével kiírt összes tartalom (valamint a console.error, a console.warn és a többi) egyszerre jelenik meg a stdout kimeneten. Ha a szkript hibát dob, a hibaüzenet a stderr kimenetre kerül, a kilépési kód pedig 1 lesz.

A fájlt mindig klasszikus szkriptként értelmezi, ezért a import / export elemet vagy legfelső szintű await elemet tartalmazó fájl SyntaxError hibát eredményez. ES-modul futtatásához használja a Engine::evalAsModule() parancsot a PHP helyről (lásd a API referenciát), vagy előbb csomagolja össze a kódot.

Forráskód kiértékelése

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

Az argumentumot teljes szkriptként értékeli ki. Csak a console kimenet jelenik meg; az utolsó kifejezés értéke nem, ezért a phasis -e '1 + 2' semmit sem ír ki.

AST kiíratása

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

A szintaxisfát JSON formátumban írja ki (két szóközzel behúzva). Hasznos a parser hibáinak hibakereséséhez vagy a Phasis fölé épülő eszközök létrehozásához. Programozott hozzáféréshez használja a parser API felületet.

bin/test262

A bin/test262 a hivatalos test262 tesztcsomagot futtatja a Phasis ellen. Módosítások közreműködéses fejlesztésekor regressziós tesztként használható. A teljes tesztcsomag pillanatfelvételét a COMPAT.md készíti a kapcsolódó bin/compat-report segítségével; ezt a kézzel indított CI-mátrix részekre bontva futtatja.

Egy kategória futtatása

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

A teljes tesztcsomag futtatása

Shell
./bin/test262 --jobs 4

Konfiguráció

A futtató a projekt gyökeréből olvassa be a config/support.php fájlt. A test262_skipped_features listája üres: egyetlen test262 funkciót sem hagy ki, a tail-call-optimization funkciót sem. A fájl felsorolja a kategóriákat és azokat a teszteket is, amelyeket elszigetelten kell futtatni.

Maga a tesztcsomag a test262 git almodul; klónozás után futtassa a git submodule update --init test262 parancsot. Enélkül a futtató a „test262 suite not found” üzenettel kilép.

További hasznos kapcsolók

Kapcsoló Cél
--failures egy sor kiírása minden sikertelen teszthez
--limit N leállás az első N teszt után
--jobs N N teszt párhuzamos futtatása
--files-from file csak a file fájlban felsorolt tesztek futtatása
--json géppel feldolgozható összefoglaló kiírása stdout kimenetre
--no-progress a folyamatjelző sor elrejtése

A legfrissebb pillanatfelvételért lásd a Kompatibilitás részt.

bin/wpt

A bin/wpt a tests/Wpt/fixtures/ rendszerbe importált Web Platform Tests tesztfájlokat futtatja. A tesztkészlet a URL, kódolás, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, a teljes crypto/SubtleCrypto felület, a fetch/Request/Response, a XMLHttpRequest/XMLHttpRequestUpload és a WebSocket tesztjeit tartalmazza. Az egyes területek átmenési arányait tartalmazó táblázatért lásd a Web APIs részt.

Az összes importált tesztfájl futtatása

Shell
./bin/wpt

Egy kategória futtatása

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

Tesztenkénti kimenet

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

Minden tesztfájlon belül kiírja az összes résztesztet (PASS / FAIL), sikertelenség esetén az állítások üzeneteivel együtt.

JSON kimenet

Shell
./bin/wpt --json

Géppel feldolgozható sikeres/sikertelen összefoglaló CI-folyamatokhoz vagy szkriptelt elemzéshez.

Megjegyzések

  • A Fetchet érintő tesztfájlok automatikusan elindítják a mellékelt WPT-tesztkiszolgálót a tests/Wpt/fetch-server.php címen, a 127.0.0.1:8765 protokollon, majd utána leállítják.
  • A tests/Wpt/testharness-shim.js helyen található tesztkörnyezet-kiegészítő a WPT API felületéből csak azt valósítja meg, amit az importált tesztfájlok használnak (~400 sor a teljes, ~3K soros testharness.js helyett).
  • A forrás tesztfájlok a tests/Wpt/upstream/ helyen találhatók (a web-platform-tests/wpt ritkított, git által figyelmen kívül hagyott checkoutja). További tesztfájlok importálásához másolja át a .any.js fájlokat a upstream/<area>/ helyről a fixtures/<category>/ helyre; a futtató ezután automatikusan felismeri őket.

Kilépési kódok

A bin/phasis két lehetséges kóddal lép ki:

Kód Jelentés
0 siker — a szkript a végéig lefutott (a --ast után is)
1 minden más eset: el nem kapott JS kivétel, szintaktikai hiba, hiányzó fájl vagy érvénytelen argumentum

A szkript hibái a saját üzenetükkel együtt a stderr kimenetre kerülnek. Érvénytelen argumentumok és hiányzó fájlok esetén a használati útmutató sora jelenik meg a stderr kimeneten.

Erőforráskorlátok

A bin/phasis a motor alapértelmezéseivel fut, és nincsenek korlátokat beállító kapcsolói: a 4,096 keretes JS hívásverem-korlát, a transzpilált lezárások 8,192 keretes védelme és az alapértelmezett maxLoopIterations (100,000); ez csak a faalapú értelmező által futtatott kódra vonatkozik (lásd: API: setLimit). Időkorlát nincs; ha egy szkript esetleg nem áll le, futtassa a parancsot a timeout segítségével.