2013-03-14 3 views
5

레일스 애플리케이션에서 (OS-X에서) 개발 중이며 rspec을 통해 테스트 스위트를 자주 실행하는 것을 발견했습니다. 매번 발생하지는 않습니다. 나는 매번 동일한 장소에서 일어나는지를보기 위해 suite를 실행할 때 --format documentation을 추가하려고 시도했다.Rspec 프로세스가 다른 위치에서 중지되므로 프로세스를 종료 할 수 없습니다. 진단하는 방법?

kill -9으로 프로세스를 죽이려고했습니다. 그런 다음 프로세스 상태가 ?E 인 이름을 (루비)로 변경합니다. 이 link은 시스템 호출이 완료 될 때까지 프로세스가 차단되어 있음을 나타냅니다. 이 과정을 죽이기 위해 매번 컴퓨터를 다시 시작해야합니다.

나는 rvm, ruby, mysql 및 imagemagick을 다시 설치하려고 시도했습니다. 이 프로젝트는 imagemagick (mini_magick을 통해) 보석을 사용하고 있으며 rspec을 차단하는 명령 중 하나 일 수 있습니다. 나는 각각의 mini_magick 명령에 대해 puts 문을 추가하여 실행이 완료되도록하고 모든 것이 잘 보였다.

이 문제를 진단하는 방법에 대한 제안 사항을 찾고 있습니다.

+0

'-e' 스위치를 사용하면 지정한 패턴을 기반으로 특정 사양 만 실행할 수 있습니다. 자세한 정보는'rspec -h'를 실행하십시오. – iain

+0

개별 사양 또는 작은 사양의 하위 집합 (단일 파일)을 실행할 때 문제가 발생하지 않는 것 같지만 전체 테스트 제품군을 실행하는 경우 문제가 발생하지 않습니다. 프로세스가 차단 된 것을 디버깅하는 방법을 찾고 있습니까? – MAckerman

+0

적어도 사양 중 일부는 게시해야한다고 생각합니다. 적어도 수행하려고하는 것에 대한 아이디어를 얻을 수는 있습니다. 또한 사양이 임의의 순서로 실행되고 있지 않은지 확인하십시오. RSpec을 사용하여 spec_helper 파일을 생성 한 경우 무작위 순서가 기본값으로 추가됩니다. – iain

답변

0

문제가 주문 종속성 버그 일 수 있습니다. 시드를 함께 전달할 수 있으며 주문이 일관되게 유지됩니다. RSpec은 랜더 마이저를 시드하기 위해 사용한 난수를 출력합니다. 이 번호를 사용하여 동일한 순서로 rspec 실행 --order rand:3455