2010-06-28 6 views
3

우리 팀은 SCons에 기반한 빌드 시스템을 만들고 있습니다. 우리는 우리 자신의 site_scons/site_tools 폴더에 많은 수의 헬퍼 클래스를 만들었습니다.SCons 수정을 테스트하는 방법

내 작업은 pyunit을 사용하여 코드에서 테스트를 만들고 실행하는 것입니다. 그들이 올바른 SCons는 환경 설정을 필요로 아마 것입니다 주어진, 우리의 테스트를 호출 할 수있는 가장 좋은 방법은 무엇입니까 : 내 질문은 이제

SConstruct 
our_source_code/ 
    Sconscript 
site_scons/ 
    site_tools/ 
     a.py 
     b.py 
     c.py 
     tests/ 
      test_a.py 
      test_b.py 
      test_c.py 

: 테스트 코드는 아마 같은 디렉토리 레이아웃을 찾고 뭔가, 하위 폴더에 살고있는 것 쪽으로? (a.py는 SCons.Environment를 사용합니다)

빌더 또는 명령어를 추가합니까? 또는 다른 것?

답변

2

가장 좋은 방법은 test setup code from SCons itself을 사용하는 것입니다. 테스트 파일은 일반 SCons tarball과 함께 제공되지 않으므로 SCons에 대한 SVN 체크 아웃이 필요합니다. 팀의 모든 사람이 도구를 작성하고 테스트를 실행하는 것은 아니므로이 방법이 유용 할 것입니다. 예 : this is the test for javac. 기본적으로 원하는 파일을 작성하고 SConstruct를 실행 한 다음 예상 결과를 확인하십시오. Python 스크립트로 도구를 모의 해 실제로 필요한 플래그와 파일로 호출되도록 할 수 있습니다. 예를 들면 :

import TestSCons 
test = TestSCons.TestSCons() 
test.write('SConstruct', '''env = Environment(tools = ["yourtool"]) 
env.RunYourTool()''') 

test.write('sourcefile.x', 'Content goes here') 
test.run(arguments = '.', stderr = None) 

test.must_match('outputfile', 'desired contents') 
test.pass_test() 

구글에서 겉으로는 소멸 SCons는 확장이다 swtoolkit wiki에 쓰기 SCons는 도구 테스트에 대한 자세한 지침도 있습니다. 위키에 대한 정보는 여전히 유용하며 사용자 정의 SCons 도구에 대한 테스트를 작성하는 좋은 예가 있습니다.

+0

좋은 링크, 고마워. 우리는 개발 초기 단계이므로 "Scons 테스트"를 일반 Continuous Integration 빌드에 통합하는 것이 아이디어이므로 불행히도 모든 사람이 테스트를 실행할 수 있어야합니다. – Justicle

+0

글쎄, 모든 사람 - 도구의 개발자 + 기계를 빌드합니다. – richq

+0

첫 번째 링크가 깨졌습니다. '알 수없는 위치 : trunk/QMTest/TestSCons.py' – Sardathrion