概要
小ネタ。前回「外部テストパッケージ」について書きましたが
ついでに、go list
でビルド対象のファイルとテスト対象ファイルを出力してみます。
-f
オプション
go list
コマンドには -f
というオプションがありまして、これを指定すると中で持っている構造体のフィールドをテンプレート形式で指定することができます。
どんな形の構造体なのかは、go help list
するか 以下のページでわかります。
以下のフィールドを指定すると、出力できます。
- GoFiles
- これがビルド対象のファイル
- TestGoFiles
- これが同じパッケージ名のテストファイル
- XTestGoFiles
- これが外部テストパッケージのテストファイル
試してみる
以下のようなパッケージがあったとします。
$ tree ./cmd/golistcmd/ ./cmd/golistcmd/ ├── export_test.go ├── exttestpkg_test.go ├── lib.go ├── lib_test.go └── main.go
exttestpkg_test.go
が外部テストパッケージ。それ以外のxxx_test.goは同じパッケージのテストファイルです。
lib.go
と main.go
が実際の処理が記述されているファイル。
go list
で見てみます。
$ go list -f '{{.GoFiles}}' ./cmd/golistcmd/ [lib.go main.go] $ go list -f '{{.TestGoFiles}}' ./cmd/golistcmd/ [export_test.go lib_test.go] $ go list -f '{{.XTestGoFiles}}' ./cmd/golistcmd/ [exttestpkg_test.go]
確かにちゃんと識別していますね。
指定できるフィールドは他にもいろいろありますが、.Dir
とかはパス欲しいときに便利です。
$ go list -f '{{.Dir}}' ./cmd/golistcmd/ /workspace/gotmp/cmd/golistcmd
おすすめ書籍
自分が読んだGo関連の本で、いい本って感じたものです。
- 作者:Katherine Cox-Buday
- 発売日: 2018/10/26
- メディア: 単行本(ソフトカバー)
- 作者:松尾 愛賀
- 発売日: 2016/04/15
- メディア: 単行本(ソフトカバー)
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 作者:Alan A.A. Donovan,Brian W. Kernighan
- 発売日: 2016/06/20
- メディア: 単行本(ソフトカバー)
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場