Sehen Sie sich diese Verzeichnisstruktur an:
/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
Sie können den Test mit dem folgenden Code ausführen, aber er gibt immer den Exit-Code 0 zurück, wenn er fehlschlägt.
find . -name go.mod -execdir go test ./... \;
Gibt es eine Möglichkeit, einen Wert ungleich Null zurückzugeben, wenn dies fehlschlägt?
Verwenden Sie diesen Befehl:
find . -name go.mod -execdir go test ./... -- {} +
find
命令手册关于-execdir命令{} +
:
find gibt einen Exit-Status ungleich Null zurück, wenn ein Aufruf mit der „+“-Form einen Wert ungleich Null als Exit-Status zurückgibt. Wenn find auf einen Fehler stößt, führt dies manchmal zu einem sofortigen Beenden, sodass einige ausstehende Befehle möglicherweise überhaupt nicht ausgeführt werden.
Aber go test
不需要 find
passende Dateien im Befehl. Tatsächlich wird es so scheitern:
$ go test ./... go.mod no required module provides package go.mod; to add it: go get go.mod
schlägt fehl, da go.mod
als Paket interpretiert wird.
Die Lösung ist in {} +
之前添加终止符 --
. Siehe Befehlszeilen-Flag-Syntax:
Flag-Parsing stoppt vor dem ersten Nicht-Flag-Argument („-“ ist ein Nicht-Flag-Argument) oder nach dem Abschlusszeichen „--“.
Das obige ist der detaillierte Inhalt vonSo führen Sie „go test' im übergeordneten Verzeichnis mehrerer go-Module aus und geben bei einem Fehler einen Wert ungleich Null zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!