Я хотел бы 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?
- Bash не могу найти
MSBuild.exe
илиnunit-console.exe
(путь выпуск). - Оба варианта
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."
Просто для будущих читателей, многие мс инструменты будут распознавать, когда они находятся в a * nix-like shell и accept - вместо аргументов/for. Я знаю, что msbuild будет (например, '-verbosity: quiet'); не уверен в nunit. – danwyand