Liigu sisu juurde

CLI

Phasis sisaldab bin/-s kolme peamist käivitatavat faili:

  • bin/phasis — käivitab JavaScript-faile, hindab käsurealt antud lähtekoodi ja väljastab AST-puid.
  • bin/test262 — käivitab ametliku ECMAScripti vastavustestide komplekti Phasis-i vastu.
  • bin/wpt — käivitab Web Platform Testsi testandmeid Phasis-i vastu (URL, kodeering, fetch, päised, Blob, AbortSignal, vood, …).

Pärast composer require phasis/phasis-i on bin/phasis ja bin/test262 lingitud paketist vendor/bin/. Sealt töötab ainult bin/phasis: bin/test262 vajab test262 git-alammoodulit ja testiklasse, mida pakett Composer ei sisalda, ning bin/wpt ei tarnita üldse. Käivita mõlemad hoidla Phasis kloonist.

bin/phasis

Kood
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>

Need kolm vormi moodustavad kogu liidese. REPL-i ega standardse sisendi tuge pole ning moodulilippu ei ole.

Faili käivitamine

Shell
./vendor/bin/phasis script.js

Käivitab script.js-i klassikalise skriptina. Kui see on lõpetanud, väljastatakse kõik, mida skript kirjutas funktsioonidega console.log (ja console.error, console.warn, …), korraga standardsesse väljundvoogu. Kui skript viskab vea, väljastatakse veateade standardsesse veavoogu ja väljumisolek on 1.

Faili parsitakse alati klassikalise skriptina, seega fail import / export-ga või tipptaseme await-ga põhjustab SyntaxErrori. ES-mooduli käivitamiseks kasuta Engine::evalAsModule()-i paketist PHP (vt API viide) või seo kood esmalt kokku.

Lähtekoodi hindamine

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

Argumenti hinnatakse täieliku skriptina. Väljastatakse ainult console väljund; viimase avaldise väärtust mitte, seega phasis -e '1 + 2' ei väljasta midagi.

AST väljastamine

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

Väljastab parsipuu JSON-na (taandega kaks tühikut). Kasulik parseriprobleemide silumiseks või Phasis-i peale tööriistade ehitamiseks. Programmilise ligipääsu jaoks kasuta parserit API.

bin/test262

bin/test262 käivitab ametliku test262 komplekti Phasis-i vastu. See on kasulik regressioonitestide käitajana muudatuste lisamisel. Täieliku komplekti hetktõmmis failis COMPAT.md luuakse seotud bin/compat-report abil, mille käsitsi käivitatav CI-maatriks jagab osadeks.

Ühe kategooria käivitamine

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

Kogu komplekti käivitamine

Shell
./bin/test262 --jobs 4

Seadistus

Käivitaja loeb projekti juurkataloogist faili config/support.php. Selle loend test262_skipped_features on tühi: ühtegi test262 funktsiooni ei jäeta vahele, sealhulgas tail-call-optimization. Failis on kirjas ka kategooriad ja testid, mis tuleb eraldi käivitada.

Testikomplekt ise on git-alammoodul test262; käivita git submodule update --init test262 pärast kloonimist. Kui see puudub, lõpetab käivitaja veaga "test262 suite not found".

Muud kasulikud lipud

Lipp Eesmärk
--failures väljastab iga ebaõnnestunud testi kohta ühe rea
--limit N peatub pärast esimest N testi
--jobs N käivitab N testi paralleelselt
--files-from file käivitab ainult failis file loetletud testid
--json väljastab standardsesse väljundvoogu masinloetava kokkuvõtte
--no-progress peidab edenemisrea

Viimast hetktõmmist vaata jaotisest Ühilduvus.

bin/wpt

bin/wpt käivitab tests/Wpt/fixtures/-i imporditud Web Platform Testsi testandmeid. Korpus hõlmab URL-i, kodeeringut, atob/btoa-d, structuredClone'i, performance'i, Headersit, Blob/File'i, AbortController/Signali, EventTargeti, FormData-t, WHATWG vooge, kogu crypto/SubtleCrypto-i liidest, fetch/Request/Response-i, XMLHttpRequest/XMLHttpRequestUpload-i ja WebSocket-i. Valdkondade läbimismäärade tabelit vaata jaotisest Veebi API-d.

Kõigi imporditud testandmete käivitamine

Shell
./bin/wpt

Ühe kategooria käivitamine

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

Alamtestide väljund

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

Väljastab iga testandmeüksuse kõik alamtestid (PASS / FAIL) ja tõrgete korral väidete veateated.

JSON väljund

Shell
./bin/wpt --json

Masinloetav läbimise/ebaõnnestumise kokkuvõte CI torujuhtmete või skriptitud analüüsi jaoks.

Märkused

  • Tõmbetoiminguid sisaldavad testfixture'id käivitavad automaatselt kaasasoleva WPT testserveri aadressil tests/Wpt/fetch-server.php pordis 127.0.0.1:8765 ja sulgevad selle pärast.
  • Testikarkassi asenduskiht failis tests/Wpt/testharness-shim.js rakendab ainult seda WPT API liidest, mida imporditud testfixture'id kasutavad (~400 rida võrreldes täieliku ~3K-realise testharness.js-ga).
  • Lähtefixture'id asuvad kataloogis tests/Wpt/upstream/ (gitignore'iga välistatud hõrecheckout kataloogist web-platform-tests/wpt). Lisatavate failide importimiseks kopeerige .any.js failid kataloogist upstream/<area>/ kataloogi fixtures/<category>/ ja käivitaja leiab need automaatselt üles.

Väljumiskoodid

bin/phasis lõpetab töö ühega kahest koodist:

Kood Tähendus
0 õnnestus — skript töötas lõpuni (ka pärast --ast)
1 kõik muu: püüdmata JS erind, süntaksiviga, puuduv fail või vigased argumendid

Skripti vead väljastatakse standardveavoogu. Vigaste argumentide ja puuduvate failide korral väljastatakse standardveavoogu kasutusjuhise rida.

Ressursipiirangud

bin/phasis töötab mootori vaikesätetega ja piirangute jaoks lippe pole: 4,096-kaadriline JS väljakutsepinu piir, transpileeritud sulundite 8,192-kaadriline kaitse ning vaikeväärtus maxLoopIterations 100,000, mis kehtib ainult koodile, mida käivitab puu läbiv interpretaator (vt API: setLimit). Ajapiirangut pole; kui skript ei pruugi lõpetada, käivitage käsk timeout abil.