2014-01-07 2 views
4

autotools 기반 프로젝트가 있습니다. 괜찮autotools는 테스트 실패시 test-suite.log 내용을 출력합니다.

============================================================================ 
Testsuite summary for 
============================================================================ 
# TOTAL: 1 
# PASS: 0 
# SKIP: 0 
# XFAIL: 0 
# FAIL: 1 
# XPASS: 0 
# ERROR: 0 
============================================================================ 
See tests/python/test-suite.log 
============================================================================ 
make[5]: *** [test-suite.log] Error 1 

이 끝까지 (이 경우 런치 패드 인 buildd에) 제한된 빌더에 발생하지 않습니다, 나는 단지 빌드를 볼 수 있습니다은 "확인하기"대상에 오류가 발생하면,이 같은 것을 볼 수 로그.

은 내가/autoconf를을 autoreconf을 제공해야 매개 변수를 Makefile.am/what하기 위해 작성해야합니까
EXTRA_DIST = test_inetdomain.py test_zone.py test_matcher.py test_dispatch.py test_nat.py test_log.py test_session.py test_stacking.py 

noinst_SCRIPTS = runtest.sh 

TESTS = runalltests.sh 

.PHONY: mkzorp 
mkzorp: 
    make -C ../../zorp 

runtest.sh: mkzorp 

이/어떤 환경 변수 것은 내가 테스트 결과를보고 설정해야합니다 : 영향을받는 디렉토리에 Makefile.am은 다음과 같습니다 stdout/stderr에?

답변

3

"check"대상은 다른 것들에 대한 행동에 따라 달라지기 때문에 automake에서 조금 엄격합니다.

출력을 로그 파일로 리디렉션하는 것이 가장 쉬운 해결책은 테스트 드라이버를 사용자 지정하는 것입니다. 난 당신이 기본 테스트 드라이버를 사용하는 가정, 그래서 라인 (111) 정도 주위를 열고이 같은 것을 볼 수 있어요 : 말

# Report outcome to console. 
echo "${col}${res}${std}: $test_name" 

는 것처럼 (그 후 어딘가에 그 라인을 추가를 스크립트) :

if test $estatus != 0 
then 
    sed -e "s/^/$log_file:\t/" $log_file # but a cat is fine too 
fi 

사용자 정의 테스트 드라이버를 소스 컨트롤에 추가해야합니다. 기록을 위해

, 여기에 작동하지 않습니다 뭔가하십시오 check-local 규칙을 정의 automake는 즉시 테스트가 실패로 정지하기 때문에 그 자체가 작동하지 않습니다 메이크에서 cat $TEST_LOGS를 실행하고 만 check-local, 최대 연결할 수있는 check-TESTS이 성공한 경우에만 실행됩니다.

1

Fedora koji 패키지 빌더에서 동일한 문제가 발생했으며 테스트를 실패한 후에 파일을 인쇄하는 것이 솔루션이었습니다.

페도라 RPM의 경우 쉽습니다.

%check 
make check || cat ./test-suite.log 

그 이후로 테스트 로그의 내용은 테스트가 실패 할 때마다 빌드 로그의 일부였습니다. 그렇게 쉽고 유용합니다.

런치 패드 및 다른 빌더의 절차가 매우 유사 할 것으로 예상됩니다.

+1

을 ||', 종료 코드는 cat' 성공 '하면 성공합니다. 성공적이지 않은 종료 코드를 유지하고 싶다면 다음과 같이하면됩니다 : make check의 경우'/ bin/sh -c '; 그렇다면 사실. else cat path/to/test-suite.log; 출구 1; fi'' – mpartel

+0

@mpartel은 간단한'make check || (cat path/to/test-suite.log; false)'같은 일을합니까? –

0

출력을 표준 출력으로 보내는 데 사용되는 이전 automake 버전. 병렬 테스트가 도입되었을 때이 점이 바뀌었기 때문에 Árpad와 같은 문제가 발생했습니다.

당신은 Makefile.am에 다음을 추가하여 serial test harness를 사용하여 이전 동작을 활성화 할 수 있습니다 :`간단한와

AUTOMAKE_OPTIONS = serial-tests 
관련 문제