CLI
Phasis sisältää kolme pääasiallista suoritettavaa ohjelmaa paketissa bin/:
bin/phasis— suorita JavaScript-tiedostoja, arvioi komentoriviltä annettua lähdekoodia ja tulosta AST-puut.bin/test262— suorita virallinen ECMAScript-yhteensopivuustestipaketti ohjelmaa Phasis vasten.bin/wpt— suorita Web Platform Tests -testitapaukset ohjelmaa Phasis vasten (URL, merkistökoodaus, fetch, otsakkeet, Blob, AbortSignal, virrat, …).
Kun composer require phasis/phasis on asennettu, paketista vendor/bin/ linkitetään ohjelmat bin/phasis ja bin/test262. Vain bin/phasis toimii siellä: bin/test262 tarvitsee test262-git-alimoduulin ja testiluokat, joita paketti Composer ei sisällä, eikä ohjelmaa bin/wpt toimiteta lainkaan. Suorita molemmat Phasis-tietovaraston kloonista.
bin/phasis
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>
Nämä kolme muotoa kattavat koko käyttöliittymän. Käytettävissä ei ole REPL:iä, vakiosyötettä eikä moduulilippua.
Suorita tiedosto
./vendor/bin/phasis script.js
Suorittaa script.js-tiedoston tavallisena skriptinä. Kun suoritus päättyy, kaikki, mitä skripti kirjoitti toiminnoilla console.log (sekä console.error, console.warn, …), tulostetaan kerralla vakiotulosteeseen. Jos skripti heittää virheen, virheilmoitus tulostuu vakiovirheeseen ja paluuarvo on 1.
Tiedosto jäsennetään aina tavallisena skriptinä, joten tiedosto, jossa on import / export tai ylimmän tason await, aiheuttaa SyntaxError-virheen. Suorita ES-moduuli käyttämällä toimintoa Engine::evalAsModule() lähteessä PHP (katso API-viite) tai niputa koodi ensin.
Arvioi lähdekoodi
./vendor/bin/phasis -e 'console.log(Math.PI * 2)'
# 6.283185307179586
Argumentti arvioidaan kokonaisena skriptinä. Vain console-tuloste näytetään; viimeisen lausekkeen arvoa ei tulosteta, joten phasis -e '1 + 2' ei tulosta mitään.
Tulosta AST-puu
./vendor/bin/phasis --ast script.js
./vendor/bin/phasis -e 'a + b' --ast
Tulostaa jäsennyspuun muodossa JSON (kahden välilyönnin sisennyksellä). Hyödyllinen jäsentimen ongelmien selvittämiseen tai ohjelman Phasis päälle rakennettavien työkalujen luomiseen. Ohjelmallista käyttöä varten käytä jäsentimen API.
bin/test262
bin/test262 suorittaa ohjelmaa Phasis vasten virallisen test262-testipaketin. Se toimii hyödyllisenä regressiotestien ajajana muutoksiin osallistuttaessa. Paketin COMPAT.md kattavan testipaketin tilannevedoksen tuottaa siihen liittyvä ohjelma bin/compat-report, jota manuaalisesti käynnistetty CI-matriisi ajaa osissa.
Suorita yksi luokka
./bin/test262 --category built-ins/Array
Suorita koko testipaketti
./bin/test262 --jobs 4
Asetukset
Suoritin lukee tiedoston config/support.php projektin juuresta. Sen test262_skipped_features-luettelo on tyhjä: mitään test262-ominaisuutta ei ohiteta, mukaan lukien tail-call-optimization. Tiedostossa luetellaan myös luokat ja testit, jotka on suoritettava eristyksissä.
Testipaketti itsessään on test262-git-alimoduuli; suorita git submodule update --init test262 kloonauksen jälkeen. Ilman sitä suoritin päättyy ilmoitukseen "test262 suite not found".
Muita hyödyllisiä valitsimia
| Valitsin | Tarkoitus |
|---|---|
--failures |
tulosta yksi rivi kutakin epäonnistunutta testiä kohden |
--limit N |
pysähdy ensimmäisen N testin jälkeen |
--jobs N |
suorita N testiä rinnakkain |
--files-from file |
suorita vain tiedostossa file luetellut testit |
--json |
tulosta koneellisesti luettava yhteenveto vakiotulosteeseen |
--no-progress |
älä tulosta edistymisriviä |
Katso uusimmat tulokset kohdasta Yhteensopivuus.
bin/wpt
bin/wpt suorittaa ohjelmaan tests/Wpt/fixtures/ tuodut Web Platform Tests -testitapaukset. Testijoukko kattaa alueet URL, merkistökoodauksen, atob/btoa:n, structuredClone-toiminnon, performance-toiminnon, Headers-, Blob/File-, AbortController/Signal-, EventTarget- ja FormData-toiminnot, WHATWG Streams -virrat, toiminnon crypto/SubtleCrypto koko rajapinnan, toiminnot fetch/Request/Response ja XMLHttpRequest/XMLHttpRequestUpload sekä toiminnon WebSocket. Aluekohtainen läpäisyprosenttitaulukko on kohdassa Web-rajapinnat.
Suorita kaikki tuodut testitapaukset
./bin/wpt
Suorita yksi luokka
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Alitestien tuloste
./bin/wpt --category abort --verbose
Tulostaa jokaisen alitestin (PASS / FAIL) kussakin testitapauksessa sekä epäonnistumisten assertion-viestit.
JSON-tuloste
./bin/wpt --json
Koneellisesti luettava läpäisy-/hylkäysyhteenveto CI-putkia tai ohjelmoitua analyysia varten.
Huomautuksia
- Fetch-toimintoa käyttävät testitapaukset käynnistävät automaattisesti mukana toimitetun WPT-testipalvelimen osoitteessa
tests/Wpt/fetch-server.phpportissa127.0.0.1:8765ja sammuttavat sen suorituksen jälkeen. - Kohdan
tests/Wpt/testharness-shim.jstestiharness-sovitin toteuttaa vain tuoduissa testitapauksissa käytetyt WPT:n API-toiminnot (noin 400 riviä verrattuna täyden version noin 3 000-riviseen toteutukseentestharness.js). - Lähdetestitapaukset ovat polussa
tests/Wpt/upstream/(gitin ohittama harva klooni web-platform-tests/wpt). Tuo lisää kopioimalla tiedostot.any.jslähteestäupstream/<area>/kohteeseenfixtures/<category>/, niin suoritin ottaa ne automaattisesti käyttöön.
Palautuskoodit
bin/phasis palauttaa jommankumman kahdesta paluukoodista:
| Koodi | Merkitys |
|---|---|
0 |
onnistuminen — skripti suoritettiin loppuun (myös arvon --ast jälkeen) |
1 |
mikä tahansa muu: sieppaamaton JS-poikkeus, syntaksivirhe, puuttuva tiedosto tai virheelliset argumentit |
Skriptin virheilmoitukset tulostetaan vakiovirheeseen. Virheellisistä argumenteista ja puuttuvista tiedostoista tulostetaan käyttöohje vakiovirheeseen.
Resurssirajat
bin/phasis toimii moottorin oletusasetuksilla, eikä rajoille ole valitsimia: 4,096 kehyksen JS-kutsupinon yläraja, 8,192 kehyksen suoja transpiloiduille sulkeumille ja oletusarvoinen maxLoopIterations 100,000, joka koskee vain puukävelytulkin suorittamaa koodia (katso API: setLimit). Aikarajaa ei ole; kääri komento timeout-komentoon, jos komentosarja ei välttämättä pääty.