在普通测试中找到 lib 目录

finding lib directory during common test

我的问题是,我的 Erlang 应用程序应该如何可靠地在 priv 目录中找到二进制文件,而不仅仅是在生产环境中;安装正确,但在普通测试期间?

我今天意识到,当我将 travis-ci 配置添加到旧的 Erlang 应用程序并将其推送到 git-hub 时,它在本地工作的过程对我来说是一个比我想象的更脆弱。 travis-ci 构建失败,因为它并非不合理地将我的存储库检出到以存储库命名的目录中,该目录的形式为 erlang-APP。不过,我的应用程序在本地位于一个名为 APP-VSN 的目录中。

结果是调用 code:lib_dir(APP) returns 在本地的公共测试 运行 中得到正确的结果,但是如果我将当前目录重命名为 erlang-APP APP-VSN(或者只是 APP 也可以)我的本地构建失败,就像 travis-ci 一样,因为 code:lib_dir(APP) returns {error,bad_name}.. 的行为已添加到 rebar ct.

的库路径中

将我的 github repo 从 erlang-APP 重命名为 APP 解决了 travis-ci 构建失败... 但只知道构建测试pass 取决于 repo 检出到的目录的名称不适合我。

一种方法是使用软 link(在版本控制下的回购中,或在初始化测试时创建),并使您的 Erlang 代码路径通过 link。例如,“./APP”->“.”,或“./lib/APP”->“...