Saya telah menulis tes fuzzy yang gagal gagal. Saya telah menambahkan beberapa kode debug, tetapi sekarang saya ingin menjalankan tes sampai gagal sehingga saya dapat mengumpulkan hasil debug.
Saya telah menyiapkan tes sehingga saya dapat menjalankannya menggunakan:
./runtest
Solusi saya saat ini adalah menulis untilfail
skrip:
#!/bin/bash
$@
while [ $? -eq 0 ]; do
$@
done
Kemudian gunakan:
untilfail ./runtest
Apakah ada solusi yang lebih sederhana?
Jawaban:
while
membutuhkan perintah untuk dieksekusi, sehingga Anda dapat menggunakan yang lebih sederhanaIni akan menghentikan loop ketika
./runtest
mengembalikan kode keluar yang bukan nol (yang biasanya menunjukkan kegagalan).Untuk lebih menyederhanakan solusi Anda saat ini, Anda hanya perlu mengubah skrip tillfail Anda menjadi seperti ini:
Dan kemudian Anda bisa menyebutnya dengan perintah apa pun yang sudah Anda gunakan:
sumber
[
adalah perintah. Ini adalah kesalahpahaman umum dengan pengguna baru yang[
merupakan bagian dariif
danwhile
sintaksis.count=0
sebelum loop, kemudian bukannya:
di loop (no-op), put(( count++ ))
- ini menambah penghitung.say
dan seorang pembicara yang dapat Anda gunakanwhile ./runtest; do :; done && say test failed
untuk diberitahu jika itu pernah berhentisay
adalah spesifik macOS.Jika Anda tidak ingin membungkus pipa yang rumit menjadi skrip atau fungsi shell maka ini berfungsi:
Permintaan HTTP dalam hal ini selalu mengembalikan 200 tetapi juga mengembalikan beberapa JSON yang memiliki atribut "HasErrors": true ketika ada kesalahan.
sumber
Setelah memiliki masalah yang sama dalam sistem yang memiliki logika coba-coba ulang yang digandakan di mana-mana, saya membuat alat khusus untuk memecahkan ini yang disebut "coba lagi":
Contoh yang lebih kompleks:
Alat tersedia dari https://github.com/minfrin/retry .
sumber