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
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
./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
./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
./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
./bin/test262 --category built-ins/Array
Kogu komplekti käivitamine
./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
./bin/wpt
Ühe kategooria käivitamine
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Alamtestide väljund
./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
./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.phppordis127.0.0.1:8765ja sulgevad selle pärast. - Testikarkassi asenduskiht failis
tests/Wpt/testharness-shim.jsrakendab ainult seda WPT API liidest, mida imporditud testfixture'id kasutavad (~400 rida võrreldes täieliku ~3K-realisetestharness.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.jsfailid kataloogistupstream/<area>/kataloogifixtures/<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.