2016-11-17 19 views
1

假设我有一个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?

有这样的配置文件的程序是非常commun ....这是怎么在autotools正确hanlded?

回答

1

Automake通过变量sysconf_DATA处理配置文件。在安装包可以配置配置的目标用户文件通过:

sh ./configure --sysconfdir [newpath] 

否则,如果你不指定它,您的配置文件将被安装在默认prefix/etc

至于使用配置文件,您可以使用变量check_DATA将配置文件加载到与您的测试二进制文件相同的目录中。

0

我会在保存配置文件路径的库代码中设置一个全局变量。对于每个测试用例,我都可以通过简单地将全局变量设置为相关文件路径来设置不同的配置文件。