CLI
Phasis, bin/ içinde üç ana yürütülebilir dosya sunar:
bin/phasis— JavaScript dosyalarını çalıştırır, komut satırından iletilen kaynak kodunu değerlendirir ve AST'leri döker.bin/test262— Resmî ECMAScript uygunluk test paketini Phasis üzerinde çalıştırır.bin/wpt— Web Platform Tests fixture'larını Phasis üzerinde çalıştırır (URL, kodlama, fetch, başlıklar, Blob, AbortSignal, akışlar, …).
composer require phasis/phasis sonrasında bin/phasis ve bin/test262, vendor/bin/ içinden bağlanır. Oradan yalnızca bin/phasis çalışır: bin/test262 için test262 git alt modülü ve Composer paketinde bulunmayan test sınıfları gerekir; ayrıca bin/wpt hiç dağıtıma eklenmez. İkisini de Phasis deposunun klonundan çalıştırın.
bin/phasis
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>
Arayüzün tamamı bu üç biçimden ibarettir. REPL, stdin girdisi veya modül bayrağı yoktur.
Dosya çalıştırma
./vendor/bin/phasis script.js
script.js öğesini klasik betik olarak çalıştırır. Tamamlandığında, betiğin console.log (ve console.error, console.warn, …) ile yazdığı her şey bir defada stdout'a yazdırılır. Betik hata fırlatırsa hata mesajı stderr'e yazılır ve çıkış durumu 1 olur.
Dosya her zaman klasik betik olarak ayrıştırılır; bu nedenle import / export veya üst düzey await içeren bir dosya SyntaxError hatası verir. ES modülü çalıştırmak için PHP içindeki Engine::evalAsModule() öğesini kullanın (API başvurusuna bakın) veya önce kodu paketleyin.
Kaynak kodunu değerlendirme
./vendor/bin/phasis -e 'console.log(Math.PI * 2)'
# 6.283185307179586
Bağımsız değişkenin tamamı bir betik olarak değerlendirilir. Yalnızca console çıktısı yazdırılır; son ifadenin değeri yazdırılmaz, bu nedenle phasis -e '1 + 2' hiçbir şey yazdırmaz.
AST'yi dökme
./vendor/bin/phasis --ast script.js
./vendor/bin/phasis -e 'a + b' --ast
Ayrıştırma ağacını JSON olarak yazdırır (iki boşluk girintili). Ayrıştırıcı sorunlarını ayıklamak veya Phasis üzerine araçlar geliştirmek için kullanışlıdır. Programatik erişim için ayrıştırıcıAPI öğesini kullanın.
bin/test262
bin/test262, resmî test262 test paketini Phasis üzerinde çalıştırır. Değişikliklere katkı sağlarken regresyon test düzeneği olarak kullanışlıdır. COMPAT.md içindeki tam takım anlık görüntüsü, elle başlatılan CI matrisinin parçalara bölerek çalıştırdığı ilgili bin/compat-report tarafından üretilir.
Tek bir kategoriyi çalıştırma
./bin/test262 --category built-ins/Array
Takımın tamamını çalıştırma
./bin/test262 --jobs 4
Yapılandırma
Çalıştırıcı, proje kökünden config/support.php dosyasını okur. test262_skipped_features listesi boştur: tail-call-optimization dahil hiçbir test262 özelliği atlanmaz. Dosyada ayrıca kategoriler ve tek başına çalıştırılması gereken testler listelenir.
Test paketinin kendisi test262 git alt modülüdür; klonladıktan sonra git submodule update --init test262 çalıştırın. Bu olmadan çalıştırıcı "test262 suite not found" mesajıyla çıkar.
Diğer kullanışlı bayraklar
| Bayrak | Amacı |
|---|---|
--failures |
Başarısız olan her test için bir satır yazdırır |
--limit N |
İlk N testten sonra durur |
--jobs N |
N testi paralel çalıştırır |
--files-from file |
Yalnızca file içinde listelenen testleri çalıştırır |
--json |
stdout'a makinece okunabilir özet yazar |
--no-progress |
İlerleme satırını gizler |
En son anlık görüntü için Uyumluluk bölümüne bakın.
bin/wpt
bin/wpt, tests/Wpt/fixtures/ içine aktarılan Web Platform Tests fixture'larını çalıştırır. Derlem; URL, kodlama, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, crypto/SubtleCrypto arayüzünün tamamını, fetch/Request/Response, XMLHttpRequest/XMLHttpRequestUpload ve WebSocket öğelerini kapsar. Alanlara göre geçiş oranı tablosu için Web API'leri bölümüne bakın.
Aktarılan tüm fixture'ları çalıştırma
./bin/wpt
Tek bir kategoriyi çalıştırma
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob
Alt testlere göre çıktı
./bin/wpt --category abort --verbose
Her fixture içindeki tüm alt testleri (PASS / FAIL) yazdırır; başarısızlıklarda onaylama mesajlarını da gösterir.
JSON çıktısı
./bin/wpt --json
CI işlem hatları veya betiklerle yapılan analiz için makine tarafından okunabilir başarı/başarısızlık özeti.
Notlar
- Fetch kullanan fixture'lar, paketle gelen WPT test sunucusunu
tests/Wpt/fetch-server.phpadresinde127.0.0.1:8765üzerinde otomatik başlatır ve ardından kapatır. tests/Wpt/testharness-shim.jskonumundaki harness shim'i, içe aktarılan fixture'ların kullandığı WPT API yüzeyini uygular (tam ~3K satırlıktestharness.jsile karşılaştırıldığında ~400 satır).- Kaynak fixture'lar
tests/Wpt/upstream/konumunda bulunur (web-platform-tests/wpt deposunun git tarafından yok sayılan seyrek checkout'u). Daha fazlasını içe aktarmak içinupstream/<area>/konumundaki.any.jsdosyalarınıfixtures/<category>/konumuna kopyalayın; çalıştırıcı bunları otomatik olarak alır.
Çıkış kodları
bin/phasis iki koddan biriyle çıkar:
| Kod | Anlamı |
|---|---|
0 |
başarı — betik, --ast sonrasında da tamamlanana kadar çalıştı |
1 |
diğer her şey: yakalanmamış bir JS istisnası, sözdizimi hatası, eksik dosya veya geçersiz bağımsız değişkenler |
Betikten kaynaklanan hatalar iletileri stderr'e yazdırır. Geçersiz bağımsız değişkenler ve eksik dosyalar kullanım satırını stderr'e yazdırır.
Kaynak sınırları
bin/phasis, motorun varsayılan ayarlarıyla çalışır ve sınırlar için bayrak sunmaz: 4,096 karelik JS çağrı yığını sınırı, dönüştürülmüş closure'lar için 8,192 karelik koruma ve yalnızca ağaç dolaşan yorumlayıcının çalıştırdığı kod için geçerli olan varsayılan maxLoopIterations değeri olan 100,000 (bkz. API: setLimit). Zaman sınırı yoktur; bir betiğin sonlanmama ihtimali varsa komutu timeout içine alın.