2012-03-07 2 views
3

automake에서는 TESTS 변수를 사용하여 테스트를 추가 할 수 있지만 이러한 테스트는 자체 테스트가 필요합니다. 인수를 제공하는 표준 테스트 드라이버를 호출 할 방법이 필요합니다. 이 작업을 수행하거나 테스트 중에 표준 makefile 대상을 호출하는 방법이 있습니까?명령 줄 인수가 필요한 automake 테스트

driver.sh suite-a 

그리고 또 다른 시간을 내가 실행해야합니다 :

driver.sh suite-b 

그것은 또 다른 bash는 스크립트 래퍼 각을 추가해야하는 번거 로움 예를 들어

, 내 목표 중 하나가 실행해야 TESTS에 할당 할 시간입니다. 따라서 명령 줄 옵션을 사용하여 TESTS에 추가해야하거나 테스트 자체로서 make 대상을 추가하는 방법이 필요합니다.

어떻게하면됩니까?

답변

2

모두 테스트가 driver.sh 사이 여야하는 경우 TESTS_ENVIRONMENT을 사용할 수 있습니다. Gnu Documentation에서

TESTS_ENVIRONMENT = driver.sh 
TESTS = suite-a suite-b 
+0

감사합니다,하지만 불행히도 테스트를 혼합한다. 나는 별도의 메이크 파일을 만들 수 있다고 가정하지만 새로운 래퍼를 만들 수도 있습니다. –

+0

아마도 테스트 드라이버의 이름을 기반으로 올바른 드라이버를 디스패치하거나 직접 테스트를 호출하는 메타 드라이버가 필요할 수도 있습니다. 이것은 내가 여기서하고있는 것입니다 : http://git.lrde.epita.fr/?p=spot.git;a=blob;f=wrap/python/tests/Makefile.am이 드라이버는 http : //git.lrde.epita.fr/?p=spot.git;a=blob;f=wrap/python/tests/run.in – adl

3

, 당신은 사용할 수 있습니다

TESTS = suite-a suite-b 
LOG_COMPILER = driver.sh 

당신이 시험에 대한 여러 스크립트를하려는 경우, 당신은 트릭을 사용할 수 있습니다

TESTS = suite-a.drv1 suite-b.drv1 suite-c.drv2 suite-d.drv2 
TEST_EXTENSIONS = .drv1 .drv2 
drv1_LOG_COMPILER = driver1.sh 
drv2_LOG_COMPILER = driver2.sh 

이 실행됩니다

driver1.sh suite-a.drv1 
driver1.sh suite-b.drv1 
driver2.sh suite-c.drv2 
driver2.sh suite-d.drv2 

또는

TESTS = suite-a suite-b suite-c suite-d 
LOG_COMPILER = driver-warper.sh 

매우 간단하고 기본적인 예 : 이름 제품군을 기반으로 사용 메타 날실을 거는 사람을 선호 할 수

driver-warper.sh: 
case $1 in 
    'suite-a') ./driver1.sh suite-a 
    ;; 
    'suite-b') ./driver1.sh suite-b 
    ;; 
    'suite-c') ./driver2.sh suite-c 
    ;; 
    'suite-d') ./driver2.sh suite-d 
    ;; 
esac 
exit $? 
+0

'TEST_ENVIRONMENT'와는 달리,이'LOG_COMPILER'는'.sh' 스크립트 호출되는 것은'TESTS'의 각 요소와 함께 호출 될 하나의 인수만을 기대하는 단순한 드라이버입니다 (실제로는 드라이버가 아닙니다). 이것은 스크립트를 통해 다양한 테스트 파일을 신속하게 실행할 수있는 좋은 방법이었습니다. 각각에 대해 반복적 인 작은 래퍼가 필요하지 않았습니다. +1! –

관련 문제