[Altyapı] Golden-Test Koşucusu — ctest entegrasyonu #113

Closed
opened 2026-06-18 22:20:39 +03:00 by saqut · 1 comment
Owner

Giriş (Nedir, Neden Önemli?)

Mevcut durum: derleyici çalışıyor, fibonacci koşuyor — ama hiçbir şey otomatik doğrulanmıyor. Struct, array ve diğer özellikler eklendikçe regresyonları elle fark etmek imkânsız hale gelir. Bu issue, sonraki tüm test issue'larının (#99, #100, #104, #105) ortak bağımlılığıdır — önce bu altyapı kurulur, sonra testler yazılır.


Hedef

`cmake --build build && ctest --test-dir build` ile koşan, her `.sqt` fixture için:

  1. `saqut run` çıktısını golden dosyayla birebir karşılaştıran,
  2. Fark varsa kırmızı satır + diff gösteren,
  3. Yeni test eklemek için tek yerin `tests/golden/` dizinine dosya koymak olduğu

minimal bir golden-test koşucusu.


Tasarım

Dizin düzeni:
```
tests/
golden/
arithmetic/
basic.sqt
basic.expected
loops/
for_basic.sqt
for_basic.expected
opt/
folding.sqt
folding.expected
```

CMakeLists.txt entegrasyonu:

  • `cmake/AddGoldenTest.cmake` yardımcı makro: `add_golden_test(NAME src expected)`
  • Her test: `saqut run file:${src}` çıktısını `${expected}` ile karşılaştır
  • Başarısız testte diff stdout'a basılır

Başarı Kriterleri

  • `cmake --build build && ctest --test-dir build --output-on-failure` çalışıyor
  • En az bir golden test (fibonacci veya basit aritmetik) geçiyor
  • Golden dosyası değiştirilince test kırılıyor (negatif doğrulama)
  • Yeni test eklemek: sadece `tests/golden/X/Y.sqt` + `Y.expected` koymak yeterli (CMake otomatik keşif)

Bağımlılıklar

Bu issue #99, #100, #104, #105'in önkoşuludur. Beyaz-kutu IR testleri (#104, #105) için ayrıca #75 (`saqut ir` kararlı) gereklidir.

### Giriş (Nedir, Neden Önemli?) Mevcut durum: derleyici çalışıyor, fibonacci koşuyor — ama hiçbir şey otomatik doğrulanmıyor. Struct, array ve diğer özellikler eklendikçe regresyonları elle fark etmek imkânsız hale gelir. Bu issue, sonraki tüm test issue'larının (**#99, #100, #104, #105**) ortak bağımlılığıdır — önce bu altyapı kurulur, sonra testler yazılır. --- ### Hedef \`cmake --build build && ctest --test-dir build\` ile koşan, her \`.sqt\` fixture için: 1. \`saqut run\` çıktısını golden dosyayla birebir karşılaştıran, 2. Fark varsa kırmızı satır + diff gösteren, 3. Yeni test eklemek için tek yerin \`tests/golden/\` dizinine dosya koymak olduğu minimal bir golden-test koşucusu. --- ### Tasarım **Dizin düzeni:** \`\`\` tests/ golden/ arithmetic/ basic.sqt basic.expected loops/ for_basic.sqt for_basic.expected opt/ folding.sqt folding.expected \`\`\` **CMakeLists.txt entegrasyonu:** - \`cmake/AddGoldenTest.cmake\` yardımcı makro: \`add_golden_test(NAME src expected)\` - Her test: \`saqut run file:\${src}\` çıktısını \`\${expected}\` ile karşılaştır - Başarısız testte diff stdout'a basılır --- ### Başarı Kriterleri - [ ] \`cmake --build build && ctest --test-dir build --output-on-failure\` çalışıyor - [ ] En az bir golden test (fibonacci veya basit aritmetik) geçiyor - [ ] Golden dosyası değiştirilince test kırılıyor (negatif doğrulama) - [ ] Yeni test eklemek: sadece \`tests/golden/X/Y.sqt\` + \`Y.expected\` koymak yeterli (CMake otomatik keşif) --- ### Bağımlılıklar Bu issue **#99, #100, #104, #105**'in önkoşuludur. Beyaz-kutu IR testleri (#104, #105) için ayrıca **#75** (\`saqut ir\` kararlı) gereklidir.
saqut added the
kalite-mimari
test-senaryosu
labels 2026-06-18 22:21:11 +03:00
Author
Owner

Tamamlandı. cmake/run_golden.cmake + tests/golden/ dizini oluşturuldu. ctest --test-dir build: 4/4 yeşil (fibonacci, string, arithmetic + birim testleri). Negatif doğrulama da geçti.

Tamamlandı. cmake/run_golden.cmake + tests/golden/ dizini oluşturuldu. `ctest --test-dir build`: 4/4 yeşil (fibonacci, string, arithmetic + birim testleri). Negatif doğrulama da geçti.
saqut closed this issue 2026-06-18 22:31:38 +03:00
Sign in to join this conversation.
No description provided.