Siirry sisältöön

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

Koodi
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

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

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

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

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

Suorita koko testipaketti

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

Shell
./bin/wpt

Suorita yksi luokka

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

Alitestien tuloste

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

Tulostaa jokaisen alitestin (PASS / FAIL) kussakin testitapauksessa sekä epäonnistumisten assertion-viestit.

JSON-tuloste

Shell
./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.php portissa 127.0.0.1:8765 ja sammuttavat sen suorituksen jälkeen.
  • Kohdan tests/Wpt/testharness-shim.js testiharness-sovitin toteuttaa vain tuoduissa testitapauksissa käytetyt WPT:n API-toiminnot (noin 400 riviä verrattuna täyden version noin 3 000-riviseen toteutukseen testharness.js).
  • Lähdetestitapaukset ovat polussa tests/Wpt/upstream/ (gitin ohittama harva klooni web-platform-tests/wpt). Tuo lisää kopioimalla tiedostot .any.js lähteestä upstream/<area>/ kohteeseen fixtures/<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.