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.
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.
0 yorum