Pāriet uz saturu

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

Kods
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

Apvalks
./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

Apvalks
./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

Apvalks
./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

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

Palaist pilnu testu komplektu

Apvalks
./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

Apvalks
./bin/wpt

Palaist vienu kategoriju

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

Izvade par katru apakštestu

Apvalks
./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

Apvalks
./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, izmantojot 127.0.0.1:8765, un pēc tam to aptur.
  • Testu ietvara apvalks tests/Wpt/testharness-shim.js ievieš tikai to WPT API saskarnes daļu, ko izmanto importētās testa datnes (~400 rindas salīdzinājumā ar pilno, ~3K rindu testharness.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.js failus no upstream/<area>/ uz fixtures/<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.