【问题标题】:Cruise Control parsing "!" character in NAnt file巡航控制解析“!” NAnt 文件中的字符
【发布时间】:2011-10-04 09:40:07
【问题描述】:

我为 Cruise Control 配置了一个任务来运行一个运行 MSTest 套件的 NAnt 脚本。 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>

从 Cruise 输出中提取:

[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;' 

但这没什么区别。

有什么想法吗?

【问题讨论】:

    标签: cruisecontrol.net mstest nant


    【解决方案1】:

    我建议将 exec 任务中的命令行属性拆分为 Nant arg 元素。

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

    您将拥有更大的灵活性,并且可读性会增加。

    【讨论】:

      【解决方案2】:

      是的,也许不是 CC 造成的。尝试在 &lt;exec&gt; 任务上设置 verbose="True" 并检查原始构建协议。请记住,您在报告页面上看到的并不是确切的输出(通常受换行和合并空格的影响)。

      这可能取决于您运行脚本的位置、对构建属性的隐藏依赖或不同的环境变量。您可以使用&lt;exec program="cmd.exe" commandline="/c set" /&gt; 检查后者。对于属性,您可以使用以下脚本:

       <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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        • 1970-01-01
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多