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

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

王林
Libérer: 2024-02-05 23:48:03
avant
873 Les gens l'ont consulté

如何在多个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
Copier après la connexion

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 ./... \;
Copier après la connexion

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 ./... -- {} +
Copier après la connexion

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
Copier après la connexion

é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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal