巡航控制解析“!” NAnt 文件中的字符

发布于 2024-12-08 14:00:18 字数 1937 浏览 0 评论 0原文

我为 Cruise Control 配置了一项运行 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>

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

没有什么区别。

有什么想法吗?

I have Cruise Control configured with a task to run a NAnt script, which runs an MSTest suite. MSTest allows me to specify test categories so I want to specify "!Integration" (which means "don't run Integration tests"). My Nant script successfully runs when I run it from the command line, but when Cruise runs it, the "!Integration" directive is being garbled -- the Cruise output suggests its inserting a line break after the '!' character. The result is that all my tests run, including integration tests.

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

Extract from 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:"${TestCategories}" ${TestContainers} /resultsfile:${MSTest.ResultsFile} /nologo "
     />
</target>

Extract from Cruise output:

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

I have tried replacing the '!' character with

'!' 

but that made no difference.

Any ideas, anyone?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半衬遮猫 2024-12-15 14:00:18

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

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

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

I suggest splitting the commandline attribute in the exec task into Nant arg elements.

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

You'll have more flexibility and the readability will increase.

海螺姑娘 2024-12-15 14:00:18

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

也许这取决于您运行脚本的位置、对构建属性或不同环境变量的隐藏依赖项。您可以使用 检查后者。对于属性,您可以使用以下脚本:

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

Yes, perhaps it is not caused by CC. Try setting verbose="True" on the <exec> task and check the raw build protocol. Remember what you see on the report page is not the exact output (typically subject to line-wrap and coalescing whitespaces).

Maybe it depends on from where you run the script, a hidden dependency on a build property or different environment variables. You can check the latter using <exec program="cmd.exe" commandline="/c set" />. For the properties you can use the following script:

 <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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文