[Fikir] Dil-İçi Test Bloğu (test { }) ve Yerleşik Test Çalıştırıcı #96
Labels
No Label
cli-ux
faz-plani
felsefe-gozden-gecir
ffi-builtin
fikir
gelecek-vizyon
ir-vm
kalite-mimari
moduller-import
test-senaryosu
tip-sistemi
tooling-lsp
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: saqut/saqut-compiler#96
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Giriş (Nedir, Neden Önemli?)
Rust'ın
#[test]ve Go'nun_test.godosyaları gibi, modern diller test yazmayı dilin/araç zincirinin bir parçası haline getiriyor. saQut için de "fonksiyonumu yazdım, hemen yanına küçük bir test ekleyeyim" akışı düşünülebilir — derleyicinin kendiexamples/fibonacci.sqtgibi referans programlarını doğrulaması için bile yararlı olur.Gelişme (Olası Yaklaşımlar)
test "fibonacci(5) dogru sonucu verir" { assert(fibonacci(5) == 5); }—testveassertyeni anahtar kelimeler/builtin'ler olarak eklenir.saqut test file:kaynak.sqt: dosyadaki tümtestbloklarını çalıştırır,assertbaşarısız olursa hangi test/satır olduğunu raporlar (DiagnosticEngine'in bir "test sonucu" varyantı gibi düşünülebilir).assertbuiltin'i (FFI/builtin kataloğu issue'suyla ilişkili) + basit bir "bu bloğu normal akıştan ayrı çalıştır" kuralı kadar küçük olabilir — büyük bir çerçeveye gerek yok.Açık Sorular
testblokları normal derlemede (saqut run) tamamen yok sayılır mı (production kodundan ayrışma), yoksa özel bir bayrakla mı dahil edilir?assert(...)+ isim kuralına dayalı dosya/fonksiyon tarama) düzeyinde mi kalmalı — ikincisi dil kimliğini (kilitli kararlar) bozmaz.İmza/Yorum: "Günümüzde frameworklerde olan ama derleyiciye gömülü gelebilecek" taleplere iyi bir örnek — minimal versiyonu (
assertbuiltin'i) çok düşük maliyetli.