Heim  >  Artikel  >  Backend-Entwicklung  >  So führen Sie „go test“ im übergeordneten Verzeichnis mehrerer go-Module aus und geben bei einem Fehler einen Wert ungleich Null zurück

So führen Sie „go test“ im übergeordneten Verzeichnis mehrerer go-Module aus und geben bei einem Fehler einen Wert ungleich Null zurück

王林
王林nach vorne
2024-02-05 23:48:03700Durchsuche

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

Frageninhalt

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?


Richtige Antwort


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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen