테스트 스위트를 통합하는 방법 gitpre-commithook에 tcltest

저는 버전 제어가 Git을 기반으로 하는 TCL 프로젝트에서 작업하고 있습니다. 그래서 좋은 품질의 코드를 생성하기 위해 pre-commithook에서 테스트 실행을 설정했습니다.하지만 실행되고(명령줄에 추적이 표시되는) 테스트 중 하나가 실패하더라도 Git는 커밋을 실행합니다. 그래서 수동으로 후크를 실행하여 에러코드를 확인하고 Git이 중지되지 않는 이유를 설명하는 null임을 알게 되었습니다. (tclsh에서 테스트 스크립트를 실행하면 $?)가 0이 됩니다.그래서 제 질문은 이 마지막 줄에 대한 것입니다. $?0과 마찬가지로 tcl 테스트 중 하나를 실패하면? 그리고 실패 시 중지되는 간단한 사전 커밋 훅을 어떻게 달성할 수 있습니까?저는 tclest 문서를 읽고 다시 읽었는데 이 에러코드에 대한 설정이나 정보를 볼 수 없었습니다. 그리고 EROR 또는 FAILED가 있는지 확인하기 위해 tcl 테스트 출력을 구문 분석하지 않아도 됩니다… 편집 : 버전 TCL 버전 : 8.5tclest 버전 : 2.3.4 이것은 테스트 스위트 실행 방법에 따라 달라집니다. 일반적으로 다음과 같이 표시되는 tests/all.tcl이라고 하는 파일을 실행합니다.최종 runAllTests는 성공(0) 또는 실패(1)를 나타내는 부울을 반환합니다. 이를 사용하여 마지막 행을 다음과 같이 변경하여 종료 코드를 생성할 수 있습니다.

몇 가지 조사를 한 후에 몇 가지 요인이 저에게는 불리했지만 작동시킬 수 있었습니다.runAllTests가 아무것도 반환하지 않는 tcltest 버전 2.3.4와 함께 이전 TCL 버전(8.5)을 사용해야 합니다.설명서가 사용법에 대해 명확하지 않아서 테스트 스크립트 마지막에 cleanup Tests를 작성하는 것을 잊었습니다. 지금은 명확하지 않습니다. run All Tests를 통해 테스트를 실행하려면 이것이 필요하다는 것을 방금 알았습니다. 이것은 실제로는 명확하지 않습니다).다음은 주로 Hai의 DevBits 블로그 투고를 바탕으로 한 저의 솔루션입니다.all.tcl 그에 대한 몇 가지 생각: $numTests(Total) == 0을 실패 조건으로 추가하였습니다. 이것은 테스트가 발견되지 않았다는 것을 의미하며 이는 분명히 잘못된 조건입니다.이는 테스트 구성의 예외를 포착하지 않습니다. 예를 들어 존재하지 않는 파일을 가리키는 source 명령은 테스트 스캐폴딩에서 일부 실패를 나타냅니다. 이것은 다른 테스트 프레임워크에서 error로 포착될 것입니다. (아, pytest, 보고 싶습니다!)

일부 테스트 스크립트에서 이 재정의를 사용합니다.

error: Content is protected !!