Hi

thanks for the info, Dave Cameron can give you write access to the list.
I do not know if he can grant you the access soon, he is a busy person :-)

But you may also make a txt version, and send that to the list, the other
devs can update the wiki also.


with kind regards
Ruben Willems

On Fri, Jan 15, 2010 at 11:38 AM, Rich Bradley <[email protected]> wrote:

> Hi,
>
> I struggled a bit with getting CruiseControl.NET to work with my
> Boost.Test C++ unit tests, so I'd like to add a page to the docs
> briefly explaining how to do it.
>
> It'll be very similar to the instructions at:
>
> http://confluence.public.thoughtworks.org/display/CCNET/Using+CruiseControl.NET+with+CppUnit
>
> I had hoped to just create a new page directly in the wiki. I've
> created a Confluence account, but I don't see any edit links. I guess
> I don't have permission.
>
> Would this be a useful addition? What's the best way of getting this
> added? Can someone give me write access to the wiki, or should I send
> a draft of the page to someone for inclusion?
>
> I've put a patch below showing how I did this -- I'm open to any
> suggestions or comments on whether this was the best way. In
> particular, is there any way to pass the results xml through a filter
> before the "<merge>" action to make it look like NUnit results, rather
> than editing the dashboard to understand the Boost.Test format?
>
> Thanks very much,
>
>
> Rich
>
>
>
> Index: CruiseControl.NET-config/webdashboard/xsl/unittests.xsl
> ===================================================================
> --- CruiseControl.NET-config/webdashboard/xsl/unittests.xsl     (revision
> 22212)
> +++ CruiseControl.NET-config/webdashboard/xsl/unittests.xsl     (revision
> 22213)
> @@ -4,6 +4,14 @@
>
>     <xsl:output method="html"/>
>
> +    <xsl:variable name="boosttest.result.list" select="//TestResult"/
> >
> +    <xsl:variable name="boosttest.suite.list"
> select="$boosttest.result.list//TestSuite"/>
> +    <xsl:variable name="boosttest.case.list"
> select="$boosttest.suite.list/TestCase"/>
> +    <xsl:variable name="boosttest.case.count" select="count
> ($boosttest.case.list)"/>
> +    <!-- no time yet <xsl:variable name="boosttest.time" select="sum
> ($nunit2.result.list/test-suite[position()=1]/@time)"/> -->
> +    <xsl:variable name="boosttest.failure.count" select="sum
> ($boosttest.suite.list/@test_cases_failed)"/>
> +    <xsl:variable name="boosttest.notrun.count" select="sum
> ($boosttest.suite.list/@test_cases_skipped)"/>
> +
>     <xsl:variable name="nunit2.result.list" select="//test-results"/>
>     <xsl:variable name="nunit2.suite.list"
> select="$nunit2.result.list//test-suite"/>
>     <xsl:variable name="nunit2.case.list" select="$nunit2.suite.list/
> results/test-case"/>
> @@ -24,9 +32,9 @@
>     <xsl:variable name="junit.error.count" select="count
> ($junit.error.list)"/>
>
>     <xsl:variable name="total.time" select="$nunit2.time +
> $junit.time"/>
> -    <xsl:variable name="total.notrun.count"
> select="$nunit2.notrun.count"/>
> -    <xsl:variable name="total.run.count" select="$nunit2.case.count +
> $junit.case.count - $total.notrun.count"/>
> -    <xsl:variable name="total.failure.count"
> select="$nunit2.failure.count + $junit.failure.count +
> $junit.error.count"/>
> +    <xsl:variable name="total.notrun.count"
> select="$nunit2.notrun.count + $boosttest.notrun.count"/>
> +    <xsl:variable name="total.run.count" select="$nunit2.case.count +
> $junit.case.count + $boosttest.case.count - $total.notrun.count"/>
> +    <xsl:variable name="total.failure.count"
> select="$nunit2.failure.count + $junit.failure.count +
> $boosttest.failure.count + $junit.error.count"/>
>
>     <xsl:template match="/">
>         <table class="section-table" cellpadding="2" cellspacing="0"
> border="0" width="98%">
> Index: CruiseControl.NET-config/server/ccnet.config
> ===================================================================
> --- CruiseControl.NET-config/server/ccnet.config        (revision 22212)
> +++ CruiseControl.NET-config/server/ccnet.config        (revision 22213)
> @@ -12,7 +12,13 @@
>     <modificationDelaySeconds>0</modificationDelaySeconds>
>     <name>$(project)</name>
>     <prebuild />
> -    <publishers>
> +    <publishers>
> +      <!-- merge in the results of the unit test -->
> +      <merge>
> +        <files>
> +          <file>Debug\results.xml</file>
> +        </files>
> +      </merge>
>       <xmllogger>
>         <logDir>c:\build-logs\$(project)</logDir>
>       </xmllogger>
> @@ -66,6 +72,12 @@
>         <project />
>         <solutionfile>XXX.sln</solutionfile>
>       </devenv>
> +      <!-- XXX unit tests -->
> +      <exec>
> +        <executable>XXXTests.exe</executable>
> +        <baseDirectory>Debug</baseDirectory>
> +        <buildArgs>--report_format=xml --report_level=detailed</
> buildArgs>
> +      </exec>
>     </tasks>
>     <triggers>
>       <intervalTrigger>
> Index: XXXTests/stdafx.h
> ===================================================================
> --- trunk/XXXTests/stdafx.h     (revision 22207)
> +++ trunk/XXXTests/stdafx.h     (revision 22208)
> @@ -9,9 +9,26 @@
>
>  #include <stdio.h>
>  #include <tchar.h>
> +#include <iostream>
>
>  #define BOOST_TEST_MODULE XXX Tests
>  #include <boost/test/unit_test.hpp>
> +#include <boost/test/results_reporter.hpp>
>
>  #define UNIT_TESTS
>  #define UNIT_TESTABLE
> +
> +#include <fstream>
> +
> +struct ReportRedirector
> +{
> +    std::ofstream out;
> +
> +    ReportRedirector() : out("results.xml")
> +    {
> +        assert( out.is_open() );
> +        boost::unit_test::results_reporter::set_stream(out);
> +    }
> +};
> +
> +static ReportRedirector r;
>

Reply via email to