由於目前使用的應用程式設定檔是寫在env file
中,且為了讓應用程式的測試是可以依據不同env file
下的參數而有更彈性的執行方式,所以就有了個需求是我必須在執行測試指令前要帶入env file
中的所有環境變數…
一開始的想法很簡單,通常我們可以用下面的方式來執行指令DB_ADDR=127.0.0.1 && go test ./…
,那這樣應該也可以用類似source test.env && go test ./...
,結果完全無法帶入env file
中的資訊。
後來在網路上找了大概知道可以用下面的指令來做到
export $(cat envs/test.env | xargs); go test -p=1 ./
但這樣可能會目前的user session 中有env file
的那些環境變數,不是非常乾淨…
更乾淨的作法會是把上述指令寫進Makefile
中,這樣每次執行完我們的測試以後,環境變數並不會寫進目前的user session中。
e2e_test::
export $(shell cat envs/docker-local.env | xargs); go test ./...
References:
https://stackoverflow.com/questions/19331497/set-environment-variables-from-file-of-key-value-pairs/19331521