看看這個目錄結構:
/root /hoge go.mod go.sum main.go /test main_test.go /unit sub_test.go /fuga go.mod go.sum main.go /test main_test.go
您可以使用以下程式碼執行測試,但如果失敗,它將始終返回退出程式碼 0。
find . -name go.mod -execdir go test ./... \;
如果失敗,有沒有辦法回傳非零值?
使用此指令:
find . -name go.mod -execdir go test ./... -- {} +
find
指令手冊關於-execdir指令{}
:
如果任何使用「 」形式的呼叫傳回非零值作為退出狀態,則 find 傳回非零退出狀態。如果 find 遇到錯誤,有時會導致立即退出,因此某些掛起的命令可能根本無法運作。
但是 go test
不需要 find
指令中的符合檔。事實上,它會這樣失敗:
$ go test ./... go.mod no required module provides package go.mod; to add it: go get go.mod
失敗是因為 go.mod
被解釋為一個套件。
解決方法是在 {}
之前加入終止符 --
。請參閱命令列標誌語法:
標誌解析在第一個非標誌參數(“-”是非標誌參數)之前或終止符“--”之後停止。
以上是如何在多個go模組的父目錄中執行“go test”並在出現錯誤時傳回非零的詳細內容。更多資訊請關注PHP中文網其他相關文章!