2017-05-13 1 views
2

정적 라이브러리를 컴파일하기위한 makefile이 있습니다. 이 메이크 파일에는 정적 라이브러리와 관련된 단위 테스트 슈트를 컴파일하는 규칙이 있습니다. 테스트 스위트가 컴파일되면 파이썬 스크립트가 호출되어 테스트를 실행하고 결과를 로깅합니다.단위 테스트가 실패한 경우 make가 실패했습니다.

unit: 
    $(MAKE) -C cXbase/unit 
    python $(TESTS_RUNNER) $(UNIT_TESTS_EXEC) $(UNIT_TESTS_LOG) 

필자는 테스트 호출을 휴대용으로 만들기 위해 Python을 사용합니다. 지금 당장은 모든 것이 잘 작동합니다. 테스트가 컴파일되고 테스트 주자가 호출되어 Linux와 Windows에서 모든 것을 올바르게 기록합니다. 단, 테스트가 실패 할 경우 전체 프로세스를 중단하고 오류를 반환하고 싶습니다. 좀 더 정확히 말하면, 단위 테스트가 실패하거나 많은 경우 make all 또는 이되지 않게하고 싶습니다.

단위 테스트가 실패하면 Python 스크립트가 특정 종료 코드를 반환합니다. 내가 수있는 방법을 휴대용으로 캡처하고 그 종료 코드를 캡처하면 실패하게 만들 수 있습니다.

이 작업을 수행하는 방법에 대한 권장 사항이 있으십니까? 나는 다른 곳에서 설득력있는 또는 휴대 가능한 것을 발견하지 못했습니다.

감사합니다.

+1

당신이 * 반환 값 * 또는 * 종료 코드 * 대해 이야기 :

나는 여기에 대해 알게? – Beta

+0

레시피의 명령이 0이 아닌 종료 상태를 제공하면 Make는 중단합니다. 그것이 충분하지 않다면, 우리는 명령 * 내에서 종료 상태 *를 포착해야하며 질문은 ** "얼마나 휴대 성이 충분합니까?"** 나는 bash에서 그것을 포착하고 테스트하는 방법을 알고 있습니다. 다른 쉘에 관심이 있습니까? – Beta

+0

@ 베타 나는 bash와 cmd (Windows)에서 작동하고 싶습니다 – BobMorane

답변

0

솔루션은 내가 상상했던 것보다 훨씬 간단하다고 봅니다. 파이썬 종료 코드는 make에 직접 반영되어 종료 코드가됩니다. 즉, 스크립트가 실패 할 경우 (0이 아닌 종료 코드) make은 명령 오류로 간주하고 중지합니다.

필자는 Python 스크립트 종료 코드를 테스트 할 때 오류가 발생하여이를 숨겼습니다. 이제 해결되었고 완벽하게 작동합니다. Handling exit code returned by python in shell script

관련 문제