Maison  >  Article  >  développement back-end  >  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

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

王林
王林avant
2024-02-05 23:48:03701parcourir

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

Contenu de la question

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 ?


Bonne réponse


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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer