在公式的测试块中访问下载的文件

Access downloaded files in a formula's test block

我正在为包含自己的测试套件的 C 库创建 Homebrew 公式。作为公式 test 块的一部分,我想 运行 下载文件中包含的测试。测试 运行 作为 make 目标 (make test)。但是,Homebrew test 将 运行 阻塞在它们自己的临时目录中,并且下载的文件不在该路径中。也就是说,以下内容不起作用,因为它找不到文件:

test do
  system "make", "test"
end

如何访问文件最初下载和解压的位置?我无法在文档中找到有关该内容的任何信息。或者在这种情况下是否有更好的 Homebrew 测试解决方案?

test do 块用于测试公式是否已正确安装,而不是 运行 测试套装。如果测试不会花费太长时间,您可以 运行 它们作为安装的一部分:

def install
  # ...
  system "make", "test"
  # ...
end

要回答你的问题,没有可靠的方法来获取原始的解压目录,因为它在安装后被破坏并且用户可能已经删除了缓存的 tarball(例如 brew cleanup)所以你必须 re-download它。

一种解决方法是在install步骤中将需要的测试文件复制到某处然后直接使用或者测试时复制到当前目录下,例如:

def install
  # ...
  libexec.install "tests"
end

test do
  cp_r (libexec/"tests"), "."
  cd "tests" do
    # I’m assuming the Makefile's paths can be given
    # as variables here.
    system "make", "test", "LIB=#{lib}", "INCLUDE=#{include}"
  end
end