Open12

tenntenn.go#7 メモ

tenntenntenntenn

参加したい方はconnpassに登録のうえ、こちらに話せそうなネタを投下してください。

podhmopodhmo

実用的(?)ならこの辺の話をしたい。

structのjsonタグのような形式でflagのoptionが設定できるやつ (https://github.com/heetch/confita に近い)
https://github.com/podhmo/flagstruct

testでの func(...) (T, error) がめんどくさいときのやつ。genericsの仕様が悩ましい。
(test helperとtest用のsetup functionを真面目に書けば不要ではみたいな話もある)
https://github.com/podhmo/or

まとまっていない話でよければ少し特殊なgenericsの話がしたい

関数のsignatureの不一致をgenericsの特殊化で対応できるみたいな話
https://gist.github.com/podhmo/7deb69f0c64a247867c56cf8ed48cc35

genericsを経由した結果のreflect.TypeOf()などを何かしら使いたい
https://gist.github.com/podhmo/a63a7671860da214d7b87da80d8c3784

yebis0942yebis0942

gotest.toolsみたいなassertion helperを使うかどうか問題

https://pkg.go.dev/gotest.tools/v3/assert#NilError

h, err := hoge.Open()
assert.NilError(t, err) # エラーがあったらfailしてくれる

t.Helperをいつ使うか問題

t.Helper(): 関数内で実行すると、テストがfailしたときのスタックトレースにその関数が含まれなくなるメソッド

アサーションしないヘルパーではt.Helper()使いたくない気もする。みなさんどうでしょう?

// テストデータを用意するだけのヘルパー関数
func prepareTestdata(t *testing.T, path string) io.Reader {
  f, err := os.Open(...)
  if err != nil { // ここでエラー出たっていうことを明示したい
    t.Fail(err)
  }
  return f
}