2013-07-28 2 views
2

MSBuild이있는 .NET 프로젝트를 빌드하고 nunit-console.exe을 사용하여 단위 테스트를 실행하려면 automate git bisect (지침은 official Linux Kernel Git documenation for git bisect에서 사용 가능)을 원합니다. 그러나 이러한 도구는 Windows 개발 환경에서 사용하기 위해 만들어진, 그리고 내가 같이 요약 msysgit의 배쉬 환경에서 작동하도록하는 방법으로 여러 가지 문제가있어 다음과msysgit의 MSBuild/NUnit/.NET/Windows 배치 명령에 대해 자동 양분을 자동화 하시겠습니까?

    배쉬는 찾을 수가 없습니다
  1. MSBuild.exe 또는 nunit-console.exe (경로 문제)
  2. MSBuild.exenunit-console.exe 모두 Windows 스타일 명령 행 옵션 플래그를 사용합니다. 즉, 슬래시로 시작합니다. MSBuild.exe /M. Bash에서는 슬래시가 Unix/Linux/* nix 시스템이 디렉토리 경로를 나타내는 데 사용하기 때문에 슬래시가 오류를 발생시킵니다.

이은 내가 사용했던 git bisect 명령입니다

$ git bisect start <bad commit> <good commit> 
$ git bisect run auto-build-run-tests.sh 

이들은 auto-build-run-tests.sh의 내용은 다음과 같습니다

#!/bin/sh 
# http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html 
# http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html 

# Build solution. 
echo "Building..." 

MSBuild.exe \ 
    /consoleloggerparameters:ErrorsOnly \ 
    /maxcpucount \ 
    /nologo \ 
    /property:Configuration=Debug \ 
    /verbosity:quiet \ 
    "Epic-Project-of-Supreme-Awesome.sln" 

# Check exit status. 
# (status != 0) ? 
status=$? 
if [ $status -ne 0 ] 
    then 
     echo "Build failure, status $status." 
     exit $status 
fi 

echo "Build success." 

# Run unit tests 
nunit-console.exe \ 
    /noresult \ 
    /stoponerror \ 
    "bin/Debug/ArtificialIntelligence.Tests.dll" \ 
    "bin/Debug/TravelingSalesManSolver.Tests.dll" 

status=$? 
if [ $status -ne 0 ] 
    then 
     echo "Test failure, status $status." 
     exit $status 
fi 

echo "Tests passed." 

답변

4

경로 문제를 해결하려면, 단순히 절대 사용 스크립트의 경로. Windows 스타일의 슬래시 명령 행 옵션 문제를 해결하기 위해 슬래시 (슬래시)를 다른 슬래시로 이스케이프 처리했습니다. 스택 오버플로 (Stack Overflow) 응답에서 팁을 얻었습니다. 다시 찾으면 링크 할 것입니다.

은 이제 작업 스크립트는 다음과 같습니다 다시 한 번

#!/bin/sh 
# http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html 
# http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html 

# Build solution. 
echo "Building..." 

c:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe \ 
    //consoleloggerparameters:ErrorsOnly \ 
    //maxcpucount \ 
    //nologo \ 
    //property:Configuration=Debug \ 
    //verbosity:quiet \ 
    Epic-Project-of-Supreme-Awesome.sln 

# Check exit status. 
# (status != 0) ? 
status=$? 
if [ $status -ne 0 ] 
    then 
     echo "Build failure, status $status." 
     exit $status 
fi 

echo "Build success." 

# Run unit tests 
nunit-console.exe \ 
    //noresult \ 
    //stoponerror \ 
    bin/Debug/ArtificialIntelligence.Tests.dll \ 
    bin/Debug/TravelingSalesManSolver.Tests.dll 

status=$? 
if [ $status -ne 0 ] 
    then 
     echo "Test failure, status $status." 
     exit $status 
fi 

echo "Tests passed." 

, 당신은 다음과 같이 실행 : 그들이에있을 때

$ git bisect start <bad commit> <good commit> 
$ git bisect run auto-build-run-tests.sh 
+0

그냥 미래의 독자를 위해, 많은 MS 도구가 인식 * nix-like 쉘 및 accept - 대신/for 인수. msbuild가 실행된다는 것을 알고 있습니다 (예 :'-verbosity : quiet'); nunit에 대해 확실하지 않습니다. – danwyand