Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menjalankan "go test" dalam direktori induk bagi berbilang modul go dan mengembalikan bukan sifar apabila ralat

Cara menjalankan "go test" dalam direktori induk bagi berbilang modul go dan mengembalikan bukan sifar apabila ralat

王林
王林ke hadapan
2024-02-05 23:48:03761semak imbas

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

Kandungan soalan

Lihat struktur direktori ini:

/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

Anda boleh menjalankan ujian menggunakan kod berikut, tetapi ia akan sentiasa mengembalikan kod keluar 0 jika ia gagal.

find . -name go.mod -execdir go test ./... \;

Adakah terdapat cara untuk mengembalikan nilai bukan sifar jika ia gagal?


Jawapan Betul


Gunakan arahan ini:

find . -name go.mod -execdir go test ./... -- {} +

find命令手册关于-execdir命令{} +

find mengembalikan status keluar bukan sifar jika sebarang panggilan menggunakan borang "+" mengembalikan nilai bukan sifar sebagai status keluar. Jika find menemui ralat, kadangkala ia menyebabkan keluar serta-merta, jadi beberapa arahan yang belum selesai mungkin tidak dijalankan sama sekali.

Tetapi go test 不需要 find memadankan fail dalam arahan. Malah, ia akan gagal seperti ini:

$ go test ./... go.mod
no required module provides package go.mod; to add it:
    go get go.mod

gagal kerana go.mod ditafsirkan sebagai pakej.

Penyelesaian ada di {} + 之前添加终止符 --. Lihat sintaks bendera baris arahan:

Penghuraian bendera berhenti sebelum argumen bukan bendera pertama ("-" ialah argumen bukan bendera) atau selepas penamat "--".

Atas ialah kandungan terperinci Cara menjalankan "go test" dalam direktori induk bagi berbilang modul go dan mengembalikan bukan sifar apabila ralat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam