我正在为包含自己的测试套件的C库创建一个Homebrew公式。作为公式的test
块的一部分,我想运行下载文件中包含的测试。测试以make
目标(make test
)运行。但是,Homebrew test
块在其自己的临时目录中运行,并且下载的文件不在路径中。也就是说,以下不起作用,因为它找不到文件:
test do
system "make", "test"
end
如何访问最初下载和解压缩文件的位置?我无法在文档中找到有关该信息的任何信息。或者在这种情况下是否有更好的Homebrew测试解决方案?
答案 0 :(得分:1)
test do
块用于测试公式是否已正确安装,而不是运行测试套件。如果测试时间不长,您可以在安装过程中运行它们:
def install
# ...
system "make", "test"
# ...
end
要回答你的问题,没有可靠的方法来获取原始的解压缩目录,因为它在安装后被销毁,用户可能已经删除了缓存的tarball(例如brew cleanup
),因此你必须重新下载它
解决方案是在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