Bitcoin-Core-Development

每次查看開放的 Bitcoin Core PR 時,我都應該執行測試嗎?

  • September 27, 2020

我正在審查一個開放的比特幣核心 PR。我應該執行測試還是可以依靠 CI(持續集成)輸出來擷取測試失敗?

如果我要 ACK 送出,我應該設法擷取不穩定的測試,在不同的硬體上執行測試,手動嘗試額外的測試案例嗎?

這個問題是由 IRC 上的 robots-dreams 提出的。

比特幣核心貢獻指南建議發布概念 ACK,方法 ACK:

審查以 ACK BRANCH_COMMIT 開始,其中 BRANCH_COMMIT 是 PR 分支的頂部,然後是審查者如何進行審查的描述。

正如您所建議的那樣,“我在典型硬體上執行測試”通常並不是特別有用,因為比特幣核心已經在穩步改進 CI 工具,但也有例外,例如測試不涵蓋 GUI 更改,並且對某些 IBD 執行測試是有價值的,驗證更改,重要更改也是如此。

根據 PR 的性質,您可能希望執行不那麼簡單的工作流程,例如發送和接收交易。

為了進一步確保您對程式碼更改感到滿意,您可以添加調試列印、斷言、自定義日誌記錄和完整性檢查。您可以更改更新檔或使用gdb 和 lldb 等調試工具。

你可以在沒有 CI 或測試套件的情況下破壞很多東西。手動測試可以捕捉到程式碼審查中可能遺漏的東西。在調試建構 PR 時,您可能會看到警告或錯誤,否則您可能看不到,因為它隱藏在 CI 作業日誌之一中,或者因為您的編譯器、配置或系統不同。

如果 PR 正在實現特定的 BIP,您可以從程式碼中的 BIP 中找到特定規則,改變(中斷)程式碼並檢查測試是否因此失敗。

另一件要考慮的事情是 PR 中添加的額外測試是否足夠。

[編輯:您可以測試 CI 不會測試的範例是更改 PR 中的一行程式碼,重新建構(即make再次執行)並執行您期望失敗的測試(或多個測試)結果。Jon Atack 建議這是審查PR #19951的好方法,在撰寫本文時(2020 年 9 月)它是開放的並正在尋求審查。]

這個答案是從 IRC 上的 sipa、jonatack、hebasto、jnewbery、robot-dreams、instagibbs 的評論中收集的。

引用自:https://bitcoin.stackexchange.com/questions/98911