2010-02-16 4 views
1

나는 파이썬 프로젝트 빌딩에 허드슨을 가지고있다. 대부분의 단위 테스트가 제대로 작동하지만 파일 시스템에 쓰려면 (예 : tarfiles를 사용하는 클래스가 있어야 함)이 필요합니다. tmp 디렉토리 (중간 tearDown 메소드 상대 tmp 디렉토리 아래의 모든 파일을 제거하십시오.허드슨이 상대 디렉터리를 탐색 할 수 없다

  • SRC
    • 테스트
      • 기구 (여기 정적 파일)
      • 단위 (여기에 단위 테스트)
    • 의 tmp : 여기

      내 프로젝트 구조입니다
    • 나는 허드슨이 파일을 처리하지 않기 때문에 이런 일이 가정

      OSError: [Errno 2] No such file or directory: '../../tmp' 
      

      디렉토리에 단위 아니라 다른 작업 디렉토리 동안 : 여기

는 예를 들어 오류입니다.

허드슨의 작업 디렉토리 란 무엇입니까? 그것을 구성 할 수 있습니까? 상대 경로가 전혀 작동 할 수 있습니까?

답변

1

작업 영역을 어떻게 초기화하는지는 잘 모르겠지만, 일반적으로 프로젝트를 버전 제어에서 작업 영역으로 확인하면됩니다. 귀하의 경우 사실이라면 가장 쉬운 방법은 tmp 디렉토리를 버전 제어에 추가하는 것입니다 (예 : 버전 제어 시스템이 디렉토리를 지원하지 않는 경우 README 파일과 함께). 그런 다음 tmp 디렉토리가 작업 공간으로 체크 아웃되고 모든 것이 다시 작동합니다.

+0

내 단위 테스트가 모든 tearDown을 지우므로 수동으로 tmp 디렉토리를 추가했습니다. 또한 nosetests를 -w 플래그와 함께 호출해야합니다. nosetests -w tests/unit --with-xunit –

+1

실제로 테스트에서만 사용되는 임시 디렉토리 인 경우 setUp에 의해 만들어 져서 제거되어야합니다. 같은 시험의 눈물. 나는 항상 임시 또는 결과 디렉토리를 SCM에 추가하는 것을 거부합니다. – cringe

+0

@cringe - 좋은 조언; 나는 모든 소스 코드와 관련된 tmp 디렉토리 대신 올바른 tmp 디렉토리를 사용하도록 단위 테스트를 수정했다. –

0

나는 허드슨에 대한 anyhting 모르지만, 이것은 내가 상대 경로가 제대로 작동하는 것을 보장하기 위해 할 것입니다 :

os.chdir(os.path.dirname(sys.argv[0])) 
2

허드슨의 각 작업은 /path/to/hudson/jobs/[job name]/workspace/

에서, 자신의 작업 디렉토리의가

개별 작업의 경우 "사용자 지정 작업 영역 사용"옵션 ("고급 프로젝트 옵션"아래)을 설정하여 작업 영역의 위치를 ​​정의 할 수 있습니다.

테스트가 실행되는 방법에 따라 다르 겠지만 작업의 작업 영역을 검사하면 허드슨이 파일을 쓰는 위치를 찾을 수 있습니다.

관련 문제