@kyanny's blog

創造性は記憶によるところが大きい - 黒澤明

GoLand: go test 実行時に PATH を通す(のを何度も繰り返すのを避ける)

TL;DR

www.jetbrains.com


例えば以下のプロジェクトで、 GoLand のメニューから普通にテストを実行すると uwsgi コマンドに PATH が通っておらずテストが失敗する。 (あらかじめ source venv/bin/activate && pip install -r requirements.txt を実行済みの前提)

https://github.com/kyanny/GoLandRunDebugConfigurationTemplate

上記は意味のない例だが、実際のプロジェクトでは DB migration 用に alembic コマンドを実行してから DB 操作を伴うテストを実行する、のようなシナリオが考えられる。そのような場合も、 venv/bin/alembic に PATH が通っていないと alembic コマンドの実行エラーでテストが失敗する。

PATH を通すには Run -> Edit Confiugrations... から開ける Run/Debug Configurations ウィンドウ内で Environment に追記すれば良いが、 Run/Debug Configuration はテストケースの構成ごとに独立しているので、 Environment の設定も引き継がれない。規模の大きなプロジェクトで全テストを都度流すのは効率が悪いので特定のテストケースだけ選んで実行する場合、 Environment に何度もコピペすることになり面倒。

これを避けるには Run/Debug Configurations 内の Templates を編集すれば良い。テストの構成であれば Go Test テンプレートを選び、 Environment に追記しておく。以後、テストを実行するたびに(必要であれば) Environment が設定済みの新しい Run/Debug Configuration が構成される。

f:id:a666666:20201008022657p:plain
GoLand Run/Debug Configuration Template