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