autotools:如何测试需要配置文件的程序?
Posted
技术标签:
【中文标题】autotools:如何测试需要配置文件的程序?【英文标题】:autotools: how to test a program which requires a configuration file? 【发布时间】:2016-11-17 08:27:48 【问题描述】:假设我有一个 autotools 项目来构建程序 P 和 P 需要一个配置文件 F。例如,想想 P=vim 和 F=~/.vimrc。或 P=bash 和 F=~/.bashrc。 (在我的情况下,P 实际上是一个库)
autotools 提供的测试工具不允许将参数传递给被测程序(除非使用丑陋的包装器...),因此可以将这样的配置文件视为一种解决方法:因此 test1 需要配置文件 F1, test2 需要 F2...
因此某些测试的 Makefile.am 可能如下所示:
#test ttt is linked with program P and will test P
check_PROGRAMS= ttt
ttt_SOURCES = ttt.c
ttt_LDAD = libP.a
TESTS = ttt
EXTRA_DIST = configs/f1.cfg
现在:如何让 P 在测试期间加载文件 configs/F1、configs/F2... 并在安装后仍然加载 ~/.p_rc?
具有此类配置文件的程序非常常见......如何在 autotools 中正确处理?
【问题讨论】:
【参考方案1】:Automake 通过变量sysconf_DATA
处理配置文件。安装你的包的用户可以通过以下方式配置配置文件的目的地:
sh ./configure --sysconfdir [newpath]
否则,如果不指定,你的配置文件将安装在默认的prefix/etc
中
至于在测试中使用配置文件,您可以使用变量check_DATA
将配置文件加载到与您的测试二进制文件相同的目录中。
【讨论】:
【参考方案2】:我会在包含配置文件路径的库代码中设置一个全局变量。这样,对于每个测试用例,我只需将全局变量设置为相关文件的路径即可设置不同的配置文件。
【讨论】:
以上是关于autotools:如何测试需要配置文件的程序?的主要内容,如果未能解决你的问题,请参考以下文章