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
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
./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
./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
./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
./bin/test262 --category built-ins/Array
A teljes tesztcsomag futtatása
./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
./bin/wpt
Egy kategória futtatása
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Tesztenkénti kimenet
./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
./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.phpcímen, a127.0.0.1:8765protokollon, majd utána leállítják. - A
tests/Wpt/testharness-shim.jshelyen 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 sorostestharness.jshelyett). - 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.jsfájlokat aupstream/<area>/helyről afixtures/<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.