Круиз-контроль, разбор "!" символ в файле NAnt - PullRequest
5 голосов
/ 04 октября 2011

У меня круиз-контроль настроен с задачей запустить скрипт NAnt, который запускает пакет MSTest.MSTest позволяет мне указывать категории тестов, поэтому я хочу указать «! Integration» (что означает «не запускать интеграционные тесты»).Мой скрипт Nant успешно запускается, когда я запускаю его из командной строки, но когда Cruise запускает его, директива «! Integration» искажается - вывод Cruise предполагает вставку переноса строки после «!»персонаж.В результате все мои тесты выполняются, включая интеграционные тесты.

Извлечение из ccnet.config:

<tasks>
  <nant>
    <executable>C:\nant\bin\nant.exe</executable>
    <baseDirectory>C:\MyProject\BuildDirectory</baseDirectory>
    <buildFile>MyProject.build</buildFile>
    <targetList>
       <target>CIServerBuild</target>  
    </targetList>
  </nant>
</tasks>

Извлечение из MyProject.build:

<target name="CIServerBuild">
      :
    <call target="RunUnitTests" />
</target>

<target name="RunUnitTests">
    <property name="TestCategories" value="!Integration" />
    <call target="RunMSTest"  failonerror="true"/>
</target>

<target name="RunMSTest">
    <call target="BuildListOfTestContainers"  failonerror="true"/>
    <exec program="${MSTest.exe}"
        commandline=" /category:&quot;${TestCategories}&quot; ${TestContainers} /resultsfile:${MSTest.ResultsFile} /nologo "
     />
</target>

Выписка из круизного выхода:

[exec] Starting 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe ( /category:"!
Integration" /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Data.Tests\bin\Debug\TaxWise.Data.Tests.dll /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Domain.Tests\bin\Debug\TaxWise.Domain.Tests.dll /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Infrastructure.Tests\bin\Debug\TaxWise.Infrastructure.Tests.dll /resultsfile:.\TestResults\UnitTests.trx /nologo )' 
in 'C:\TaxWise\BuildDirectory'

Я пытался заменить '!'персонаж с

'&#33;' 

, но это не имеет значения.

Есть идеи, кто-нибудь?

Ответы [ 2 ]

1 голос
/ 15 октября 2011

Я предлагаю разделить атрибут командной строки в задаче exec на элементы Nant arg.

http://nant.sourceforge.net/release/0.85/help/tasks/exec.html

У вас будет больше гибкости, и удобочитаемость увеличится.

0 голосов
/ 16 октября 2012

Да, возможно, это не вызвано CC.Попробуйте установить verbose="True" в задаче <exec> и проверьте протокол необработанной сборки.Помните, что то, что вы видите на странице отчета, не является точным выводом (как правило, это перенос строк и объединение пробелов).

Возможно, это зависит от того, где вы запускаете скрипт, скрытой зависимости от свойства сборки илиразные переменные среды.Вы можете проверить последнее, используя <exec program="cmd.exe" commandline="/c set" />.Для свойств вы можете использовать следующий скрипт:

 <script language="C#" prefix="util" verbose="true">
    <code>
        <![CDATA[
        public static void ScriptMain(Project project) 
        {
            foreach (DictionaryEntry entry in new System.Collections.SortedList(project.Properties) ) 
                Console.WriteLine("{0}={1}", entry.Key, entry.Value); 
        }
        ]]>
    </code>
  </script>
...