【问题标题】:autotools: how to test a program which requires a configuration file?autotools:如何测试需要配置文件的程序?
【发布时间】: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 中正确处理?

【问题讨论】:

    标签: autotools automake


    【解决方案1】:

    Automake 通过变量sysconf_DATA 处理配置文件。安装你的包的用户可以通过以下方式配置配置文件的目的地:

    sh ./configure --sysconfdir [newpath]
    

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

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

    【讨论】:

      【解决方案2】:

      我会在包含配置文件路径的库代码中设置一个全局变量。这样,对于每个测试用例,我只需将全局变量设置为相关文件的路径即可设置不同的配置文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-10
        • 1970-01-01
        • 1970-01-01
        • 2010-10-04
        • 2018-06-20
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        相关资源
        最近更新 更多