英文:
Set environment variable for Go tests
问题
我正在尝试这样运行我的Go测试,设置一个环境变量:
FOO=BAR go list ./... | grep -v vendor | xargs -n1 go test -timeout=3s
在我的测试中,我执行了以下操作:
log.Print(os.Getenv("FOO"))
但是返回了一个空字符串。为什么FOO没有被设置?
英文:
I am trying to run my Go tests like this, setting an environment variable:
FOO=BAR go list ./... | grep -v vendor | xargs -n1 go test -timeout=3s
Inside my tests I do:
log.Print(os.Getenv("FOO"))
Which returns an empty string. Why is FOO not set?
答案1
得分: 9
以下是翻译好的内容:
FOO=BAR bash -c 'go list ./... | grep -v vendor | xargs -n1 go test -timeout=3s'
原始命令无法正常工作的一个很好的解释可以在这个问题的答案中找到:https://unix.stackexchange.com/questions/134735/environment-variables-are-not-set-when-my-function-is-called-in-a-pipeline
英文:
FOO=BAR bash -c 'go list ./... | grep -v vendor | xargs -n1 go test -timeout=3s'
A good explanation why the original command doesn't work can be found in the answer to the question: https://unix.stackexchange.com/questions/134735/environment-variables-are-not-set-when-my-function-is-called-in-a-pipeline
答案2
得分: 7
我喜欢在命令模式下使用godotenv。
godotenv -f ./.env go test ./internal/... -cover
答案3
得分: 2
这不是设置管道变量的正确方式。请参考以下示例:
FOO=BAR echo "AAA" | FOO=WAZ printenv | grep FOO
英文:
That's not how setting variables for pipes works. See:
FOO=BAR echo "AAA" | FOO=WAZ printenv | grep FOO
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论