如何在Makefile中设置env变量来运行测试?

时间:2015-12-29 18:48:02

标签: bash makefile

我正在尝试创建一个Makefile来运行我的测试。我必须在运行测试之前设置DATABASE_URL变量,但看起来它不起作用。

这是我的Makefile

IP := $(docker-machine ip default)
DATABASE_URL := "postgres://postgres@$(IP)/postgres"
test: 
    @echo ${DATABASE_URL}
    py.test tests

我收到类似这样的错误

E   psycopg2.OperationalError: could not connect to server: No such file or directory
E       Is the server running locally and accepting
E       connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

如果我直接从bash设置DATABASE_URL,我可以运行测试。

1 个答案:

答案 0 :(得分:2)

您应该按照here所述导出DATABASE_URL。

export DATABASE_URL := "postgres://postgres@$(IP)/postgres"

echo ${DATABASE_URL}由make而不是shell解析。只需尝试env | grep DATABASE_URL,只要DATABASE_URL未导出,您就会收到错误。

您期望的行为(导出所有变量)可以通过不带参数的export命令来实现。