首頁 > 後端開發 > Golang > 如何在多個go模組的父目錄中執行'go test”並在出現錯誤時傳回非零

如何在多個go模組的父目錄中執行'go test”並在出現錯誤時傳回非零

王林
發布: 2024-02-05 23:48:03
轉載
782 人瀏覽過

如何在多个go模块的父目录中运行“go test”并在出现错误时返回非零

問題內容

看看這個目錄結構:

/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中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板