Pereiti prie turinio

CLI

Phasis turi tris pagrindinius vykdomuosius failus kataloge bin/:

  • bin/phasis — vykdyti JavaScript failus, įvertinti komandinėje eilutėje perduotą kodą, išvesti AST.
  • bin/test262 — vykdyti oficialų ECMAScript atitikties testų rinkinį su Phasis.
  • bin/wpt — vykdyti Web Platform Tests testus su Phasis (URL, koduotė, fetch, antraštės, Blob, AbortSignal, srautai, …).

Įdiegus composer require phasis/phasis, bin/phasis ir bin/test262 susiejami su vendor/bin/. Iš ten veikia tik bin/phasis: bin/test262 reikia test262 git submodulio ir testų klasių, kurių Composer pakete nėra, o bin/wpt apskritai netiekiamas. Abu vykdykite klonavę Phasis saugyklą.

bin/phasis

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

Šios trys formos sudaro visą sąsają. Nėra REPL, stdin įvesties ar modulio vėliavėlės.

Vykdyti failą

Shell
./vendor/bin/phasis script.js

Vykdo script.js kaip klasikinį scenarijų. Jam pasibaigus, viskas, ką scenarijus išvedė naudodamas console.log (ir console.error, console.warn, …), iš karto išspausdinama į stdout. Jei scenarijus išmeta klaidą, jos pranešimas išspausdinamas į stderr, o išėjimo būsena yra 1.

Failas visada analizuojamas kaip klasikinis scenarijus, todėl failas su import / export arba aukščiausio lygio await sukelia SyntaxError. Norėdami vykdyti ES modulį, naudokite Engine::evalAsModule() iš PHP (žr. nuorodąAPI) arba pirmiausia supakuokite kodą.

Įvertinti kodą

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

Argumentas įvertinamas kaip visas scenarijus. Išvedama tik console išvestis; paskutinės išraiškos reikšmė neišvedama, todėl phasis -e '1 + 2' nieko neišspausdina.

Išvesti AST

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

Analizės medis išspausdinamas kaip JSON (su dviejų tarpų įtraukomis). Naudinga derinant analizatoriaus problemas arba kuriant įrankius Phasis pagrindu. Norėdami pasiekti programiškai, naudokite analizatoriaus API.

bin/test262

bin/test262 vykdo oficialų test262 testų rinkinį su Phasis. Jis naudingas kaip regresijos testavimo priemonė teikiant pakeitimus. Visą testų rinkinio momentinę kopiją, esančią COMPAT.md, sukuria susijęs bin/compat-report, kurį rankiniu būdu paleidžiama CI matrica vykdo dalimis.

Vykdyti vieną kategoriją

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

Vykdyti visą testų rinkinį

Shell
./bin/test262 --jobs 4

Konfigūracija

Vykdyklė projekto šakniniame kataloge skaito config/support.php. Joje test262_skipped_features sąrašas tuščias: nepraleidžiama jokia test262 funkcija, įskaitant tail-call-optimization. Faile taip pat išvardytos kategorijos ir testai, kuriuos būtina vykdyti atskirai.

Pats testų rinkinys yra test262 git submodulis; po klonavimo vykdykite git submodule update --init test262. Be jo vykdyklė baigia darbą su pranešimu „test262 suite not found“.

Kitos naudingos vėliavėlės

Vėliavėlė Paskirtis
--failures išspausdinti po vieną eilutę apie kiekvieną nepavykusį testą
--limit N sustoti po pirmųjų N testų
--jobs N vykdyti N testų lygiagrečiai
--files-from file vykdyti tik file išvardytus testus
--json stdout išvesti kompiuterio nuskaitomą suvestinę
--no-progress nerodyti eigos eilutės

Naujausią momentinę kopiją rasite suderinamumo skyriuje.

bin/wpt

bin/wpt vykdo į tests/Wpt/fixtures/ importuotus Web Platform Tests testus. Testų rinkinys apima URL, koduotę, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, visą crypto/SubtleCrypto sąsają, fetch/Request/Response, XMLHttpRequest/XMLHttpRequestUpload ir WebSocket. Kiekvienos srities išlaikymo rodiklių lentelę žr. žiniatinklio API.

Vykdyti visus importuotus testus

Shell
./bin/wpt

Vykdyti vieną kategoriją

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

Kiekvieno potesto išvestis

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

Išveda kiekvieną potestį (PASS / FAIL) kiekviename teste, o nepavykus — ir teiginių pranešimus.

JSON išvestis

Shell
./bin/wpt --json

Kompiuterio nuskaitoma išlaikytų ir nepavykusių testų suvestinė CI konvejeriams arba automatinei analizei.

Pastabos

  • Su fetch susiję testai automatiškai paleidžia kartu pateikiamą WPT testų serverį adresu tests/Wpt/fetch-server.php per 127.0.0.1:8765, o vėliau jį išjungia.
  • Testų aplinkos sąsajos modulis, esantis tests/Wpt/testharness-shim.js, įgyvendina tik tą WPT API sąsajos dalį, kurią naudoja importuoti testai (~400 eilučių, palyginti su visu ~3K eilučių testharness.js).
  • Šaltinio testai yra tests/Wpt/upstream/ (gitignore įtrauktas retas web-platform-tests/wpt išsiregistravimas). Norėdami importuoti daugiau, nukopijuokite .any.js failus iš upstream/<area>/ į fixtures/<category>/; vykdyklė juos aptiks automatiškai.

Išėjimo kodai

bin/phasis baigia darbą grąžindama vieną iš dviejų kodų:

Kodas Reikšmė
0 sėkmė — scenarijus įvykdytas iki galo (taip pat ir po --ast)
1 visa kita: nepagauta JS išimtis, sintaksės klaida, trūkstamas failas arba netinkami argumentai

Scenarijaus klaidų pranešimai spausdinami į stderr. Netinkami argumentai ir trūkstami failai sukelia naudojimo eilutės išspausdinimą į stderr.

Išteklių ribos

bin/phasis veikia su numatytaisiais variklio nustatymais ir neturi ribojimo vėliavėlių: 4,096 kadrų JS iškvietimų steko riba, 8,192 kadrų riba transpilintoms uždaroms funkcijoms ir numatytoji maxLoopIterations reikšmė 100,000, taikoma tik kodui, kurį vykdo medį pereinantis interpretatorius (žr. API: setLimit). Laiko apribojimo nėra; apgaubkite komandą timeout, jei scenarijus gali nepasibaigti.