CLI
Phasis turi tris pagrindinius vykdomuosius failus kataloge bin/:
bin/phasis— vykdyti JavaScript failus, įvertinti komandinėje eilutėje perduotą kodą, išvesti AST.bin/test262— vykdyti oficialų ECMAScript atitikties testų rinkinį su Phasis.bin/wpt— vykdyti Web Platform Tests testus su Phasis (URL, koduotė, fetch, antraštės, Blob, AbortSignal, srautai, …).
Įdiegus composer require phasis/phasis, bin/phasis ir bin/test262 susiejami su vendor/bin/. Iš ten veikia tik bin/phasis: bin/test262 reikia test262 git submodulio ir testų klasių, kurių Composer pakete nėra, o bin/wpt apskritai netiekiamas. Abu vykdykite klonavę Phasis saugyklą.
bin/phasis
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>
Šios trys formos sudaro visą sąsają. Nėra REPL, stdin įvesties ar modulio vėliavėlės.
Vykdyti failą
./vendor/bin/phasis script.js
Vykdo script.js kaip klasikinį scenarijų. Jam pasibaigus, viskas, ką scenarijus išvedė naudodamas console.log (ir console.error, console.warn, …), iš karto išspausdinama į stdout. Jei scenarijus išmeta klaidą, jos pranešimas išspausdinamas į stderr, o išėjimo būsena yra 1.
Failas visada analizuojamas kaip klasikinis scenarijus, todėl failas su import / export arba aukščiausio lygio await sukelia SyntaxError. Norėdami vykdyti ES modulį, naudokite Engine::evalAsModule() iš PHP (žr. nuorodąAPI) arba pirmiausia supakuokite kodą.
Įvertinti kodą
./vendor/bin/phasis -e 'console.log(Math.PI * 2)'
# 6.283185307179586
Argumentas įvertinamas kaip visas scenarijus. Išvedama tik console išvestis; paskutinės išraiškos reikšmė neišvedama, todėl phasis -e '1 + 2' nieko neišspausdina.
Išvesti AST
./vendor/bin/phasis --ast script.js
./vendor/bin/phasis -e 'a + b' --ast
Analizės medis išspausdinamas kaip JSON (su dviejų tarpų įtraukomis). Naudinga derinant analizatoriaus problemas arba kuriant įrankius Phasis pagrindu. Norėdami pasiekti programiškai, naudokite analizatoriaus API.
bin/test262
bin/test262 vykdo oficialų test262 testų rinkinį su Phasis. Jis naudingas kaip regresijos testavimo priemonė teikiant pakeitimus. Visą testų rinkinio momentinę kopiją, esančią COMPAT.md, sukuria susijęs bin/compat-report, kurį rankiniu būdu paleidžiama CI matrica vykdo dalimis.
Vykdyti vieną kategoriją
./bin/test262 --category built-ins/Array
Vykdyti visą testų rinkinį
./bin/test262 --jobs 4
Konfigūracija
Vykdyklė projekto šakniniame kataloge skaito config/support.php. Joje test262_skipped_features sąrašas tuščias: nepraleidžiama jokia test262 funkcija, įskaitant tail-call-optimization. Faile taip pat išvardytos kategorijos ir testai, kuriuos būtina vykdyti atskirai.
Pats testų rinkinys yra test262 git submodulis; po klonavimo vykdykite git submodule update --init test262. Be jo vykdyklė baigia darbą su pranešimu „test262 suite not found“.
Kitos naudingos vėliavėlės
| Vėliavėlė | Paskirtis |
|---|---|
--failures |
išspausdinti po vieną eilutę apie kiekvieną nepavykusį testą |
--limit N |
sustoti po pirmųjų N testų |
--jobs N |
vykdyti N testų lygiagrečiai |
--files-from file |
vykdyti tik file išvardytus testus |
--json |
stdout išvesti kompiuterio nuskaitomą suvestinę |
--no-progress |
nerodyti eigos eilutės |
Naujausią momentinę kopiją rasite suderinamumo skyriuje.
bin/wpt
bin/wpt vykdo į tests/Wpt/fixtures/ importuotus Web Platform Tests testus. Testų rinkinys apima URL, koduotę, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, visą crypto/SubtleCrypto sąsają, fetch/Request/Response, XMLHttpRequest/XMLHttpRequestUpload ir WebSocket. Kiekvienos srities išlaikymo rodiklių lentelę žr. žiniatinklio API.
Vykdyti visus importuotus testus
./bin/wpt
Vykdyti vieną kategoriją
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Kiekvieno potesto išvestis
./bin/wpt --category abort --verbose
Išveda kiekvieną potestį (PASS / FAIL) kiekviename teste, o nepavykus — ir teiginių pranešimus.
JSON išvestis
./bin/wpt --json
Kompiuterio nuskaitoma išlaikytų ir nepavykusių testų suvestinė CI konvejeriams arba automatinei analizei.
Pastabos
- Su fetch susiję testai automatiškai paleidžia kartu pateikiamą WPT testų serverį adresu
tests/Wpt/fetch-server.phpper127.0.0.1:8765, o vėliau jį išjungia. - Testų aplinkos sąsajos modulis, esantis
tests/Wpt/testharness-shim.js, įgyvendina tik tą WPT API sąsajos dalį, kurią naudoja importuoti testai (~400 eilučių, palyginti su visu ~3K eilučiųtestharness.js). - Šaltinio testai yra
tests/Wpt/upstream/(gitignore įtrauktas retas web-platform-tests/wpt išsiregistravimas). Norėdami importuoti daugiau, nukopijuokite.any.jsfailus išupstream/<area>/įfixtures/<category>/; vykdyklė juos aptiks automatiškai.
Išėjimo kodai
bin/phasis baigia darbą grąžindama vieną iš dviejų kodų:
| Kodas | Reikšmė |
|---|---|
0 |
sėkmė — scenarijus įvykdytas iki galo (taip pat ir po --ast) |
1 |
visa kita: nepagauta JS išimtis, sintaksės klaida, trūkstamas failas arba netinkami argumentai |
Scenarijaus klaidų pranešimai spausdinami į stderr. Netinkami argumentai ir trūkstami failai sukelia naudojimo eilutės išspausdinimą į stderr.
Išteklių ribos
bin/phasis veikia su numatytaisiais variklio nustatymais ir neturi ribojimo vėliavėlių: 4,096 kadrų JS iškvietimų steko riba, 8,192 kadrų riba transpilintoms uždaroms funkcijoms ir numatytoji maxLoopIterations reikšmė 100,000, taikoma tik kodui, kurį vykdo medį pereinantis interpretatorius (žr. API: setLimit). Laiko apribojimo nėra; apgaubkite komandą timeout, jei scenarijus gali nepasibaigti.