TestScript

Go TestScript

August 7, 2022
Go, Golang, TestScript

Go TestScript # 概要 # TestScript は元々 Go のコンパイラをテストするために作成されたもの。 https://cs.opensource.google/go/go/+/release-branch.go1.19:src/cmd/go/script_test.go シェルスクリプトのように記述でき、ファイルシステム上で動作するものをテストできる。 定義済のコマンドは以下で確認できる。 https://cs.opensource.google/go/go/+/release-branch.go1.19:src/cmd/go/script_test.go 独自のコマンドを追加することができる。 Go のコンパイル時に使用される TestScript は以下で確認できる。 https://cs.opensource.google/go/go/+/master:src/cmd/go/testdata/script/ TestScript は txtar (テキストベースのアーカイブ形式) によって表現されている。 https://pkg.go.dev/golang.org/x/tools/txtar Go 内部のテストコードを使用できるよう、再構成されたものが以下で公開されている。 https://github.com/rogpeppe/go-internal/tree/master/testscript テストコードの書き方 # 定義済コマンドをテストで使用 # testdata/script/TestFoo/hello-world.txt exec echo 'hello world!' stdout 'hello world!\n' sample_test.go package sample_test import ( "path/filepath" "testing" "github.com/rogpeppe/go-internal/testscript" ) var scriptDir = filepath.Join("testdata", "script") func TestFoo(t *testing.T) { t.Parallel() testscript.Run(t, testscript.Params{ Dir: filepath.Join(scriptDir, t.Name()), WorkdirRoot: t.TempDir(), }) } 独自のコマンドを作成してテストで使用 # testdata/script/TestFoo/hello-world. ...