Rust'ta Derlenmemesi Gereken Kod Testi Nasıl Kurtarıyor

Bir Rust ekibi, haftalık iş rutininde ilginç bir anı yaşadı: bir test başarısız oldu çünkü kod başarılı bir şekilde derlendi. Oysa test tam da bunu yakalamak için yazılmıştı.

Ekip, kimlik bilgilerini yöneten küçük bir Rust kütüphanesi bakıyor. Bunun içinde `Secret` adlı bir wrapper var, kasıtlı olarak `Display` trait'ini uygulamıyor. Böylece gizli değeri kodda taşıyabiliyorsun, ama `format!("{}", secret)` gibi bir çağrı derleyici tarafından reddediliyor. Yanlışlıkla log mesajına sızmıyor.

Birkaç ay önce, bu davranışı garantilemek için bir `compile_fail` doctest eklemişler. Test, Display ile Secret'ı formatlamaya çalışan kod parçasının derlenmeyi reddedip reddedilmediğini kontrol ediyor.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Geçen hafta biri, biçimlendirme kodunu temizlerken birkaç tipe `Display` implementasyonu eklemişti. Değişiklik yalıtılmış olarak tamamen mantıklı görünüyordu. Normal testler geçti. Ama o doctest başarısız oldu, artık Secret'ı Display ile formatlamak derleniyordu.

Bu hatayı yakalamak için yazılmış test, bir regresyon saldırısını engelledi. Ekip, kütüphanenin temel güvenlik özelliğini yanlışlıkla ortadan kaldırmaktan kurtuldu. Compile_fail testleri, Rust'ta özellikle kritik. Hatalı bir API tasarımını ya da güvenlik açığını erken dönemde yakalamanın güçlü bir yoludur.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz