2013-07-28 6 views
2

Я хотел бы automate git bisect (инструкции также доступны по адресу official Linux Kernel Git documenation for git bisect) для создания проекта .NET с помощью MSBuild и для запуска модульных тестов для него с nunit-console.exe. Тем не менее, эти средства были построены для использования в среде разработки Windows, и у меня возникают различные проблемы с получением их работы в среде Bash из msysgit, резюмировать следующим образом:Автоматизация git bisect для командных команд MSBuild/NUnit/.NET/Windows в msysgit?

  1. Bash не могу найти MSBuild.exe или nunit-console.exe (путь выпуск).
  2. Оба варианта MSBuild.exe и nunit-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, я избежал прямого косая черта с другой косой чертой (я получил этот совет из другого ответа на переполнение стека, я свяжусь с ним, когда найду его снова).

Так что теперь рабочий сценарий выглядит следующим образом:

#!/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

Просто для будущих читателей, многие мс инструменты будут распознавать, когда они находятся в a * nix-like shell и accept - вместо аргументов/for. Я знаю, что msbuild будет (например, '-verbosity: quiet'); не уверен в nunit. – danwyand

 Смежные вопросы

  • Нет связанных вопросов^_^