2016-11-17 70 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

我會在保存配置文件路徑的庫代碼中設置一個全局變量。對於每個測試用例,我都可以通過簡單地將全局變量設置爲相關文件路徑來設置不同的配置文件。