CLI
Phasis pakotnē ir trīs galvenie izpildfaili bin/:
bin/phasis— izpildīt JavaScript failus, novērtēt komandrindā nodoto pirmkodu, izvadīt AST kokus.bin/test262— palaist oficiālo ECMAScript atbilstības testu komplektu pret Phasis.bin/wpt— palaist Web Platform Tests testu datnes pret Phasis (URL, kodējums, fetch, galvenes, Blob, AbortSignal, plūsmas, …).
Pēc composer require phasis/phasis bin/phasis un bin/test262 ir saistīti ar vendor/bin/. No turienes darbojas tikai bin/phasis: bin/test262 vajadzīgs test262 git apakšmodulis un testu klases, kas nav iekļautas Composer pakotnē, bet bin/wpt vispār netiek piegādāts. Palaidiet abus no Phasis repozitorija klona.
bin/phasis
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>
Šīs trīs formas veido visu saskarni. Nav ne REPL, ne stdin ievades, ne moduļa karodziņa.
Palaist failu
./vendor/bin/phasis script.js
Izpilda script.js kā klasisku skriptu. Kad tas pabeidz darbu, viss, ko skripts ierakstījis ar console.log (un console.error, console.warn, …), tiek uzreiz izvadīts stdout. Ja skripts izmet kļūdu, kļūdas ziņojums tiek izvadīts stderr, bet izejas statuss ir 1.
Fails vienmēr tiek parsēts kā klasisks skripts, tāpēc fails ar import / export vai augšējā līmeņa await izraisa SyntaxError. Lai palaistu ES moduli, izmantojiet Engine::evalAsModule() no PHP (skatiet API atsaucē) vai vispirms apvienojiet kodu.
Novērtēt pirmkodu
./vendor/bin/phasis -e 'console.log(Math.PI * 2)'
# 6.283185307179586
Arguments tiek novērtēts kā pilnīgs skripts. Tiek izvadīta tikai console izvade; pēdējās izteiksmes vērtība netiek izvadīta, tāpēc phasis -e '1 + 2' neko neizvada.
Izvadīt AST koku
./vendor/bin/phasis --ast script.js
./vendor/bin/phasis -e 'a + b' --ast
Izvada parsēšanas koku kā JSON (ar divu atstarpju atkāpi). Noder, lai atkļūdotu parsētāja problēmas vai veidotu rīkus, kas izmanto Phasis. Programmātiskai piekļuvei izmantojiet parsētāja API.
bin/test262
bin/test262 izpilda oficiālo test262 testu komplektu pret Phasis. Tas ir noderīgs regresiju testēšanas rīks, iesniedzot izmaiņas. Pilnā testu komplekta momentuzņēmumu COMPAT.md izveido saistītais bin/compat-report, ko manuāli palaistā CI matrica izpilda daļās.
Palaist vienu kategoriju
./bin/test262 --category built-ins/Array
Palaist pilnu testu komplektu
./bin/test262 --jobs 4
Konfigurācija
Izpildītājs nolasa config/support.php no projekta saknes. Tā test262_skipped_features saraksts ir tukšs: netiek izlaista neviena test262 funkcija, tostarp tail-call-optimization. Failā ir uzskaitītas arī kategorijas un testi, kas jāpalaiž izolēti.
Pats testu komplekts ir test262 git apakšmodulis; pēc klonēšanas palaidiet git submodule update --init test262. Ja tā nav, izpildītājs beidz darbu ar ziņojumu "test262 suite not found".
Citi noderīgi karodziņi
| Karodziņš | Mērķis |
|---|---|
--failures |
izvadīt vienu rindu par katru nesekmīgu testu |
--limit N |
apstāties pēc pirmajiem N testiem |
--jobs N |
izpildīt N testus paralēli |
--files-from file |
izpildīt tikai file uzskaitītos testus |
--json |
stdout izvadīt mašīnlasāmu kopsavilkumu |
--no-progress |
nerādīt progresa rindu |
Jaunāko momentuzņēmumu skatiet sadaļā Saderība.
bin/wpt
bin/wpt izpilda tests/Wpt/fixtures/ importētās Web Platform Tests testa datnes. Testu kopums aptver URL, kodējumu, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, pilnu crypto/SubtleCrypto saskarni, fetch/Request/Response, XMLHttpRequest/XMLHttpRequestUpload un WebSocket. Katras jomas izturēto testu rādītājus skatiet sadaļā Tīmekļa API.
Palaist visas importētās testa datnes
./bin/wpt
Palaist vienu kategoriju
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Izvade par katru apakštestu
./bin/wpt --category abort --verbose
Izvada katru apakštestu (PASS / FAIL) katrā testa datnē un kļūmju gadījumā parāda apgalvojumu ziņojumus.
JSON izvade
./bin/wpt --json
Mašīnlasāms izturēto un neizturēto testu kopsavilkums CI konveijeriem vai skriptētai analīzei.
Piezīmes
- Testa datnes, kas izmanto Fetch, automātiski palaiž komplektā iekļauto WPT testu serveri vietnē
tests/Wpt/fetch-server.php, izmantojot127.0.0.1:8765, un pēc tam to aptur. - Testu ietvara apvalks
tests/Wpt/testharness-shim.jsievieš tikai to WPT API saskarnes daļu, ko izmanto importētās testa datnes (~400 rindas salīdzinājumā ar pilno, ~3K rindutestharness.js). - Avota testa datnes atrodas
tests/Wpt/upstream/(web-platform-tests/wpt git ignorētā retā izraksta versija). Lai importētu vēl citas, kopējiet.any.jsfailus noupstream/<area>/uzfixtures/<category>/, un izpildītājs tos automātiski atradīs.
Izejas kodi
bin/phasis beidz darbu ar vienu no diviem kodiem:
| Kods | Nozīme |
|---|---|
0 |
veiksmīgi — skripts izpildīts līdz galam (arī pēc --ast) |
1 |
jebkura cita kļūme: neuztverts JS izņēmums, sintakses kļūda, trūkstošs fails vai nederīgi argumenti |
Skripta kļūdu ziņojumi tiek izvadīti stderr. Nederīgu argumentu un trūkstošu failu gadījumā stderr tiek izvadīta lietošanas instrukcijas rinda.
Resursu ierobežojumi
bin/phasis darbojas ar dzinēja noklusējuma iestatījumiem, un tam nav ierobežojumu karodziņu: 4,096 kadru JS izsaukumu steka limits, 8,192 kadru sargs transpēlētajiem aizvērumiem un noklusējuma maxLoopIterations — 100,000, kas attiecas tikai uz koda daļu, ko izpilda koka pastaigas interpretētājs (skatiet API: setLimit). Laika ierobežojuma nav; ja skripts var nebeigt darbu, aptveriet komandu ar timeout.