Maison >développement back-end >Golang >Comment exécuter 'go test' dans le répertoire parent de plusieurs modules go et renvoyer une valeur différente de zéro en cas d'erreur
Regardez cette structure de répertoires :
/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
Vous pouvez exécuter le test en utilisant le code suivant, mais il renverra toujours le code de sortie 0 en cas d'échec.
find . -name go.mod -execdir go test ./... \;
Existe-t-il un moyen de renvoyer une valeur non nulle en cas d'échec ?
Utilisez cette commande :
find . -name go.mod -execdir go test ./... -- {} +
find
命令手册关于-execdir命令{} +
:
find renvoie un statut de sortie non nul si un appel utilisant le formulaire "+" renvoie une valeur non nulle comme statut de sortie. Si find rencontre une erreur, cela provoque parfois une sortie immédiate, de sorte que certaines commandes en attente peuvent ne pas s'exécuter du tout.
Mais go test
不需要 find
fichiers correspondants dans la commande. En fait, cela échouera comme ceci :
$ go test ./... go.mod no required module provides package go.mod; to add it: go get go.mod
échoue car go.mod
est interprété comme un package.
La solution est en {} +
之前添加终止符 --
. Voir syntaxe des indicateurs de ligne de commande :
L'analyse des drapeaux s'arrête avant le premier argument non-drapeau ("-" est un argument sans drapeau) ou après le terminateur "--".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!